diff --git a/go.mod b/go.mod index a53a87b8f65..dc38d911bf6 100644 --- a/go.mod +++ b/go.mod @@ -6,22 +6,22 @@ go 1.26.4 replace github.com/ceph/ceph-csi/api => ./api require ( - github.com/Azure/azure-sdk-for-go/sdk/azidentity v1.14.0 + github.com/Azure/azure-sdk-for-go/sdk/azidentity v1.14.1 github.com/Azure/azure-sdk-for-go/sdk/security/keyvault/azsecrets v1.5.0 github.com/IBM/keyprotect-go-client v0.17.3 github.com/avast/retry-go/v4 v4.7.0 github.com/aws/aws-sdk-go v1.55.8 - github.com/aws/aws-sdk-go-v2/service/sts v1.45.6 + github.com/aws/aws-sdk-go-v2/service/sts v1.50.0 github.com/ceph/ceph-csi/api v0.0.0-00010101000000-000000000000 github.com/ceph/ceph-nvmeof/lib/go/nvmeof v0.0.0-20260706125253-734ddd0a44b2 github.com/ceph/go-ceph v0.41.0 - github.com/container-storage-interface/spec v1.12.0 - github.com/csi-addons/kubernetes-csi-addons v0.14.0 + github.com/container-storage-interface/spec v1.13.0 + github.com/csi-addons/kubernetes-csi-addons v0.15.0 github.com/csi-addons/spec v0.2.1-0.20260515055340-d4a373713b9a github.com/gemalto/kmip-go v0.1.0 github.com/ghodss/yaml v1.0.1-0.20190212211648-25d852aebe32 github.com/golang/protobuf v1.5.4 - github.com/google/fscrypt v0.3.6 + github.com/google/fscrypt v0.3.7 github.com/google/uuid v1.6.0 github.com/grpc-ecosystem/go-grpc-middleware v1.4.0 github.com/hashicorp/vault/api v1.23.0 @@ -29,7 +29,7 @@ require ( github.com/libopenstorage/secrets v0.0.0-20231011182615-5f4b25ceede1 github.com/pkg/xattr v0.4.12 github.com/prometheus/client_golang v1.24.1 - github.com/stretchr/testify v1.12.0 + github.com/stretchr/testify v1.12.1 go.uber.org/automaxprocs v1.6.0 golang.org/x/crypto v0.55.0 golang.org/x/sys v0.47.0 @@ -65,19 +65,19 @@ exclude ( require ( cyphar.com/go-pathrs v0.2.2 // indirect - github.com/Azure/azure-sdk-for-go/sdk/azcore v1.22.0 // indirect + github.com/Azure/azure-sdk-for-go/sdk/azcore v1.23.1 // indirect github.com/Azure/azure-sdk-for-go/sdk/internal v1.12.0 // indirect github.com/Azure/azure-sdk-for-go/sdk/security/keyvault/internal v1.2.0 // indirect - github.com/AzureAD/microsoft-authentication-library-for-go v1.7.2 // indirect + github.com/AzureAD/microsoft-authentication-library-for-go v1.8.0 // indirect github.com/ansel1/merry v1.8.1 // indirect github.com/ansel1/merry/v2 v2.2.2 // indirect - github.com/aws/aws-sdk-go-v2 v1.43.6 // indirect - github.com/aws/aws-sdk-go-v2/internal/configsources v1.4.37 // indirect - github.com/aws/aws-sdk-go-v2/internal/endpoints/v2 v2.7.37 // indirect - github.com/aws/aws-sdk-go-v2/internal/v4a v1.4.38 // indirect - github.com/aws/aws-sdk-go-v2/service/internal/accept-encoding v1.13.17 // indirect - github.com/aws/aws-sdk-go-v2/service/internal/presigned-url v1.13.37 // indirect - github.com/aws/smithy-go v1.27.8 // indirect + github.com/aws/aws-sdk-go-v2 v1.47.0 // indirect + github.com/aws/aws-sdk-go-v2/internal/configsources v1.5.3 // indirect + github.com/aws/aws-sdk-go-v2/internal/endpoints/v2 v2.8.3 // indirect + github.com/aws/aws-sdk-go-v2/internal/v4a v1.5.3 // indirect + github.com/aws/aws-sdk-go-v2/service/internal/accept-encoding v1.13.19 // indirect + github.com/aws/aws-sdk-go-v2/service/internal/presigned-url v1.14.3 // indirect + github.com/aws/smithy-go v1.28.1 // indirect github.com/beorn7/perks v1.0.1 // indirect github.com/blang/semver/v4 v4.0.0 // indirect github.com/cenkalti/backoff/v4 v4.3.0 // indirect @@ -90,7 +90,7 @@ require ( github.com/fxamacker/cbor/v2 v2.9.0 // indirect github.com/gemalto/flume v1.0.0 // indirect github.com/go-jose/go-jose/v4 v4.1.4 // indirect - github.com/go-logr/logr v1.4.3 // indirect + github.com/go-logr/logr v1.4.4 // indirect github.com/go-logr/stdr v1.2.2 // indirect github.com/go-openapi/jsonpointer v0.21.0 // indirect github.com/go-openapi/jsonreference v0.21.0 // indirect @@ -141,9 +141,9 @@ require ( go.opentelemetry.io/otel/metric v1.44.0 // indirect go.opentelemetry.io/otel/trace v1.44.0 // indirect go.uber.org/multierr v1.11.0 // indirect - go.uber.org/zap v1.27.1 // indirect + go.uber.org/zap v1.28.0 // indirect go.yaml.in/yaml/v2 v2.4.4 // indirect - go.yaml.in/yaml/v3 v3.0.4 // indirect + go.yaml.in/yaml/v3 v3.0.5 // indirect golang.org/x/net v0.58.0 // indirect golang.org/x/oauth2 v0.36.0 // indirect golang.org/x/sync v0.22.0 // indirect diff --git a/go.sum b/go.sum index 33f17f224f0..d12a81047b3 100644 --- a/go.sum +++ b/go.sum @@ -395,10 +395,10 @@ cyphar.com/go-pathrs v0.2.2/go.mod h1:y8f1EMG7r+hCuFf/rXsKqMJrJAUoADZGNh5/vZPKcG dmitri.shuralyov.com/gpu/mtl v0.0.0-20190408044501-666a987793e9/go.mod h1:H6x//7gZCb22OMCxBHrMx7a5I7Hp++hsVxbQ4BYO7hU= github.com/Azure/azure-sdk-for-go v62.0.0+incompatible h1:8N2k27SYtc12qj5nTsuFMFJPZn5CGmgMWqTy4y9I7Jw= github.com/Azure/azure-sdk-for-go v62.0.0+incompatible/go.mod h1:9XXNKU+eRnpl9moKnB4QOLf1HestfXbmab5FXxiDBjc= -github.com/Azure/azure-sdk-for-go/sdk/azcore v1.22.0 h1:aokoqcHvaGjiM3VpjKDfMMnF/8epJ+Q1HLJ7CudztqE= -github.com/Azure/azure-sdk-for-go/sdk/azcore v1.22.0/go.mod h1:/WYEx9pcM9Y+Dd/APJaNlSvVSvzl54rrMdZT5+Oi2LM= -github.com/Azure/azure-sdk-for-go/sdk/azidentity v1.14.0 h1:CU4+EJeJi3TKYWEcYuSdWsjzw0nVsK/H0MSQOiPcymU= -github.com/Azure/azure-sdk-for-go/sdk/azidentity v1.14.0/go.mod h1:q0+UTSRvShwUCrR/s5HtyInYphN7Wvxb7snFM3u+SLA= +github.com/Azure/azure-sdk-for-go/sdk/azcore v1.23.1 h1:zvXfGJCWvywnCA814d8ZiVyt+fm9nnTE8xSb99zRyfo= +github.com/Azure/azure-sdk-for-go/sdk/azcore v1.23.1/go.mod h1:iptorS+VYKFL2N6PnebpS91dubG35eAOEERnT4PJbQU= +github.com/Azure/azure-sdk-for-go/sdk/azidentity v1.14.1 h1:u93s+zU2JD62im61Bm5CZIc1ZrOJaIAWEg0WOrMVkEo= +github.com/Azure/azure-sdk-for-go/sdk/azidentity v1.14.1/go.mod h1:oXtinPO4OLj9d1DOTrqrL1oRwGhcqadvAmrl6wTeGlk= github.com/Azure/azure-sdk-for-go/sdk/azidentity/cache v0.4.0 h1:xFaZZ+IubdftrDHnGGwZ6QvQ3KHTtWl2MCK+GMt2vxs= github.com/Azure/azure-sdk-for-go/sdk/azidentity/cache v0.4.0/go.mod h1:mCBhUhlMjLLJKr5aqw2TNS/VqJOie8MzWq3DAMJeKso= github.com/Azure/azure-sdk-for-go/sdk/internal v1.12.0 h1:fhqpLE3UEXi9lPaBRpQ6XuRW0nU7hgg4zlmZZa+a9q4= @@ -420,8 +420,8 @@ github.com/Azure/go-autorest/logger v0.2.1/go.mod h1:T9E3cAhj2VqvPOtCYAvby9aBXkZ github.com/Azure/go-autorest/tracing v0.6.0/go.mod h1:+vhtPC754Xsa23ID7GlGsrdKBpUA79WCAKPPZVC2DeU= github.com/AzureAD/microsoft-authentication-extensions-for-go/cache v0.1.1 h1:WJTmL004Abzc5wDB5VtZG2PJk5ndYDgVacGqfirKxjM= github.com/AzureAD/microsoft-authentication-extensions-for-go/cache v0.1.1/go.mod h1:tCcJZ0uHAmvjsVYzEFivsRTN00oz5BEsRgQHu5JZ9WE= -github.com/AzureAD/microsoft-authentication-library-for-go v1.7.2 h1:RHK7bS+HQMslb1sZpAokUt+zTVmue0hKSs2C791hhzU= -github.com/AzureAD/microsoft-authentication-library-for-go v1.7.2/go.mod h1:HKpQxkWaGLJ+D/5H8QRpyQXA1eKjxkFlOMwck5+33Jk= +github.com/AzureAD/microsoft-authentication-library-for-go v1.8.0 h1:Nljr4q1GRA/5vCrMONS+g4u4LRHNgOXVSh3O43J2CnI= +github.com/AzureAD/microsoft-authentication-library-for-go v1.8.0/go.mod h1:Y33QHnf0FfdVewFFISOGe20mkZbxX4H839o955/PoeI= github.com/BurntSushi/toml v0.3.1/go.mod h1:xHWCNGjB5oqiDr8zfno3MHue2Ht5sIBksp03qcyfWMU= github.com/BurntSushi/xgb v0.0.0-20160522181843-27f122750802/go.mod h1:IVnqGOEym/WlBOVXweHU+Q+/VP0lqqI8lqeDx9IjBqo= github.com/IBM/keyprotect-go-client v0.5.1/go.mod h1:5TwDM/4FRJq1ZOlwQL1xFahLWQ3TveR88VmL1u3njyI= @@ -453,22 +453,22 @@ github.com/avast/retry-go/v4 v4.7.0/go.mod h1:ZMPDa3sY2bKgpLtap9JRUgk2yTAba7cgiF github.com/aws/aws-sdk-go v1.44.164/go.mod h1:aVsgQcEevwlmQ7qHE9I3h+dtQgpqhFB+i8Phjh7fkwI= github.com/aws/aws-sdk-go v1.55.8 h1:JRmEUbU52aJQZ2AjX4q4Wu7t4uZjOu71uyNmaWlUkJQ= github.com/aws/aws-sdk-go v1.55.8/go.mod h1:ZkViS9AqA6otK+JBBNH2++sx1sgxrPKcSzPPvQkUtXk= -github.com/aws/aws-sdk-go-v2 v1.43.6 h1:RrmFcqCBxkJuf7g1axVo5krB4jM/AO8r5e5oujrgdoQ= -github.com/aws/aws-sdk-go-v2 v1.43.6/go.mod h1:tXpPM+v0D1lndmga+HqqLDIzUFJlEeR21aspVklHF00= -github.com/aws/aws-sdk-go-v2/internal/configsources v1.4.37 h1:lznzIOvvbqjfe8UAaciCRJgBgJsxuTROKlhZuXQWfv8= -github.com/aws/aws-sdk-go-v2/internal/configsources v1.4.37/go.mod h1:otfkzyfQeMMLZAqX59GSXTL3o22BR/l6HFaRzzbWSqA= -github.com/aws/aws-sdk-go-v2/internal/endpoints/v2 v2.7.37 h1:zCEORWo0eU0gDjG+IyApE/2B+ZGG1m+GU7B263XV8ds= -github.com/aws/aws-sdk-go-v2/internal/endpoints/v2 v2.7.37/go.mod h1:i6c0PEl3TNOWxRbQ++KQcVenPWS/GoQeiklKhNuqzJ8= -github.com/aws/aws-sdk-go-v2/internal/v4a v1.4.38 h1:A3UAuCmx7LyUcrixBTzKJYYIUZ2yTvn6ZhT8PB+7APk= -github.com/aws/aws-sdk-go-v2/internal/v4a v1.4.38/go.mod h1:1PDUYG9Z+JrbbsobsAZHjWOm9QBT/djiK3QbykTL5Z4= -github.com/aws/aws-sdk-go-v2/service/internal/accept-encoding v1.13.17 h1:OvYZOB3qA6zvfdRFiRFRzVSiElMYrz3GdntkXZxlp1o= -github.com/aws/aws-sdk-go-v2/service/internal/accept-encoding v1.13.17/go.mod h1:JgR/2Ew50ACfIWau1oeMRX59tMtC0kM+PYQGEaT04cY= -github.com/aws/aws-sdk-go-v2/service/internal/presigned-url v1.13.37 h1:a3D4AjrOrTrP8+d9ILBthqrElf0z1JNol09Xvnwcys8= -github.com/aws/aws-sdk-go-v2/service/internal/presigned-url v1.13.37/go.mod h1:ky0gTu+ukvUTuUKFIpp6Wid4oninrkCyvbFkVs0kpHM= -github.com/aws/aws-sdk-go-v2/service/sts v1.45.6 h1:JvExZWabChDM0qJAirQYGfOYo0ndT3edXj+fqSPNjkE= -github.com/aws/aws-sdk-go-v2/service/sts v1.45.6/go.mod h1:XZcaQkV2cItp6yEkrwljyaPOf22RuX7T43jxap/FOmM= -github.com/aws/smithy-go v1.27.8 h1:FR0dxZfIlV7Z8eh2iHfIofdunw382XsDV3Mxt9nUvRY= -github.com/aws/smithy-go v1.27.8/go.mod h1:YE2RhdIuDbA5E5bTdciG9KrW3+TiEONeUWCqxX9i1Fc= +github.com/aws/aws-sdk-go-v2 v1.47.0 h1:0jsHallhJCeaU0Ko48c/3FK1ctOQ7NpzggxriJOQ8MQ= +github.com/aws/aws-sdk-go-v2 v1.47.0/go.mod h1:bttEH6JqnUL8LepvDVfdrds/fZ5bCIxzpe3abyUrhDU= +github.com/aws/aws-sdk-go-v2/internal/configsources v1.5.3 h1:Hp/VgjP0BysR3OgLlR057Vz2LcbbVnoWeJ+3qWiS/fY= +github.com/aws/aws-sdk-go-v2/internal/configsources v1.5.3/go.mod h1:nwGV5qw7F1IZPgxCvA/ph8N2TAuz+BkRG/bXn808qMA= +github.com/aws/aws-sdk-go-v2/internal/endpoints/v2 v2.8.3 h1:MUaM4f+kj1ZIBPZfUS8cxP1GKXXZtHJjAthy93AN7SM= +github.com/aws/aws-sdk-go-v2/internal/endpoints/v2 v2.8.3/go.mod h1:6YmVmEVRI5ZZzRjCSsb9SryKH0hAlMRdgA7kG9aDvBU= +github.com/aws/aws-sdk-go-v2/internal/v4a v1.5.3 h1:fuSCw4Z2qfRCztMPO3GXJNSiEp6Wee+WOLwrHHUMy9c= +github.com/aws/aws-sdk-go-v2/internal/v4a v1.5.3/go.mod h1:6SxcHheD1pPR5+kWm1wGvjlL/YqUsh267sAfEmN4K7A= +github.com/aws/aws-sdk-go-v2/service/internal/accept-encoding v1.13.19 h1:bAdDl/HkGCcGPoe25ToSHEw23VIxt6CT5fLcg111BKg= +github.com/aws/aws-sdk-go-v2/service/internal/accept-encoding v1.13.19/go.mod h1:KaUzbLxv4CeSxh6ZCl9B4m7CuFenS8kUEaDs+f/DQr4= +github.com/aws/aws-sdk-go-v2/service/internal/presigned-url v1.14.3 h1:bON1rJf67TSTDCKg816AAIE4xSTtoo9tl0XRkO72R+I= +github.com/aws/aws-sdk-go-v2/service/internal/presigned-url v1.14.3/go.mod h1:c5BBpjJcQXpfeq9iASyVKA3T6vX6B6LEXY4mL/gklDY= +github.com/aws/aws-sdk-go-v2/service/sts v1.50.0 h1:khXV3+K5D3f4e8xtplaRdSFn1bEg3gj5EBHQvbCOZbQ= +github.com/aws/aws-sdk-go-v2/service/sts v1.50.0/go.mod h1:/8JRcdTt//hG0Q4BTmGbuOplT7ABe+5rdtqUHqXvYIM= +github.com/aws/smithy-go v1.28.1 h1:R/nXH00c8qcfCzQVELtRw+eLQWtzv+VAIEFJ1/xxXlQ= +github.com/aws/smithy-go v1.28.1/go.mod h1:YE2RhdIuDbA5E5bTdciG9KrW3+TiEONeUWCqxX9i1Fc= github.com/benbjohnson/clock v1.1.0/go.mod h1:J11/hYXuz8f4ySSvYwY0FKfm+ezbsZBKZxNJlLklBHA= github.com/beorn7/perks v1.0.1 h1:VlbKKnNfV8bJzeqoa4cOKqO6bYr3WgKZxO8Z16+hsOM= github.com/beorn7/perks v1.0.1/go.mod h1:G2ZrVWU2WbWT9wwq4/hrbKbnv/1ERSJQ0ibhJ6rlkpw= @@ -508,11 +508,11 @@ github.com/cncf/xds/go v0.0.0-20211001041855-01bcc9b48dfe/go.mod h1:eXthEFrGJvWH github.com/cncf/xds/go v0.0.0-20211011173535-cb28da3451f1/go.mod h1:eXthEFrGJvWHgFFCl3hGmgk+/aYT6PnTQLykKQRLhEs= github.com/cncf/xds/go v0.0.0-20220314180256-7f1daf1720fc/go.mod h1:eXthEFrGJvWHgFFCl3hGmgk+/aYT6PnTQLykKQRLhEs= github.com/cncf/xds/go v0.0.0-20230105202645-06c439db220b/go.mod h1:eXthEFrGJvWHgFFCl3hGmgk+/aYT6PnTQLykKQRLhEs= -github.com/container-storage-interface/spec v1.12.0 h1:zrFOEqpR5AghNaaDG4qyedwPBqU2fU0dWjLQMP/azK0= -github.com/container-storage-interface/spec v1.12.0/go.mod h1:txsm+MA2B2WDa5kW69jNbqPnvTtfvZma7T/zsAZ9qX8= +github.com/container-storage-interface/spec v1.13.0 h1:6ja3nYoACisewTPAAZkJ1pbf4+1ehhvt9Z/nYgWGHGw= +github.com/container-storage-interface/spec v1.13.0/go.mod h1:fPZ7EFHYJwIwc9CMcoaT/yIhFTdToocYVtyafMG7EDM= github.com/creack/pty v1.1.9/go.mod h1:oKZEueFk5CKHvIhNR5MUki03XCEU+Q6VDXinZuGJ33E= -github.com/csi-addons/kubernetes-csi-addons v0.14.0 h1:aH4w1X9z6eOqbKvh9Q4M0YzksaUgQDU3aTU/fblG4yI= -github.com/csi-addons/kubernetes-csi-addons v0.14.0/go.mod h1:jG5S4Txts6WHt8QmyfpIXB00HYPpawWPcyViW+Xppgc= +github.com/csi-addons/kubernetes-csi-addons v0.15.0 h1:IoQ6jgeFJd5GjCjRv97mB8pOefGBXWEAAZgxXFoKKcI= +github.com/csi-addons/kubernetes-csi-addons v0.15.0/go.mod h1:P6GHxy2nEap5h4GyEqDtq2uYFisJ41Ur3WfoVRQLA8Y= github.com/csi-addons/spec v0.2.1-0.20260515055340-d4a373713b9a h1:AxvSsTN8TxwpeP6X/ScNK5i+6eXu3APRfuIXSEMENVQ= github.com/csi-addons/spec v0.2.1-0.20260515055340-d4a373713b9a/go.mod h1:Mwq4iLiUV4s+K1bszcWU6aMsR5KPsbIYzzszJ6+56vI= github.com/cyphar/filepath-securejoin v0.6.1 h1:5CeZ1jPXEiYt3+Z6zqprSAgSWiggmpVyciv8syjIpVE= @@ -581,8 +581,9 @@ github.com/go-logr/logr v1.2.2/go.mod h1:jdQByPbusPIv2/zmleS9BjJVeZ6kBagPoEUsqbV github.com/go-logr/logr v1.2.3/go.mod h1:jdQByPbusPIv2/zmleS9BjJVeZ6kBagPoEUsqbVz/1A= github.com/go-logr/logr v1.4.1/go.mod h1:9T104GzyrTigFIr8wt5mBrctHMim0Nb2HLGrmQ40KvY= github.com/go-logr/logr v1.4.2/go.mod h1:9T104GzyrTigFIr8wt5mBrctHMim0Nb2HLGrmQ40KvY= -github.com/go-logr/logr v1.4.3 h1:CjnDlHq8ikf6E492q6eKboGOC0T8CDaOvkHCIg8idEI= github.com/go-logr/logr v1.4.3/go.mod h1:9T104GzyrTigFIr8wt5mBrctHMim0Nb2HLGrmQ40KvY= +github.com/go-logr/logr v1.4.4 h1:tG4xh9yMsRCAiodLVTxyrkzSZ9+o0L1Kg/+cPVcbP/8= +github.com/go-logr/logr v1.4.4/go.mod h1:9T104GzyrTigFIr8wt5mBrctHMim0Nb2HLGrmQ40KvY= github.com/go-logr/stdr v1.2.2 h1:hSWxHoqTgW2S2qGc0LTAI563KZ5YKYRhT3MFKZMbjag= github.com/go-logr/stdr v1.2.2/go.mod h1:mMo/vtBO5dYbehREoey6XUKy/eSumjCCveDpRre4VKE= github.com/go-logr/zapr v1.3.0 h1:XGdV8XW8zdwFiwOA2Dryh1gj2KRQyOOoNmBy4EplIcQ= @@ -657,8 +658,8 @@ github.com/golang/snappy v0.0.3/go.mod h1:/XxbfmMg8lxefKM7IXC3fBNl/7bRcc72aCRzEW github.com/google/btree v0.0.0-20180813153112-4030bb1f1f0c/go.mod h1:lNA+9X1NB3Zf8V7Ke586lFgjr2dZNuvo3lPJSGZ5JPQ= github.com/google/btree v1.0.0/go.mod h1:lNA+9X1NB3Zf8V7Ke586lFgjr2dZNuvo3lPJSGZ5JPQ= github.com/google/btree v1.1.3/go.mod h1:qOPhT0dTNdNzV6Z/lhRX0YXUafgPLFUh+gZMl761Gm4= -github.com/google/fscrypt v0.3.6 h1:ojIVPwQBahAf1ilHMlyavPUBONIMn8YXQ//3VOl5h18= -github.com/google/fscrypt v0.3.6/go.mod h1:vNr81+TdJMn1hNFEKvm1GlqPkSjhsHW6UQeI7ceweEk= +github.com/google/fscrypt v0.3.7 h1:rQF5VbWVQPj8ZHsb7G/4gkQZDPRCKZ4++YVNk2KK5xE= +github.com/google/fscrypt v0.3.7/go.mod h1:SXGSKQ9qNuj0tExXha8KQZsgo/YTtx9wujXqIcqEA7M= github.com/google/gnostic v0.5.7-v3refs/go.mod h1:73MKFl6jIHelAJNaBGFzt3SPtZULs9dYrGFt8OiIsHQ= github.com/google/gnostic-models v0.7.0 h1:qwTtogB15McXDaNqTZdzPJRHvaVJlAl+HVQnLmJEJxo= github.com/google/gnostic-models v0.7.0/go.mod h1:whL5G0m6dmc5cPxKc5bdKdEN3UjI7OUGxBlw57miDrQ= @@ -704,8 +705,8 @@ github.com/google/pprof v0.0.0-20210407192527-94a9f03dee38/go.mod h1:kpwsk12EmLe github.com/google/pprof v0.0.0-20210601050228-01bbb1931b22/go.mod h1:kpwsk12EmLew5upagYY7GY0pfYCcupk39gWOCRROcvE= github.com/google/pprof v0.0.0-20210609004039-a478d1d731e9/go.mod h1:kpwsk12EmLew5upagYY7GY0pfYCcupk39gWOCRROcvE= github.com/google/pprof v0.0.0-20210720184732-4bb14d4b1be1/go.mod h1:kpwsk12EmLew5upagYY7GY0pfYCcupk39gWOCRROcvE= -github.com/google/pprof v0.0.0-20260115054156-294ebfa9ad83 h1:z2ogiKUYzX5Is6zr/vP9vJGqPwcdqsWjOt+V8J7+bTc= -github.com/google/pprof v0.0.0-20260115054156-294ebfa9ad83/go.mod h1:MxpfABSjhmINe3F1It9d+8exIHFvUqtLIRCdOGNXqiI= +github.com/google/pprof v0.0.0-20260402051712-545e8a4df936 h1:EwtI+Al+DeppwYX2oXJCETMO23COyaKGP6fHVpkpWpg= +github.com/google/pprof v0.0.0-20260402051712-545e8a4df936/go.mod h1:MxpfABSjhmINe3F1It9d+8exIHFvUqtLIRCdOGNXqiI= github.com/google/renameio v0.1.0/go.mod h1:KWCgfxg9yswjAJkECMjeO8J8rahYeXnNhOm40UhjYkI= github.com/google/uuid v1.0.0/go.mod h1:TIyPZe4MgqvfeYDBFedMoGGpEw/LqOeaOT+nhxU+yHo= github.com/google/uuid v1.1.1/go.mod h1:TIyPZe4MgqvfeYDBFedMoGGpEw/LqOeaOT+nhxU+yHo= @@ -883,8 +884,8 @@ github.com/onsi/ginkgo/v2 v2.3.0/go.mod h1:Eew0uilEqZmIEZr8JrvYlvOM7Rr6xzTmMV8Ay github.com/onsi/ginkgo/v2 v2.4.0/go.mod h1:iHkDK1fKGcBoEHT5W7YBq4RFWaQulw+caOMkAt4OrFo= github.com/onsi/ginkgo/v2 v2.5.0/go.mod h1:Luc4sArBICYCS8THh8v3i3i5CuSZO+RaQRaJoeNwomw= github.com/onsi/ginkgo/v2 v2.6.0/go.mod h1:63DOGlLAH8+REH8jUGdL3YpCpu7JODesutUjdENfUAc= -github.com/onsi/ginkgo/v2 v2.28.1 h1:S4hj+HbZp40fNKuLUQOYLDgZLwNUVn19N3Atb98NCyI= -github.com/onsi/ginkgo/v2 v2.28.1/go.mod h1:CLtbVInNckU3/+gC8LzkGUb9oF+e8W8TdUsxPwvdOgE= +github.com/onsi/ginkgo/v2 v2.32.0 h1:Hw7s2pVrQo/8Yz5N77qdnpHaoc+c6cC9WIV1Jce+J6E= +github.com/onsi/ginkgo/v2 v2.32.0/go.mod h1:+aXOY+vzZ5mu2iI2HpTZUPmM//oQfsNFX6gU9kNcA44= github.com/onsi/gomega v1.7.1/go.mod h1:XdKZgCCFLUoM/7CFJVPcG8C1xQ1AJ0vpAezJrB7JYyY= github.com/onsi/gomega v1.10.1/go.mod h1:iN09h71vgCQne3DLsj+A5owkum+a2tYe+TOCB1ybHNo= github.com/onsi/gomega v1.17.0/go.mod h1:HnhC7FXeEQY45zxNK3PPoIUhzk/80Xly9PcubAlGdZY= @@ -895,8 +896,8 @@ github.com/onsi/gomega v1.22.1/go.mod h1:x6n7VNe4hw0vkyYUM4mjIXx3JbLiPaBPNgB7PRQ github.com/onsi/gomega v1.23.0/go.mod h1:Z/NWtiqwBrwUt4/2loMmHL63EDLnYHmVbuBpDr2vQAg= github.com/onsi/gomega v1.24.0/go.mod h1:Z/NWtiqwBrwUt4/2loMmHL63EDLnYHmVbuBpDr2vQAg= github.com/onsi/gomega v1.24.1/go.mod h1:3AOiACssS3/MajrniINInwbfOOtfZvplPzuRSmvt1jM= -github.com/onsi/gomega v1.39.1 h1:1IJLAad4zjPn2PsnhH70V4DKRFlrCzGBNrNaru+Vf28= -github.com/onsi/gomega v1.39.1/go.mod h1:hL6yVALoTOxeWudERyfppUcZXjMwIMLnuSfruD2lcfg= +github.com/onsi/gomega v1.42.1 h1:iN1rCUX+44NZ1Dc97MPoeFYbFR0vh8zxoxMFwKdyZ6I= +github.com/onsi/gomega v1.42.1/go.mod h1:REff/hsDsodHoKlWsP2mAPhu1+5/6hVYNf9rIEBpeSg= github.com/opencontainers/selinux v1.13.1 h1:A8nNeceYngH9Ow++M+VVEwJVpdFmrlxsN22F+ISDCJE= github.com/opencontainers/selinux v1.13.1/go.mod h1:S10WXZ/osk2kWOYKy1x2f/eXF5ZHJoUs8UU/2caNRbg= github.com/openshift/api v0.0.0-20240115183315-0793e918179d h1:gtwDqGPf5QmsV8jvOUoDNbtyeby9QeLdsybNQ8mGqHQ= @@ -978,8 +979,8 @@ github.com/stretchr/testify v1.8.1/go.mod h1:w2LPCIKwWwSfY2zedu0+kehJoqGctiVI29o github.com/stretchr/testify v1.8.4/go.mod h1:sz/lmYIOXD/1dqDmKjjqLyZ2RngseejIcXlSw2iwfAo= github.com/stretchr/testify v1.9.0/go.mod h1:r2ic/lqez/lEtzL7wO/rwa5dbSLXVDPFyf8C91i36aY= github.com/stretchr/testify v1.11.1/go.mod h1:wZwfW3scLgRK+23gO65QZefKpKQRnfz6sD981Nm4B6U= -github.com/stretchr/testify v1.12.0 h1:K6Mr6jO9JICuend/5xzTM03ydSV3vdNRYAdPSukj8uI= -github.com/stretchr/testify v1.12.0/go.mod h1:bOYBZb5qJ00vPzWfIqBUZPaxK8jWiXc6d3ErP4Ca9Gw= +github.com/stretchr/testify v1.12.1 h1:EuwCh5fleGS7H32xRwO3wRGT7DxrDhLAT6FF8MpWDWE= +github.com/stretchr/testify v1.12.1/go.mod h1:MDEgiDPPsNp5cuIrHPPCyornHKgEVbtFUmoNlxoYthg= github.com/x448/float16 v0.8.4 h1:qLwI1I70+NjRFUR3zs1JPUCgaCXSh3SW62uAKT1mSBM= github.com/x448/float16 v0.8.4/go.mod h1:14CWIYCyZA/cWjXOioeEpHeN/83MdbZDRQHoFcYsOfg= github.com/yuin/goldmark v1.1.25/go.mod h1:3hX8gzYuyVAZsxl0MRgGTJEmQBFcNTphYh9decYSb74= @@ -1025,15 +1026,16 @@ go.uber.org/multierr v1.7.0/go.mod h1:7EAYxJLBy9rStEaz58O2t4Uvip6FSURkq8/ppBp95a go.uber.org/multierr v1.11.0 h1:blXXJkSxSSfBVBlC76pxqeO+LN3aDfLQo+309xJstO0= go.uber.org/multierr v1.11.0/go.mod h1:20+QtiLqy0Nd6FdQB9TLXag12DsQkrbs3htMFfDN80Y= go.uber.org/zap v1.18.1/go.mod h1:xg/QME4nWcxGxrpdeYfq7UvYrLh66cuVKdrbD1XF/NI= -go.uber.org/zap v1.27.1 h1:08RqriUEv8+ArZRYSTXy1LeBScaMpVSTBhCeaZYfMYc= -go.uber.org/zap v1.27.1/go.mod h1:GB2qFLM7cTU87MWRP2mPIjqfIDnGu+VIO4V/SdhGo2E= +go.uber.org/zap v1.28.0 h1:IZzaP1Fv73/T/pBMLk4VutPl36uNC+OSUh3JLG3FIjo= +go.uber.org/zap v1.28.0/go.mod h1:rDLpOi171uODNm/mxFcuYWxDsqWSAVkFdX4XojSKg/Q= go.yaml.in/yaml/v2 v2.4.2/go.mod h1:081UH+NErpNdqlCXm3TtEran0rJZGxAYx9hb/ELlsPU= go.yaml.in/yaml/v2 v2.4.3/go.mod h1:zSxWcmIDjOzPXpjlTTbAsKokqkDNAVtZO0WOMiT90s8= go.yaml.in/yaml/v2 v2.4.4 h1:tuyd0P+2Ont/d6e2rl3be67goVK4R6deVxCUX5vyPaQ= go.yaml.in/yaml/v2 v2.4.4/go.mod h1:gMZqIpDtDqOfM0uNfy0SkpRhvUryYH0Z6wdMYcacYXQ= go.yaml.in/yaml/v3 v3.0.3/go.mod h1:tBHosrYAkRZjRAOREWbDnBXUf08JOwYq++0QNwQiWzI= -go.yaml.in/yaml/v3 v3.0.4 h1:tfq32ie2Jv2UxXFdLJdh3jXuOzWiL1fo0bu/FbuKpbc= go.yaml.in/yaml/v3 v3.0.4/go.mod h1:DhzuOOF2ATzADvBadXxruRBLzYTpT36CKvDb3+aBEFg= +go.yaml.in/yaml/v3 v3.0.5 h1:N6y/pJk8buWs9NY5ERU2HSMfm+IuD/OtfdAnq6kESPw= +go.yaml.in/yaml/v3 v3.0.5/go.mod h1:HVTZu1O7/Vkt2N+BFy8Zza+lnLsABggaTM2ZpNIGuKg= golang.org/x/crypto v0.0.0-20190308221718-c2843e01d9a2/go.mod h1:djNgcEr1/C05ACkg1iLfiJU5Ep61QUkGW8qpdssI0+w= golang.org/x/crypto v0.0.0-20190510104115-cbcb75029529/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI= golang.org/x/crypto v0.0.0-20190605123033-f99c8df09eb5/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI= diff --git a/vendor/github.com/Azure/azure-sdk-for-go/sdk/azcore/CHANGELOG.md b/vendor/github.com/Azure/azure-sdk-for-go/sdk/azcore/CHANGELOG.md index ed56ac241b2..f745dca9d61 100644 --- a/vendor/github.com/Azure/azure-sdk-for-go/sdk/azcore/CHANGELOG.md +++ b/vendor/github.com/Azure/azure-sdk-for-go/sdk/azcore/CHANGELOG.md @@ -1,5 +1,21 @@ # Release History +## 1.23.1 (2026-08-27) + +### Other Changes + +* Upgraded dependencies. + +## 1.23.0 (2026-08-11) + +### Features Added + +* Helper method `runtime.NewRequestForNextLink` for creating requests for pageable operations that uses a next link. It handles absolute and relative next links. + +### Bugs Fixed + +* Fixed an issue where `runtime.Pager[T].More` could return `true` indefinitely after `NextPage` failed to retrieve the first page, causing `for pager.More()` loops to spin. After a page fetch returns an error the `Pager` now enters a terminal state: `More` returns `false` and subsequent `NextPage` calls return the same error without invoking the fetcher again. + ## 1.22.0 (2026-06-04) ### Features Added diff --git a/vendor/github.com/Azure/azure-sdk-for-go/sdk/azcore/doc.go b/vendor/github.com/Azure/azure-sdk-for-go/sdk/azcore/doc.go index 4862a9f6883..299ed5e36f8 100644 --- a/vendor/github.com/Azure/azure-sdk-for-go/sdk/azcore/doc.go +++ b/vendor/github.com/Azure/azure-sdk-for-go/sdk/azcore/doc.go @@ -190,7 +190,10 @@ and determining if there are more pages to fetch. No IO calls are made until th pager := widgetClient.NewListWidgetsPager(nil) for pager.More() { page, err := pager.NextPage(context.TODO()) - // handle err + if err != nil { + // process error + break + } for _, widget := range page.Values { // process widget } diff --git a/vendor/github.com/Azure/azure-sdk-for-go/sdk/azcore/internal/exported/request.go b/vendor/github.com/Azure/azure-sdk-for-go/sdk/azcore/internal/exported/request.go index 4bf722630a7..2df0c7a97f3 100644 --- a/vendor/github.com/Azure/azure-sdk-for-go/sdk/azcore/internal/exported/request.go +++ b/vendor/github.com/Azure/azure-sdk-for-go/sdk/azcore/internal/exported/request.go @@ -11,8 +11,11 @@ import ( "fmt" "io" "net/http" + "net/url" + "path" "reflect" "strconv" + "strings" "github.com/Azure/azure-sdk-for-go/sdk/azcore/internal/shared" ) @@ -119,6 +122,26 @@ func NewRequest(ctx context.Context, httpMethod string, endpoint string) (*Reque return &Request{req: req, values: opValues{}}, nil } +// NewRequestForNextLink creates a new policy.Request with the specified input. +// This helper is for use in paged operations that use the "next link" pattern. +// - endpoint is the service endpoint (e.g. https://contoso.com) +// - nextLink the absolute or relative URL to the next page of items +// +// When nextLink is an absolute URL, its value is used to create the request to the next page. +// If nextLink is a relative URL, it will be joined with the specified endpoint. +// +// Exported as runtime.NewRequestForNextLink(). +func NewRequestForNextLink(ctx context.Context, httpMethod, endpoint, nextLink string) (*Request, error) { + nextLink, err := EncodeQueryParams(nextLink, true) + if err != nil { + return nil, err + } + if !hasScheme(nextLink) { + nextLink = JoinPaths(endpoint, nextLink) + } + return NewRequest(ctx, httpMethod, nextLink) +} + // Body returns the original body specified when the Request was created. func (req *Request) Body() io.ReadSeekCloser { return req.body @@ -257,3 +280,89 @@ func SetBody(req *Request, body io.ReadSeekCloser, contentType string, clobberCo } return nil } + +// JoinPaths concatenates multiple URL path segments into one path, +// inserting path separation characters as required. JoinPaths will preserve +// query parameters in the root path. +// Exported as runtime.JoinPaths +func JoinPaths(root string, paths ...string) string { + if len(paths) == 0 { + return root + } + + qps := "" + if strings.Contains(root, "?") { + splitPath := strings.Split(root, "?") + root, qps = splitPath[0], splitPath[1] + } + + p := path.Join(paths...) + // path.Join will remove any trailing slashes. + // if one was provided, preserve it. + if strings.HasSuffix(paths[len(paths)-1], "/") && !strings.HasSuffix(p, "/") { + p += "/" + } + + if qps != "" { + if strings.Contains(p, "?") { + p = p + "&" + qps + } else { + p = p + "?" + qps + } + } + + if strings.HasSuffix(root, "/") && strings.HasPrefix(p, "/") { + root = root[:len(root)-1] + } else if !strings.HasSuffix(root, "/") && !strings.HasPrefix(p, "/") && !strings.HasPrefix(p, "?") { + p = "/" + p + } + return root + p +} + +// EncodeQueryParams will parse and encode any query parameters in the specified URL. +// Any semicolons will automatically be escaped. +// When encodeSpaces is true all spaces that were form-encoded to + are replaced with %20. +// Exported as runtime.EncodeQueryParams +func EncodeQueryParams(u string, encodeSpaces bool) (string, error) { + before, after, found := strings.Cut(u, "?") + if !found { + return u, nil + } + // starting in Go 1.17, url.ParseQuery will reject semicolons in query params. + // so, we must escape them first. note that this assumes that semicolons aren't + // being used as query param separators which is per the current RFC. + // for more info: + // https://github.com/golang/go/issues/25192 + // https://github.com/golang/go/issues/50034 + qp, err := url.ParseQuery(strings.ReplaceAll(after, ";", "%3B")) + if err != nil { + return "", err + } + encoded := qp.Encode() + if encodeSpaces { + encoded = strings.ReplaceAll(encoded, "+", "%20") + } + return before + "?" + encoded, nil +} + +// hasScheme reports whether s begins with a URI scheme, i.e. is an absolute URI. +// Per RFC 3986: scheme = ALPHA *( ALPHA / DIGIT / "+" / "-" / "." ) ":". +// This avoids the allocations of url.Parse when we only need to know if the URI is absolute. +func hasScheme(s string) bool { + for i := 0; i < len(s); i++ { + c := s[i] + switch { + case c >= 'a' && c <= 'z', c >= 'A' && c <= 'Z': + // always valid + case c == ':': + return i > 0 + case i == 0: + return false + case c >= '0' && c <= '9', c == '+', c == '-', c == '.': + // valid after the first character + default: + return false + } + } + return false +} diff --git a/vendor/github.com/Azure/azure-sdk-for-go/sdk/azcore/internal/shared/constants.go b/vendor/github.com/Azure/azure-sdk-for-go/sdk/azcore/internal/shared/constants.go index 4f7aa643498..fcbf011e7d7 100644 --- a/vendor/github.com/Azure/azure-sdk-for-go/sdk/azcore/internal/shared/constants.go +++ b/vendor/github.com/Azure/azure-sdk-for-go/sdk/azcore/internal/shared/constants.go @@ -37,5 +37,5 @@ const ( Module = "azcore" // Version is the semantic version (see http://semver.org) of this module. - Version = "v1.22.0" + Version = "v1.23.1" ) diff --git a/vendor/github.com/Azure/azure-sdk-for-go/sdk/azcore/runtime/pager.go b/vendor/github.com/Azure/azure-sdk-for-go/sdk/azcore/runtime/pager.go index 743513be4b5..a05b0c34d66 100644 --- a/vendor/github.com/Azure/azure-sdk-for-go/sdk/azcore/runtime/pager.go +++ b/vendor/github.com/Azure/azure-sdk-for-go/sdk/azcore/runtime/pager.go @@ -35,6 +35,9 @@ type Pager[T any] struct { handler PagingHandler[T] tracer tracing.Tracer firstPage bool + // fetchErr is set when Fetcher returns an error, placing the Pager in a + // terminal state so that More returns false. + fetchErr error } // NewPager creates an instance of Pager using the specified PagingHandler. @@ -48,7 +51,16 @@ func NewPager[T any](handler PagingHandler[T]) *Pager[T] { } // More returns true if there are more pages to retrieve. +// +// If a prior call to [Pager.NextPage] returned an error while fetching a page, +// the Pager enters a terminal state and More returns false so that a for loop +// over the pager terminates instead of retrying indefinitely. func (p *Pager[T]) More() bool { + // a failed fetch puts the Pager in a terminal state; there are no more pages + // to retrieve regardless of whether it was the first or a subsequent page. + if p.fetchErr != nil { + return false + } if p.current != nil { return p.handler.More(*p.current) } @@ -56,7 +68,17 @@ func (p *Pager[T]) More() bool { } // NextPage advances the pager to the next page. +// +// If fetching the page returns an error, the Pager enters a terminal state: +// [Pager.More] returns false and every subsequent call to NextPage returns the +// same error without invoking the fetcher again. func (p *Pager[T]) NextPage(ctx context.Context) (T, error) { + if p.fetchErr != nil { + // a prior fetch failed; the Pager is in a terminal state. return the + // stored error rather than re-invoking the fetcher, which may not be + // safe to retry (e.g. stateful handlers that latch into a done state). + return *new(T), p.fetchErr + } if p.current != nil { if p.firstPage { // we get here if it's an LRO-pager, we already have the first page @@ -76,6 +98,7 @@ func (p *Pager[T]) NextPage(ctx context.Context) (T, error) { resp, err := p.handler.Fetcher(ctx, p.current) if err != nil { + p.fetchErr = err return *new(T), err } p.current = &resp diff --git a/vendor/github.com/Azure/azure-sdk-for-go/sdk/azcore/runtime/policy_retry.go b/vendor/github.com/Azure/azure-sdk-for-go/sdk/azcore/runtime/policy_retry.go index 696e1d9f496..50c867914e3 100644 --- a/vendor/github.com/Azure/azure-sdk-for-go/sdk/azcore/runtime/policy_retry.go +++ b/vendor/github.com/Azure/azure-sdk-for-go/sdk/azcore/runtime/policy_retry.go @@ -115,7 +115,8 @@ func (p *retryPolicy) Do(req *policy.Request) (resp *http.Response, err error) { // do this outside the for loop so defers don't accumulate. rwbody = &retryableRequestBody{body: req.Body()} defer func() { - // TODO: https://github.com/Azure/azure-sdk-for-go/issues/25649 + // Match net/http behavior: after a request has produced either a response + // or a transport error, request body close errors are not surfaced to callers. _ = rwbody.realClose() }() } diff --git a/vendor/github.com/Azure/azure-sdk-for-go/sdk/azcore/runtime/request.go b/vendor/github.com/Azure/azure-sdk-for-go/sdk/azcore/runtime/request.go index 20d86496d27..20ec6511c6e 100644 --- a/vendor/github.com/Azure/azure-sdk-for-go/sdk/azcore/runtime/request.go +++ b/vendor/github.com/Azure/azure-sdk-for-go/sdk/azcore/runtime/request.go @@ -14,8 +14,6 @@ import ( "mime/multipart" "net/http" "net/textproto" - "net/url" - "path" "strings" "github.com/Azure/azure-sdk-for-go/sdk/azcore/internal/exported" @@ -43,6 +41,17 @@ func NewRequest(ctx context.Context, httpMethod string, endpoint string) (*polic return exported.NewRequest(ctx, httpMethod, endpoint) } +// NewRequestForNextLink creates a new policy.Request with the specified input. +// This helper is for use in paged operations that use the "next link" pattern. +// - endpoint is the service endpoint (e.g. https://contoso.com) +// - nextLink the absolute or relative URL to the next page of items +// +// When nextLink is an absolute URL, its value is used to create the request to the next page. +// If nextLink is a relative URL, it will be joined with the specified endpoint. +func NewRequestForNextLink(ctx context.Context, httpMethod, endpoint, nextLink string) (*policy.Request, error) { + return exported.NewRequestForNextLink(ctx, httpMethod, endpoint, nextLink) +} + // NewRequestFromRequest creates a new policy.Request with an existing *http.Request func NewRequestFromRequest(req *http.Request) (*policy.Request, error) { return exported.NewRequestFromRequest(req) @@ -51,58 +60,14 @@ func NewRequestFromRequest(req *http.Request) (*policy.Request, error) { // EncodeQueryParams will parse and encode any query parameters in the specified URL. // Any semicolons will automatically be escaped. func EncodeQueryParams(u string) (string, error) { - before, after, found := strings.Cut(u, "?") - if !found { - return u, nil - } - // starting in Go 1.17, url.ParseQuery will reject semicolons in query params. - // so, we must escape them first. note that this assumes that semicolons aren't - // being used as query param separators which is per the current RFC. - // for more info: - // https://github.com/golang/go/issues/25192 - // https://github.com/golang/go/issues/50034 - qp, err := url.ParseQuery(strings.ReplaceAll(after, ";", "%3B")) - if err != nil { - return "", err - } - return before + "?" + qp.Encode(), nil + return exported.EncodeQueryParams(u, false) } // JoinPaths concatenates multiple URL path segments into one path, // inserting path separation characters as required. JoinPaths will preserve // query parameters in the root path func JoinPaths(root string, paths ...string) string { - if len(paths) == 0 { - return root - } - - qps := "" - if strings.Contains(root, "?") { - splitPath := strings.Split(root, "?") - root, qps = splitPath[0], splitPath[1] - } - - p := path.Join(paths...) - // path.Join will remove any trailing slashes. - // if one was provided, preserve it. - if strings.HasSuffix(paths[len(paths)-1], "/") && !strings.HasSuffix(p, "/") { - p += "/" - } - - if qps != "" { - if strings.Contains(p, "?") { - p = p + "&" + qps - } else { - p = p + "?" + qps - } - } - - if strings.HasSuffix(root, "/") && strings.HasPrefix(p, "/") { - root = root[:len(root)-1] - } else if !strings.HasSuffix(root, "/") && !strings.HasPrefix(p, "/") && !strings.HasPrefix(p, "?") { - p = "/" + p - } - return root + p + return exported.JoinPaths(root, paths...) } // EncodeByteArray will base-64 encode the byte slice v. diff --git a/vendor/github.com/Azure/azure-sdk-for-go/sdk/azidentity/CHANGELOG.md b/vendor/github.com/Azure/azure-sdk-for-go/sdk/azidentity/CHANGELOG.md index ba360a30e37..3dea713ccf7 100644 --- a/vendor/github.com/Azure/azure-sdk-for-go/sdk/azidentity/CHANGELOG.md +++ b/vendor/github.com/Azure/azure-sdk-for-go/sdk/azidentity/CHANGELOG.md @@ -1,5 +1,11 @@ # Release History +## 1.14.1 (2026-08-27) + +### Other Changes + +- Upgraded dependencies + ## 1.14.0 (2026-06-15) ### Breaking Changes diff --git a/vendor/github.com/Azure/azure-sdk-for-go/sdk/azidentity/version.go b/vendor/github.com/Azure/azure-sdk-for-go/sdk/azidentity/version.go index f45f59697ba..fb5014489d8 100644 --- a/vendor/github.com/Azure/azure-sdk-for-go/sdk/azidentity/version.go +++ b/vendor/github.com/Azure/azure-sdk-for-go/sdk/azidentity/version.go @@ -11,5 +11,5 @@ const ( module = "github.com/Azure/azure-sdk-for-go/sdk/" + component // Version is the semantic version (see http://semver.org) of this module. - version = "v1.14.0" + version = "v1.14.1" ) diff --git a/vendor/github.com/AzureAD/microsoft-authentication-library-for-go/apps/confidential/confidential.go b/vendor/github.com/AzureAD/microsoft-authentication-library-for-go/apps/confidential/confidential.go index 1b3e599b1a5..fe4599e3df0 100644 --- a/vendor/github.com/AzureAD/microsoft-authentication-library-for-go/apps/confidential/confidential.go +++ b/vendor/github.com/AzureAD/microsoft-authentication-library-for-go/apps/confidential/confidential.go @@ -57,6 +57,10 @@ As such I've put a PEM decoder into here. // TODO(msal): This should have example code for each method on client using Go's example doc framework. // base usage details should be include in the package documentation. +// clientClaimsCacheKey is the CacheKeyComponents key used to partition the token cache by +// client-originated claims (see WithClaimsFromClient). The component value is the raw claims string. +const clientClaimsCacheKey = "client_claims" + // AuthResult contains the results of one token acquisition operation. // For details see https://aka.ms/msal-net-authenticationresult type AuthResult = base.AuthResult @@ -465,6 +469,7 @@ func WithClaims(claims string) interface { AcquireByUsernamePasswordOption AcquireSilentOption AuthCodeURLOption + AcquireByUserFICOption options.CallOption } { return struct { @@ -474,6 +479,7 @@ func WithClaims(claims string) interface { AcquireByUsernamePasswordOption AcquireSilentOption AuthCodeURLOption + AcquireByUserFICOption options.CallOption }{ CallOption: options.NewCallOption( @@ -491,6 +497,84 @@ func WithClaims(claims string) interface { t.claims = claims case *authCodeURLOptions: t.claims = claims + case *acquireTokenByUserFICOptions: + t.claims = claims + default: + return fmt.Errorf("unexpected options type %T", a) + } + return nil + }, + ), + } +} + +// WithClaimsFromClient specifies client-originated claims (a JSON object) to include in the token +// request. +// +// Unlike [WithClaims] (for server-issued claims challenges, which bypass the token cache), tokens +// acquired with client claims ARE cached and the cache entry is keyed on the claims value. Different +// claims values produce separate cache entries, so callers should pass stable, non-dynamic values to +// avoid unbounded cache growth. The exact same string MUST be included on every request: the raw +// string is used verbatim as part of the cache key (MSAL does not normalize it), so omitting it or +// changing it on a later call silently moves to a different cache partition. +// +// The claims are sent to the authority as the standard OAuth "claims" body parameter (merged with any +// server-issued claims and client capabilities); they are not embedded in the client assertion JWT. +// +// The argument must be a JSON object, but the confidential client does not enforce this locally in all +// cases: the value is forwarded to the authority verbatim and is validated locally only when it is +// merged with server-issued claims or client capabilities. Otherwise a malformed or non-object value +// is not rejected locally and instead surfaces as a server-side error. An empty or whitespace-only +// value is ignored. +func WithClaimsFromClient(claims string) interface { + AcquireByAuthCodeOption + AcquireByCredentialOption + AcquireOnBehalfOfOption + AcquireByUsernamePasswordOption + AcquireSilentOption + AcquireByUserFICOption + options.CallOption +} { + return struct { + AcquireByAuthCodeOption + AcquireByCredentialOption + AcquireOnBehalfOfOption + AcquireByUsernamePasswordOption + AcquireSilentOption + AcquireByUserFICOption + options.CallOption + }{ + CallOption: options.NewCallOption( + func(a any) error { + if strings.TrimSpace(claims) == "" { + // Ignore empty/whitespace claims so callers can pass a value unconditionally. + return nil + } + addCacheKey := func(m *map[string]string) { + if *m == nil { + *m = make(map[string]string) + } + (*m)[clientClaimsCacheKey] = claims + } + switch t := a.(type) { + case *acquireTokenByAuthCodeOptions: + t.clientClaims = claims + addCacheKey(&t.cacheKeyComponents) + case *acquireTokenByCredentialOptions: + t.clientClaims = claims + addCacheKey(&t.cacheKeyComponents) + case *acquireTokenOnBehalfOfOptions: + t.clientClaims = claims + addCacheKey(&t.cacheKeyComponents) + case *acquireTokenByUsernamePasswordOptions: + t.clientClaims = claims + addCacheKey(&t.cacheKeyComponents) + case *acquireTokenSilentOptions: + t.clientClaims = claims + addCacheKey(&t.cacheKeyComponents) + case *acquireTokenByUserFICOptions: + t.clientClaims = claims + addCacheKey(&t.cacheKeyComponents) default: return fmt.Errorf("unexpected options type %T", a) } @@ -500,7 +584,6 @@ func WithClaims(claims string) interface { } } -// WithAuthenticationScheme is an extensibility mechanism designed to be used only by Azure Arc for proof of possession access tokens. func WithAuthenticationScheme(authnScheme AuthenticationScheme) interface { AcquireSilentOption AcquireByCredentialOption @@ -536,6 +619,7 @@ func WithTenantID(tenantID string) interface { AcquireByUsernamePasswordOption AcquireSilentOption AuthCodeURLOption + AcquireByUserFICOption options.CallOption } { return struct { @@ -545,6 +629,7 @@ func WithTenantID(tenantID string) interface { AcquireByUsernamePasswordOption AcquireSilentOption AuthCodeURLOption + AcquireByUserFICOption options.CallOption }{ CallOption: options.NewCallOption( @@ -562,6 +647,8 @@ func WithTenantID(tenantID string) interface { t.tenantID = tenantID case *authCodeURLOptions: t.tenantID = tenantID + case *acquireTokenByUserFICOptions: + t.tenantID = tenantID default: return fmt.Errorf("unexpected options type %T", a) } @@ -574,9 +661,11 @@ func WithTenantID(tenantID string) interface { // acquireTokenSilentOptions are all the optional settings to an AcquireTokenSilent() call. // These are set by using various AcquireTokenSilentOption functions. type acquireTokenSilentOptions struct { - account Account - claims, tenantID string - authnScheme AuthenticationScheme + account Account + claims, tenantID string + clientClaims string + authnScheme AuthenticationScheme + cacheKeyComponents map[string]string } // AcquireSilentOption is implemented by options for AcquireTokenSilent @@ -609,7 +698,7 @@ func WithSilentAccount(account Account) interface { // AcquireTokenSilent acquires a token from either the cache or using a refresh token. // -// Options: [WithClaims], [WithSilentAccount], [WithTenantID] +// Options: [WithClaims], [WithClaimsFromClient], [WithSilentAccount], [WithTenantID] func (cca Client) AcquireTokenSilent(ctx context.Context, scopes []string, opts ...AcquireSilentOption) (AuthResult, error) { o := acquireTokenSilentOptions{} if err := options.ApplyOptions(&o, opts); err != nil { @@ -626,14 +715,16 @@ func (cca Client) AcquireTokenSilent(ctx context.Context, scopes []string, opts } silentParameters := base.AcquireTokenSilentParameters{ - Scopes: scopes, - Account: o.account, - RequestType: accesstokens.ATConfidential, - Credential: cca.cred, - IsAppCache: o.account.IsZero(), - TenantID: o.tenantID, - AuthnScheme: o.authnScheme, - Claims: o.claims, + Scopes: scopes, + Account: o.account, + RequestType: accesstokens.ATConfidential, + Credential: cca.cred, + IsAppCache: o.account.IsZero(), + TenantID: o.tenantID, + AuthnScheme: o.authnScheme, + Claims: o.claims, + ClientClaims: o.clientClaims, + CacheKeyComponents: o.cacheKeyComponents, } return cca.acquireTokenSilentInternal(ctx, silentParameters) @@ -647,8 +738,10 @@ func (cca Client) acquireTokenSilentInternal(ctx context.Context, silentParamete // acquireTokenByUsernamePasswordOptions contains optional configuration for AcquireTokenByUsernamePassword type acquireTokenByUsernamePasswordOptions struct { - claims, tenantID string - authnScheme AuthenticationScheme + claims, tenantID string + clientClaims string + authnScheme AuthenticationScheme + cacheKeyComponents map[string]string } // AcquireByUsernamePasswordOption is implemented by options for AcquireTokenByUsernamePassword @@ -659,7 +752,7 @@ type AcquireByUsernamePasswordOption interface { // AcquireTokenByUsernamePassword acquires a security token from the authority, via Username/Password Authentication. // NOTE: this flow is NOT recommended. // -// Options: [WithClaims], [WithTenantID] +// Options: [WithClaims], [WithClaimsFromClient], [WithTenantID] func (cca Client) AcquireTokenByUsernamePassword(ctx context.Context, scopes []string, username, password string, opts ...AcquireByUsernamePasswordOption) (AuthResult, error) { o := acquireTokenByUsernamePasswordOptions{} if err := options.ApplyOptions(&o, opts); err != nil { @@ -672,8 +765,12 @@ func (cca Client) AcquireTokenByUsernamePassword(ctx context.Context, scopes []s authParams.Scopes = scopes authParams.AuthorizationType = authority.ATUsernamePassword authParams.Claims = o.claims + authParams.ClientClaims = o.clientClaims authParams.Username = username authParams.Password = password + if o.cacheKeyComponents != nil { + authParams.CacheKeyComponents = o.cacheKeyComponents + } if o.authnScheme != nil { authParams.AuthnScheme = o.authnScheme } @@ -688,6 +785,8 @@ func (cca Client) AcquireTokenByUsernamePassword(ctx context.Context, scopes []s // acquireTokenByAuthCodeOptions contains the optional parameters used to acquire an access token using the authorization code flow. type acquireTokenByAuthCodeOptions struct { challenge, claims, tenantID string + clientClaims string + cacheKeyComponents map[string]string } // AcquireByAuthCodeOption is implemented by options for AcquireTokenByAuthCode @@ -721,7 +820,7 @@ func WithChallenge(challenge string) interface { // AcquireTokenByAuthCode is a request to acquire a security token from the authority, using an authorization code. // The specified redirect URI must be the same URI that was used when the authorization code was requested. // -// Options: [WithChallenge], [WithClaims], [WithTenantID] +// Options: [WithChallenge], [WithClaims], [WithClaimsFromClient], [WithTenantID] func (cca Client) AcquireTokenByAuthCode(ctx context.Context, code string, redirectURI string, scopes []string, opts ...AcquireByAuthCodeOption) (AuthResult, error) { o := acquireTokenByAuthCodeOptions{} if err := options.ApplyOptions(&o, opts); err != nil { @@ -729,14 +828,16 @@ func (cca Client) AcquireTokenByAuthCode(ctx context.Context, code string, redir } params := base.AcquireTokenAuthCodeParameters{ - Scopes: scopes, - Code: code, - Challenge: o.challenge, - Claims: o.claims, - AppType: accesstokens.ATConfidential, - Credential: cca.cred, // This setting differs from public.Client.AcquireTokenByAuthCode - RedirectURI: redirectURI, - TenantID: o.tenantID, + Scopes: scopes, + Code: code, + Challenge: o.challenge, + Claims: o.claims, + ClientClaims: o.clientClaims, + AppType: accesstokens.ATConfidential, + Credential: cca.cred, // This setting differs from public.Client.AcquireTokenByAuthCode + RedirectURI: redirectURI, + TenantID: o.tenantID, + CacheKeyComponents: o.cacheKeyComponents, } return cca.base.AcquireTokenByAuthCode(ctx, params) @@ -745,6 +846,7 @@ func (cca Client) AcquireTokenByAuthCode(ctx context.Context, code string, redir // acquireTokenByCredentialOptions contains optional configuration for AcquireTokenByCredential type acquireTokenByCredentialOptions struct { claims, tenantID string + clientClaims string authnScheme AuthenticationScheme extraBodyParameters map[string]string cacheKeyComponents map[string]string @@ -757,7 +859,7 @@ type AcquireByCredentialOption interface { // AcquireTokenByCredential acquires a security token from the authority, using the client credentials grant. // -// Options: [WithClaims], [WithTenantID], [WithFMIPath], [WithAttribute] +// Options: [WithClaims], [WithClaimsFromClient], [WithTenantID], [WithFMIPath], [WithAttribute] func (cca Client) AcquireTokenByCredential(ctx context.Context, scopes []string, opts ...AcquireByCredentialOption) (AuthResult, error) { o := acquireTokenByCredentialOptions{} err := options.ApplyOptions(&o, opts) @@ -771,6 +873,7 @@ func (cca Client) AcquireTokenByCredential(ctx context.Context, scopes []string, authParams.Scopes = scopes authParams.AuthorizationType = authority.ATClientCredentials authParams.Claims = o.claims + authParams.ClientClaims = o.clientClaims if o.authnScheme != nil { authParams.AuthnScheme = o.authnScheme } @@ -786,6 +889,7 @@ func (cca Client) AcquireTokenByCredential(ctx context.Context, scopes []string, TenantID: o.tenantID, AuthnScheme: o.authnScheme, Claims: o.claims, + ClientClaims: o.clientClaims, ExtraBodyParameters: o.extraBodyParameters, CacheKeyComponents: o.cacheKeyComponents, } @@ -806,7 +910,9 @@ func (cca Client) AcquireTokenByCredential(ctx context.Context, scopes []string, // acquireTokenOnBehalfOfOptions contains optional configuration for AcquireTokenOnBehalfOf type acquireTokenOnBehalfOfOptions struct { - claims, tenantID string + claims, tenantID string + clientClaims string + cacheKeyComponents map[string]string } // AcquireOnBehalfOfOption is implemented by options for AcquireTokenOnBehalfOf @@ -817,18 +923,20 @@ type AcquireOnBehalfOfOption interface { // AcquireTokenOnBehalfOf acquires a security token for an app using middle tier apps access token. // Refer https://docs.microsoft.com/en-us/azure/active-directory/develop/v2-oauth2-on-behalf-of-flow. // -// Options: [WithClaims], [WithTenantID] +// Options: [WithClaims], [WithClaimsFromClient], [WithTenantID] func (cca Client) AcquireTokenOnBehalfOf(ctx context.Context, userAssertion string, scopes []string, opts ...AcquireOnBehalfOfOption) (AuthResult, error) { o := acquireTokenOnBehalfOfOptions{} if err := options.ApplyOptions(&o, opts); err != nil { return AuthResult{}, err } params := base.AcquireTokenOnBehalfOfParameters{ - Scopes: scopes, - UserAssertion: userAssertion, - Claims: o.claims, - Credential: cca.cred, - TenantID: o.tenantID, + Scopes: scopes, + UserAssertion: userAssertion, + Claims: o.claims, + ClientClaims: o.clientClaims, + Credential: cca.cred, + TenantID: o.tenantID, + CacheKeyComponents: o.cacheKeyComponents, } return cca.base.AcquireTokenOnBehalfOf(ctx, params) } @@ -902,3 +1010,111 @@ func WithAttribute(attrValue string) interface { ), } } + +// AcquireByUserFICOption is implemented by options for AcquireTokenByUserFederatedIdentityCredential. +type AcquireByUserFICOption interface { + acquireByUserFICOption() +} + +// acquireTokenByUserFICOptions contains optional configuration for AcquireTokenByUserFederatedIdentityCredential. +type acquireTokenByUserFICOptions struct { + claims, tenantID string + clientClaims string + username string + userObjectID string + cacheKeyComponents map[string]string +} + +// acquireByUserFICOption is a marker method that restricts option types to the user_fic API. +func (acquireTokenByUserFICOptions) acquireByUserFICOption() {} + +// WithUserObjectID specifies the target user by their object ID (OID) for the user_fic flow. +// This is mutually exclusive with WithUserFICUsername. +func WithUserObjectID(oid string) interface { + AcquireByUserFICOption + options.CallOption +} { + return struct { + AcquireByUserFICOption + options.CallOption + }{ + CallOption: options.NewCallOption( + func(a any) error { + switch t := a.(type) { + case *acquireTokenByUserFICOptions: + t.userObjectID = oid + default: + return fmt.Errorf("unexpected options type %T", a) + } + return nil + }, + ), + } +} + +// WithUserFICUsername specifies the target user by their UPN (username) for the user_fic flow. +// This is mutually exclusive with WithUserObjectID. +func WithUserFICUsername(username string) interface { + AcquireByUserFICOption + options.CallOption +} { + return struct { + AcquireByUserFICOption + options.CallOption + }{ + CallOption: options.NewCallOption( + func(a any) error { + switch t := a.(type) { + case *acquireTokenByUserFICOptions: + t.username = username + default: + return fmt.Errorf("unexpected options type %T", a) + } + return nil + }, + ), + } +} + +// AcquireTokenByUserFederatedIdentityCredential acquires a user-scoped token using the user_fic grant type. +// This exchanges a federated identity credential (assertion) for a user token, enabling an agent +// to act on behalf of a user. The result includes an Account that can be used with +// [Client.AcquireTokenSilent] for subsequent cached access. +// +// Parameters: +// - ctx: Context for the request. +// - scopes: Scopes requested for the token. +// - assertion: The federated identity credential (instance token) to exchange. +// - opts: Options including user identification (exactly one of WithUserObjectID or WithUserFICUsername +// is required), [WithClaims], [WithClaimsFromClient], [WithTenantID]. +// +// Options: [WithUserObjectID], [WithUserFICUsername], [WithClaims], [WithClaimsFromClient], [WithTenantID] +func (cca Client) AcquireTokenByUserFederatedIdentityCredential(ctx context.Context, scopes []string, assertion string, opts ...AcquireByUserFICOption) (AuthResult, error) { + o := acquireTokenByUserFICOptions{} + if err := options.ApplyOptions(&o, opts); err != nil { + return AuthResult{}, err + } + + if assertion == "" { + return AuthResult{}, errors.New("assertion must not be empty") + } + if o.username == "" && o.userObjectID == "" { + return AuthResult{}, errors.New("exactly one of WithUserObjectID or WithUserFICUsername must be specified") + } + if o.username != "" && o.userObjectID != "" { + return AuthResult{}, errors.New("WithUserObjectID and WithUserFICUsername are mutually exclusive") + } + + params := base.AcquireTokenByUserFICParameters{ + Scopes: scopes, + Claims: o.claims, + ClientClaims: o.clientClaims, + Credential: cca.cred, + TenantID: o.tenantID, + UserFederatedIdentityCredential: assertion, + Username: o.username, + UserObjectID: o.userObjectID, + CacheKeyComponents: o.cacheKeyComponents, + } + return cca.base.AcquireTokenByUserFIC(ctx, params) +} diff --git a/vendor/github.com/AzureAD/microsoft-authentication-library-for-go/apps/internal/base/base.go b/vendor/github.com/AzureAD/microsoft-authentication-library-for-go/apps/internal/base/base.go index 9bd96090e86..ed622e5ec61 100644 --- a/vendor/github.com/AzureAD/microsoft-authentication-library-for-go/apps/internal/base/base.go +++ b/vendor/github.com/AzureAD/microsoft-authentication-library-for-go/apps/internal/base/base.go @@ -55,6 +55,7 @@ type AcquireTokenSilentParameters struct { UserAssertion string AuthorizationType authority.AuthorizeType Claims string + ClientClaims string AuthnScheme authority.AuthenticationScheme ExtraBodyParameters map[string]string CacheKeyComponents map[string]string @@ -65,22 +66,39 @@ type AcquireTokenSilentParameters struct { // Code challenges are used to secure authorization code grants; for more information, visit // https://tools.ietf.org/html/rfc7636. type AcquireTokenAuthCodeParameters struct { - Scopes []string - Code string - Challenge string - Claims string - RedirectURI string - AppType accesstokens.AppType - Credential *accesstokens.Credential - TenantID string + Scopes []string + Code string + Challenge string + Claims string + ClientClaims string + RedirectURI string + AppType accesstokens.AppType + Credential *accesstokens.Credential + TenantID string + CacheKeyComponents map[string]string } type AcquireTokenOnBehalfOfParameters struct { - Scopes []string - Claims string - Credential *accesstokens.Credential - TenantID string - UserAssertion string + Scopes []string + Claims string + ClientClaims string + Credential *accesstokens.Credential + TenantID string + UserAssertion string + CacheKeyComponents map[string]string +} + +// AcquireTokenByUserFICParameters contains the parameters to acquire a user token via the user_fic flow. +type AcquireTokenByUserFICParameters struct { + Scopes []string + Claims string + ClientClaims string + Credential *accesstokens.Credential + TenantID string + UserFederatedIdentityCredential string + Username string + UserObjectID string + CacheKeyComponents map[string]string } // AuthResult contains the results of one token acquisition operation in PublicClientApplication @@ -322,7 +340,9 @@ func (b Client) AcquireTokenSilent(ctx context.Context, silent AcquireTokenSilen authParams.HomeAccountID = silent.Account.HomeAccountID authParams.AuthorizationType = silent.AuthorizationType authParams.Claims = silent.Claims + authParams.ClientClaims = silent.ClientClaims authParams.UserAssertion = silent.UserAssertion + authParams.IsAppTokenCache = silent.IsAppCache if silent.AuthnScheme != nil { authParams.AuthnScheme = silent.AuthnScheme } @@ -414,6 +434,10 @@ func (b Client) AcquireTokenByAuthCode(ctx context.Context, authCodeParams Acqui return AuthResult{}, err } authParams.Claims = authCodeParams.Claims + authParams.ClientClaims = authCodeParams.ClientClaims + if authCodeParams.CacheKeyComponents != nil { + authParams.CacheKeyComponents = authCodeParams.CacheKeyComponents + } authParams.Scopes = authCodeParams.Scopes authParams.Redirecturi = authCodeParams.RedirectURI authParams.AuthorizationType = authority.ATAuthCode @@ -441,13 +465,15 @@ func (b Client) AcquireTokenByAuthCode(ctx context.Context, authCodeParams Acqui func (b Client) AcquireTokenOnBehalfOf(ctx context.Context, onBehalfOfParams AcquireTokenOnBehalfOfParameters) (AuthResult, error) { var ar AuthResult silentParameters := AcquireTokenSilentParameters{ - Scopes: onBehalfOfParams.Scopes, - RequestType: accesstokens.ATConfidential, - Credential: onBehalfOfParams.Credential, - UserAssertion: onBehalfOfParams.UserAssertion, - AuthorizationType: authority.ATOnBehalfOf, - TenantID: onBehalfOfParams.TenantID, - Claims: onBehalfOfParams.Claims, + Scopes: onBehalfOfParams.Scopes, + RequestType: accesstokens.ATConfidential, + Credential: onBehalfOfParams.Credential, + UserAssertion: onBehalfOfParams.UserAssertion, + AuthorizationType: authority.ATOnBehalfOf, + TenantID: onBehalfOfParams.TenantID, + Claims: onBehalfOfParams.Claims, + ClientClaims: onBehalfOfParams.ClientClaims, + CacheKeyComponents: onBehalfOfParams.CacheKeyComponents, } ar, err := b.AcquireTokenSilent(ctx, silentParameters) if err == nil { @@ -459,8 +485,12 @@ func (b Client) AcquireTokenOnBehalfOf(ctx context.Context, onBehalfOfParams Acq } authParams.AuthorizationType = authority.ATOnBehalfOf authParams.Claims = onBehalfOfParams.Claims + authParams.ClientClaims = onBehalfOfParams.ClientClaims authParams.Scopes = onBehalfOfParams.Scopes authParams.UserAssertion = onBehalfOfParams.UserAssertion + if onBehalfOfParams.CacheKeyComponents != nil { + authParams.CacheKeyComponents = onBehalfOfParams.CacheKeyComponents + } if authParams.ExtraBodyParameters != nil { authParams.ExtraBodyParameters = silentParameters.ExtraBodyParameters } @@ -471,6 +501,30 @@ func (b Client) AcquireTokenOnBehalfOf(ctx context.Context, onBehalfOfParams Acq return ar, err } +// AcquireTokenByUserFIC acquires a user-scoped token using the user_fic grant type. +func (b Client) AcquireTokenByUserFIC(ctx context.Context, params AcquireTokenByUserFICParameters) (AuthResult, error) { + authParams, err := b.AuthParams.WithTenant(params.TenantID) + if err != nil { + return AuthResult{}, err + } + authParams.AuthorizationType = authority.ATUserFIC + authParams.Claims = params.Claims + authParams.ClientClaims = params.ClientClaims + if params.CacheKeyComponents != nil { + authParams.CacheKeyComponents = params.CacheKeyComponents + } + authParams.Scopes = params.Scopes + authParams.UserFederatedIdentityCredential = params.UserFederatedIdentityCredential + authParams.Username = params.Username + authParams.UserObjectID = params.UserObjectID + + token, err := b.Token.UserFederatedIdentityCredential(ctx, authParams, params.Credential) + if err != nil { + return AuthResult{}, err + } + return b.AuthResultFromToken(ctx, authParams, token) +} + func (b Client) AuthResultFromToken(ctx context.Context, authParams authority.AuthParams, token accesstokens.TokenResponse) (AuthResult, error) { var m manager = b.manager if authParams.AuthorizationType == authority.ATOnBehalfOf { @@ -525,7 +579,7 @@ func (b Client) Account(ctx context.Context, homeAccountID string) (shared.Accou authParams := b.AuthParams // This is a copy, as we don't have a pointer receiver and .AuthParams is not a pointer. authParams.AuthorizationType = authority.AccountByID authParams.HomeAccountID = homeAccountID - key := b.AuthParams.CacheKey(false) + key := authParams.CacheKey(false) err := b.cacheAccessor.Replace(ctx, b.manager, cache.ReplaceHints{PartitionKey: key}) if err != nil { return shared.Account{}, err diff --git a/vendor/github.com/AzureAD/microsoft-authentication-library-for-go/apps/internal/base/storage/partitioned_storage.go b/vendor/github.com/AzureAD/microsoft-authentication-library-for-go/apps/internal/base/storage/partitioned_storage.go index 5d018e117ab..0042a1e964e 100644 --- a/vendor/github.com/AzureAD/microsoft-authentication-library-for-go/apps/internal/base/storage/partitioned_storage.go +++ b/vendor/github.com/AzureAD/microsoft-authentication-library-for-go/apps/internal/base/storage/partitioned_storage.go @@ -59,7 +59,7 @@ func (m *PartitionedManager) Read(ctx context.Context, authParameters authority. // errors returned by read* methods indicate a cache miss and are therefore non-fatal. We continue populating // TokenResponse fields so that e.g. lack of an ID token doesn't prevent the caller from receiving a refresh token. - accessToken, err := m.readAccessToken(aliases, realm, clientID, userAssertionHash, scopes, partitionKeyFromRequest, tokenType, authnSchemeKeyID) + accessToken, err := m.readAccessToken(aliases, realm, clientID, userAssertionHash, scopes, partitionKeyFromRequest, tokenType, authnSchemeKeyID, authParameters.CacheExtKeyGenerator()) if err == nil { tr.AccessToken = accessToken } @@ -125,6 +125,7 @@ func (m *PartitionedManager) Write(authParameters authority.AuthParams, tokenRes if authParameters.AuthorizationType == authority.ATOnBehalfOf { accessToken.UserAssertionHash = userAssertionHash // get Hash method on this } + accessToken.ExtCacheKey = authParameters.CacheExtKeyGenerator() // Since we have a valid access token, cache it before moving on. if err := accessToken.Validate(); err == nil { @@ -250,7 +251,7 @@ func (m *PartitionedManager) fallbackMetadata(host string) authority.InstanceDis return fallback } -func (m *PartitionedManager) readAccessToken(envAliases []string, realm, clientID, userAssertionHash string, scopes []string, partitionKey, tokenType, authnSchemeKeyID string) (AccessToken, error) { +func (m *PartitionedManager) readAccessToken(envAliases []string, realm, clientID, userAssertionHash string, scopes []string, partitionKey, tokenType, authnSchemeKeyID, extCacheKey string) (AccessToken, error) { m.contractMu.RLock() defer m.contractMu.RUnlock() if accessTokens, ok := m.contract.AccessTokensPartition[partitionKey]; ok { @@ -262,6 +263,13 @@ func (m *PartitionedManager) readAccessToken(envAliases []string, realm, clientI if at.TokenType == tokenType && at.AuthnSchemeKeyID == authnSchemeKeyID { if checkAlias(at.Environment, envAliases) { if isMatchingScopes(scopes, at.Scopes) { + // Tokens acquired with extra cache-key components (e.g. client claims + // via WithClaimsFromClient) are partitioned by ExtCacheKey. Only return a + // token whose ExtCacheKey matches the request's; this also ensures a + // request without extra components never returns a hashed token. + if at.ExtCacheKey != extCacheKey { + continue + } return at, nil } } diff --git a/vendor/github.com/AzureAD/microsoft-authentication-library-for-go/apps/internal/exported/exported.go b/vendor/github.com/AzureAD/microsoft-authentication-library-for-go/apps/internal/exported/exported.go index de1bf381f41..a1c6ed4daa2 100644 --- a/vendor/github.com/AzureAD/microsoft-authentication-library-for-go/apps/internal/exported/exported.go +++ b/vendor/github.com/AzureAD/microsoft-authentication-library-for-go/apps/internal/exported/exported.go @@ -11,6 +11,10 @@ type AssertionRequestOptions struct { // TokenEndpoint is the intended token endpoint. Used as the assertion's "aud" claim. TokenEndpoint string + + // FMIPath is the federated managed identity path for the current request, if any. + // Assertion providers can use this to scope the credential they return. + FMIPath string } // TokenProviderParameters is the authentication parameters passed to token providers diff --git a/vendor/github.com/AzureAD/microsoft-authentication-library-for-go/apps/internal/json/json.go b/vendor/github.com/AzureAD/microsoft-authentication-library-for-go/apps/internal/json/json.go index 2134e57c9e4..b0311ca6d93 100644 --- a/vendor/github.com/AzureAD/microsoft-authentication-library-for-go/apps/internal/json/json.go +++ b/vendor/github.com/AzureAD/microsoft-authentication-library-for-go/apps/internal/json/json.go @@ -58,7 +58,26 @@ func Marshal(i interface{}) ([]byte, error) { // Unmarshal unmarshals a []byte representing JSON into i, which must be a *struct. In addition, if the struct has // a field called AdditionalFields of type map[string]interface{}, JSON data representing fields not in the struct // will be written as key/value pairs to AdditionalFields. -func Unmarshal(b []byte, i interface{}) error { +// +// Any panic that escapes the underlying reflect-based decoder (for example +// "reflect: New of type that may not be allocated in heap") is recovered and +// returned as an error so that callers are not crashed by malformed or +// otherwise unexpected input. +// +// IMPORTANT: when Unmarshal returns a non-nil error, the destination i may +// have been partially populated (the decoder writes fields sequentially and a +// panic mid-decode does not roll back earlier writes). Callers that need +// all-or-nothing semantics — particularly those handling untrusted input — +// must decode into a temporary value and only copy/assign it on success. +// MSAL's own token-cache callers already follow this pattern (see +// apps/internal/base/storage.Manager.Unmarshal). +func Unmarshal(b []byte, i interface{}) (err error) { + defer func() { + if r := recover(); r != nil { + err = fmt.Errorf("json: panic during Unmarshal: %v", r) + } + }() + if len(b) == 0 { return nil } diff --git a/vendor/github.com/AzureAD/microsoft-authentication-library-for-go/apps/internal/oauth/oauth.go b/vendor/github.com/AzureAD/microsoft-authentication-library-for-go/apps/internal/oauth/oauth.go index 738a29eb9d7..9b7d3a5f4da 100644 --- a/vendor/github.com/AzureAD/microsoft-authentication-library-for-go/apps/internal/oauth/oauth.go +++ b/vendor/github.com/AzureAD/microsoft-authentication-library-for-go/apps/internal/oauth/oauth.go @@ -39,6 +39,7 @@ type AccessTokens interface { FromUserAssertionClientCertificate(ctx context.Context, authParameters authority.AuthParams, userAssertion string, assertion string) (accesstokens.TokenResponse, error) FromDeviceCodeResult(ctx context.Context, authParameters authority.AuthParams, deviceCodeResult accesstokens.DeviceCodeResult) (accesstokens.TokenResponse, error) FromSamlGrant(ctx context.Context, authParameters authority.AuthParams, samlGrant wstrust.SamlTokenInfo) (accesstokens.TokenResponse, error) + FromUserFederatedIdentityCredential(ctx context.Context, authParameters authority.AuthParams, cred *accesstokens.Credential) (accesstokens.TokenResponse, error) } // FetchAuthority will be implemented by authority.Authority. @@ -170,6 +171,17 @@ func (t *Client) OnBehalfOf(ctx context.Context, authParams authority.AuthParams return tr, nil } +// UserFederatedIdentityCredential acquires a user-scoped token using the user_fic grant type. +func (t *Client) UserFederatedIdentityCredential(ctx context.Context, authParams authority.AuthParams, cred *accesstokens.Credential) (accesstokens.TokenResponse, error) { + if err := scopeError(authParams); err != nil { + return accesstokens.TokenResponse{}, err + } + if err := t.resolveEndpoint(ctx, &authParams, ""); err != nil { + return accesstokens.TokenResponse{}, err + } + return t.AccessTokens.FromUserFederatedIdentityCredential(ctx, authParams, cred) +} + func (t *Client) Refresh(ctx context.Context, reqType accesstokens.AppType, authParams authority.AuthParams, cc *accesstokens.Credential, refreshToken accesstokens.RefreshToken) (accesstokens.TokenResponse, error) { if err := scopeError(authParams); err != nil { return accesstokens.TokenResponse{}, err diff --git a/vendor/github.com/AzureAD/microsoft-authentication-library-for-go/apps/internal/oauth/ops/accesstokens/accesstokens.go b/vendor/github.com/AzureAD/microsoft-authentication-library-for-go/apps/internal/oauth/ops/accesstokens/accesstokens.go index 481f9e43411..dc07c558d13 100644 --- a/vendor/github.com/AzureAD/microsoft-authentication-library-for-go/apps/internal/oauth/ops/accesstokens/accesstokens.go +++ b/vendor/github.com/AzureAD/microsoft-authentication-library-for-go/apps/internal/oauth/ops/accesstokens/accesstokens.go @@ -110,6 +110,7 @@ func (c *Credential) JWT(ctx context.Context, authParams authority.AuthParams) ( options := exported.AssertionRequestOptions{ ClientID: authParams.ClientID, TokenEndpoint: authParams.Endpoints.TokenEndpoint, + FMIPath: authParams.ExtraBodyParameters["fmi_path"], } return c.AssertionCallback(ctx, options) } @@ -340,6 +341,44 @@ func (c Client) FromUserAssertionClientCertificate(ctx context.Context, authPara return c.doTokenResp(ctx, authParameters, qv) } +// FromUserFederatedIdentityCredential acquires a user-scoped token using the user_fic grant type. +// This exchanges a federated identity credential for a user token. +func (c Client) FromUserFederatedIdentityCredential(ctx context.Context, authParameters authority.AuthParams, cred *Credential) (TokenResponse, error) { + if cred.Secret == "" && cred.Cert == nil && cred.AssertionCallback == nil { + return TokenResponse{}, fmt.Errorf("user_fic requires a client secret or assertion credential; token provider credentials are not supported") + } + qv := url.Values{} + if err := addClaims(qv, authParameters); err != nil { + return TokenResponse{}, err + } + qv.Set(grantType, grant.UserFIC) + qv.Set(clientID, authParameters.ClientID) + qv.Set("user_federated_identity_credential", authParameters.UserFederatedIdentityCredential) + qv.Set(clientInfo, clientInfoVal) + + // Set user identifier: either user_id (OID) or username (UPN) + if authParameters.UserObjectID != "" { + qv.Set("user_id", authParameters.UserObjectID) + } else if authParameters.Username != "" { + qv.Set("username", authParameters.Username) + } + + addScopeQueryParam(qv, authParameters) + addExtraBodyParameters(ctx, qv, authParameters) + + credParams, err := prepURLVals(ctx, cred, authParameters) + if err != nil { + return TokenResponse{}, err + } + for k, vs := range credParams { + for _, v := range vs { + qv.Set(k, v) + } + } + + return c.doTokenResp(ctx, authParameters, qv) +} + func (c Client) DeviceCodeResult(ctx context.Context, authParameters authority.AuthParams) (DeviceCodeResult, error) { qv := url.Values{} if err := addClaims(qv, authParameters); err != nil { diff --git a/vendor/github.com/AzureAD/microsoft-authentication-library-for-go/apps/internal/oauth/ops/accesstokens/tokens.go b/vendor/github.com/AzureAD/microsoft-authentication-library-for-go/apps/internal/oauth/ops/accesstokens/tokens.go index 32dde7b76b9..eeb14969746 100644 --- a/vendor/github.com/AzureAD/microsoft-authentication-library-for-go/apps/internal/oauth/ops/accesstokens/tokens.go +++ b/vendor/github.com/AzureAD/microsoft-authentication-library-for-go/apps/internal/oauth/ops/accesstokens/tokens.go @@ -292,7 +292,11 @@ func (tr *TokenResponse) CacheKey(authParams authority.AuthParams) string { if authParams.AuthorizationType == authority.ATOnBehalfOf { return authParams.AssertionHash() } - if authParams.AuthorizationType == authority.ATClientCredentials { + // An app-only (client credentials) request keys on the app-token-cache partition. + // AcquireTokenSilent overrides AuthorizationType to ATRefreshToken before the + // proactive-refresh write-back, so check IsAppTokenCache here to keep the write key + // aligned with the read key (authParams.CacheKey). See issue #630. + if authParams.AuthorizationType == authority.ATClientCredentials || authParams.IsAppTokenCache { return authParams.AppKey() } if authParams.IsConfidentialClient || authParams.AuthorizationType == authority.ATRefreshToken { diff --git a/vendor/github.com/AzureAD/microsoft-authentication-library-for-go/apps/internal/oauth/ops/authority/authority.go b/vendor/github.com/AzureAD/microsoft-authentication-library-for-go/apps/internal/oauth/ops/authority/authority.go index db6f8b42eeb..07702ef77e9 100644 --- a/vendor/github.com/AzureAD/microsoft-authentication-library-for-go/apps/internal/oauth/ops/authority/authority.go +++ b/vendor/github.com/AzureAD/microsoft-authentication-library-for-go/apps/internal/oauth/ops/authority/authority.go @@ -14,7 +14,7 @@ import ( "net/http" "net/url" "os" - "path" + "regexp" "sort" "strings" "time" @@ -29,8 +29,8 @@ const ( aadInstanceDiscoveryEndpoint = "https://%v/common/discovery/instance" tenantDiscoveryEndpointWithRegion = "https://%s.%s/%s/v2.0/.well-known/openid-configuration" regionName = "REGION_NAME" - defaultAPIVersion = "2021-10-01" - imdsEndpoint = "http://169.254.169.254/metadata/instance/compute/location?format=text&api-version=" + defaultAPIVersion + defaultAPIVersion = "2021-02-01" + imdsEndpoint = "http://169.254.169.254/metadata/instance/compute?api-version=" + defaultAPIVersion autoDetectRegion = "TryAutoDetect" AccessTokenTypeBearer = "Bearer" ) @@ -44,6 +44,9 @@ const ( loginMicrosoftOnline = defaultHost ) +// validRegion matches Azure region names: lowercase alphanumeric and hyphens only. +var validRegion = regexp.MustCompile(`^[a-z][a-z0-9-]*$`) + // jsonCaller is an interface that allows us to mock the JSONCall method. type jsonCaller interface { JSONCall(ctx context.Context, endpoint string, headers http.Header, qv url.Values, body, resp interface{}) error @@ -188,6 +191,7 @@ const ( ATRefreshToken AccountByID ATOnBehalfOf + ATUserFIC ) // These are all authority types @@ -269,6 +273,11 @@ type AuthParams struct { Capabilities ClientCapabilities // Claims required for an access token to satisfy a conditional access policy Claims string + // ClientClaims are client-originated claims set via the request-level WithClaimsFromClient option. + // Unlike Claims (server-issued challenge claims, which bypass the cache), ClientClaims participate + // in the token cache and are keyed on the raw claims string as passed by the caller. They are merged + // with Claims and Capabilities into the request's "claims" parameter. + ClientClaims string // KnownAuthorityHosts don't require metadata discovery because they're known to the user KnownAuthorityHosts []string // LoginHint is a username with which to pre-populate account selection during interactive auth @@ -283,6 +292,15 @@ type AuthParams struct { ExtraBodyParameters map[string]string // CacheKeyComponents are additional components to include in the cache key. CacheKeyComponents map[string]string + // IsAppTokenCache indicates the request targets the app-only (client credentials) + // token cache partition. It is propagated onto silent requests so the proactive-refresh + // write-back computes the same partition key as the read path, even though + // AcquireTokenSilent overrides AuthorizationType to ATRefreshToken. See issue #630. + IsAppTokenCache bool + // UserFederatedIdentityCredential is the federated credential token for user_fic flow. + UserFederatedIdentityCredential string + // UserObjectID is the target user's object ID for user_fic flow (mutually exclusive with Username). + UserObjectID string } // NewAuthParams creates an authorization parameters object. @@ -316,7 +334,11 @@ func (p AuthParams) WithTenant(ID string) (AuthParams, error) { if p.AuthorityInfo.Tenant == "consumers" { return p, errors.New(`client is configured to authenticate only personal Microsoft accounts, via the "consumers" endpoint`) } - authority = "https://" + path.Join(p.AuthorityInfo.Host, ID) + authority = (&url.URL{ + Scheme: "https", + Host: p.AuthorityInfo.Host, + Path: "/", + }).ResolveReference(&url.URL{Path: ID}).String() case ADFS: return p, errors.New("ADFS authority doesn't support tenants") case DSTS: @@ -331,9 +353,15 @@ func (p AuthParams) WithTenant(ID string) (AuthParams, error) { return p, err } -// MergeCapabilitiesAndClaims combines client capabilities and challenge claims into a value suitable for an authentication request's "claims" parameter. +// MergeCapabilitiesAndClaims combines client capabilities, server-issued challenge claims and +// client-originated claims into a value suitable for an authentication request's "claims" parameter. func (p AuthParams) MergeCapabilitiesAndClaims() (string, error) { - claims := p.Claims + // Combine server-issued claims (from WithClaims) with client-originated claims + // (from WithClaimsFromClient). When both set the same key, the client claims win. + claims, err := mergeClaims(p.Claims, p.ClientClaims) + if err != nil { + return "", err + } if len(p.Capabilities.asMap) > 0 { if claims == "" { // without claims the result is simply the capabilities @@ -357,6 +385,65 @@ func (p AuthParams) MergeCapabilitiesAndClaims() (string, error) { return claims, nil } +// mergeClaims merges two JSON claims objects into one. If either side is empty the other is returned +// verbatim and unvalidated (the common case; this keeps the value byte-for-byte identical to what the +// caller passed and mirrors MSAL .NET's MergeClaimsObjects). Only when both sides are present are they +// parsed as JSON objects (anything that is not a JSON object is an error), deep-merged with the second +// object's values winning on conflicting keys, and re-serialized. +func mergeClaims(claims1, claims2 string) (string, error) { + if claims1 == "" { + return claims2, nil + } + if claims2 == "" { + return claims1, nil + } + m1, err := parseClaimsObject(claims1) + if err != nil { + return "", err + } + m2, err := parseClaimsObject(claims2) + if err != nil { + return "", err + } + b, err := json.Marshal(deepMergeClaims(m1, m2)) + if err != nil { + return "", err + } + return string(b), nil +} + +// parseClaimsObject unmarshals a non-empty claims string into a JSON object. A value that is valid +// JSON but not an object (e.g. an array, a scalar, or the literal "null") is rejected, mirroring the +// behavior of the other MSAL libraries. +func parseClaimsObject(claims string) (map[string]any, error) { + var m map[string]any + if err := json.Unmarshal([]byte(claims), &m); err != nil { + // Don't include the parser error or the raw value in the message: claims may carry sensitive data. + return nil, errors.New("claims must be a JSON object") + } + if m == nil { + return nil, errors.New("claims must be a JSON object") + } + return m, nil +} + +// deepMergeClaims merges src into dst, with src's values winning on conflicting keys. When both +// values for a key are JSON objects the merge recurses; otherwise src's value overwrites dst's. +func deepMergeClaims(dst, src map[string]any) map[string]any { + for k, sv := range src { + if dv, ok := dst[k]; ok { + if dm, dok := dv.(map[string]any); dok { + if sm, sok := sv.(map[string]any); sok { + dst[k] = deepMergeClaims(dm, sm) + continue + } + } + } + dst[k] = sv + } + return dst +} + // merges a into b without overwriting b's values. Returns an error when a and b share a key for which either has a non-object value. func merge(a, b map[string]any) error { for k, av := range a { @@ -587,6 +674,9 @@ func (c Client) AADInstanceDiscovery(ctx context.Context, authorityInfo Info) (I region = detectRegion(ctx) } if region != "" { + if !validRegion.MatchString(region) { + return resp, fmt.Errorf("invalid region %q: region must contain only lowercase alphanumeric characters and hyphens", region) + } environment := authorityInfo.Host switch environment { case loginMicrosoft, loginWindows, loginSTSWindows, defaultHost: @@ -653,7 +743,24 @@ func detectRegion(ctx context.Context) string { if err != nil { return "" } - return string(response) + return parseRegionFromIMDSResponse(response) +} + +// imdsComputeResponse models the subset of the IMDS compute metadata response +// (http://169.254.169.254/metadata/instance/compute) used for region detection. +type imdsComputeResponse struct { + Location string `json:"location"` +} + +// parseRegionFromIMDSResponse extracts the Azure region from an IMDS compute +// metadata JSON response body. It returns an empty string when the body cannot +// be parsed or the location field is absent. +func parseRegionFromIMDSResponse(body []byte) string { + var parsed imdsComputeResponse + if err := json.Unmarshal(body, &parsed); err != nil { + return "" + } + return parsed.Location } func (a *AuthParams) CacheKey(isAppCache bool) string { @@ -663,7 +770,7 @@ func (a *AuthParams) CacheKey(isAppCache bool) string { if a.AuthorizationType == ATClientCredentials || isAppCache { return a.AppKey() } - if a.AuthorizationType == ATRefreshToken || a.AuthorizationType == AccountByID { + if a.AuthorizationType == ATRefreshToken || a.AuthorizationType == AccountByID || a.AuthorizationType == ATUserFIC { return a.HomeAccountID } return "" @@ -706,13 +813,18 @@ func (a *AuthParams) CacheExtKeyGenerator() string { } sort.Strings(keys) - // Create a string by concatenating key+value pairs - keyStr := "" + // Concatenate length-prefixed key/value pairs so the boundaries between + // components are unambiguous. A plain key+value concatenation with no + // separators can collide when a value happens to contain another component's + // key or value (client_claims, for example, is arbitrary caller-supplied + // JSON), which would map two distinct component sets to the same hash and + // return the wrong cached token. Length prefixes make the encoding injective. + var sb strings.Builder for _, key := range keys { - // Append key followed by its value with no separator - keyStr += key + a.CacheKeyComponents[key] + val := a.CacheKeyComponents[key] + fmt.Fprintf(&sb, "%d:%s%d:%s", len(key), key, len(val), val) } - hash := sha256.Sum256([]byte(keyStr)) + hash := sha256.Sum256([]byte(sb.String())) return strings.ToLower(base64.RawURLEncoding.EncodeToString(hash[:])) } diff --git a/vendor/github.com/AzureAD/microsoft-authentication-library-for-go/apps/internal/oauth/ops/authority/authorizetype_string.go b/vendor/github.com/AzureAD/microsoft-authentication-library-for-go/apps/internal/oauth/ops/authority/authorizetype_string.go index 10039773b06..7d93930ccc5 100644 --- a/vendor/github.com/AzureAD/microsoft-authentication-library-for-go/apps/internal/oauth/ops/authority/authorizetype_string.go +++ b/vendor/github.com/AzureAD/microsoft-authentication-library-for-go/apps/internal/oauth/ops/authority/authorizetype_string.go @@ -16,15 +16,19 @@ func _() { _ = x[ATClientCredentials-5] _ = x[ATDeviceCode-6] _ = x[ATRefreshToken-7] + _ = x[AccountByID-8] + _ = x[ATOnBehalfOf-9] + _ = x[ATUserFIC-10] } -const _AuthorizeType_name = "ATUnknownATUsernamePasswordATWindowsIntegratedATAuthCodeATInteractiveATClientCredentialsATDeviceCodeATRefreshToken" +const _AuthorizeType_name = "ATUnknownATUsernamePasswordATWindowsIntegratedATAuthCodeATInteractiveATClientCredentialsATDeviceCodeATRefreshTokenAccountByIDATOnBehalfOfATUserFIC" -var _AuthorizeType_index = [...]uint8{0, 9, 27, 46, 56, 69, 88, 100, 114} +var _AuthorizeType_index = [...]uint8{0, 9, 27, 46, 56, 69, 88, 100, 114, 125, 137, 146} func (i AuthorizeType) String() string { - if i < 0 || i >= AuthorizeType(len(_AuthorizeType_index)-1) { + idx := int(i) - 0 + if i < 0 || idx >= len(_AuthorizeType_index)-1 { return "AuthorizeType(" + strconv.FormatInt(int64(i), 10) + ")" } - return _AuthorizeType_name[_AuthorizeType_index[i]:_AuthorizeType_index[i+1]] + return _AuthorizeType_name[_AuthorizeType_index[idx]:_AuthorizeType_index[idx+1]] } diff --git a/vendor/github.com/AzureAD/microsoft-authentication-library-for-go/apps/internal/oauth/ops/internal/grant/grant.go b/vendor/github.com/AzureAD/microsoft-authentication-library-for-go/apps/internal/oauth/ops/internal/grant/grant.go index b628f61ac08..f09bff390a1 100644 --- a/vendor/github.com/AzureAD/microsoft-authentication-library-for-go/apps/internal/oauth/ops/internal/grant/grant.go +++ b/vendor/github.com/AzureAD/microsoft-authentication-library-for-go/apps/internal/oauth/ops/internal/grant/grant.go @@ -14,4 +14,5 @@ const ( RefreshToken = "refresh_token" ClientCredential = "client_credentials" ClientAssertion = "urn:ietf:params:oauth:client-assertion-type:jwt-bearer" + UserFIC = "user_fic" ) diff --git a/vendor/github.com/AzureAD/microsoft-authentication-library-for-go/apps/internal/oauth/resolvers.go b/vendor/github.com/AzureAD/microsoft-authentication-library-for-go/apps/internal/oauth/resolvers.go index d220a99466c..92170a76288 100644 --- a/vendor/github.com/AzureAD/microsoft-authentication-library-for-go/apps/internal/oauth/resolvers.go +++ b/vendor/github.com/AzureAD/microsoft-authentication-library-for-go/apps/internal/oauth/resolvers.go @@ -16,6 +16,7 @@ import ( "github.com/AzureAD/microsoft-authentication-library-for-go/apps/internal/oauth/ops" "github.com/AzureAD/microsoft-authentication-library-for-go/apps/internal/oauth/ops/authority" + "golang.org/x/sync/singleflight" ) type cacheEntry struct { @@ -35,6 +36,8 @@ type authorityEndpoint struct { mu sync.Mutex cache map[string]cacheEntry + + resolveGroup singleflight.Group } // newAuthorityEndpoint is the constructor for AuthorityEndpoint. @@ -50,35 +53,49 @@ func (m *authorityEndpoint) ResolveEndpoints(ctx context.Context, authorityInfo return endpoints, nil } - endpoint, err := m.openIDConfigurationEndpoint(ctx, authorityInfo) - if err != nil { - return authority.Endpoints{}, err - } + key := authorityInfo.CanonicalAuthorityURI + v, err, _ := m.resolveGroup.Do(key, func() (interface{}, error) { + // Double-check inside the singleflight group: another goroutine may + // have populated the cache while we were waiting. + if endpoints, found := m.cachedEndpoints(authorityInfo, userPrincipalName); found { + return endpoints, nil + } - resp, err := m.rest.Authority().GetTenantDiscoveryResponse(ctx, endpoint) - if err != nil { - return authority.Endpoints{}, err - } - if err := resp.Validate(); err != nil { - return authority.Endpoints{}, fmt.Errorf("ResolveEndpoints(): %w", err) - } + endpoint, err := m.openIDConfigurationEndpoint(ctx, authorityInfo) + if err != nil { + return authority.Endpoints{}, err + } + + resp, err := m.rest.Authority().GetTenantDiscoveryResponse(ctx, endpoint) + if err != nil { + return authority.Endpoints{}, err + } + if err := resp.Validate(); err != nil { + return authority.Endpoints{}, fmt.Errorf("ResolveEndpoints(): %w", err) + } - tenant := authorityInfo.Tenant + tenant := authorityInfo.Tenant - endpoints := authority.NewEndpoints( - strings.Replace(resp.AuthorizationEndpoint, "{tenant}", tenant, -1), - strings.Replace(resp.TokenEndpoint, "{tenant}", tenant, -1), - strings.Replace(resp.Issuer, "{tenant}", tenant, -1), - authorityInfo.Host) + endpoints := authority.NewEndpoints( + strings.Replace(resp.AuthorizationEndpoint, "{tenant}", tenant, -1), + strings.Replace(resp.TokenEndpoint, "{tenant}", tenant, -1), + strings.Replace(resp.Issuer, "{tenant}", tenant, -1), + authorityInfo.Host) - m.addCachedEndpoints(authorityInfo, userPrincipalName, endpoints) + aliases := m.addCachedEndpoints(authorityInfo, userPrincipalName, endpoints) - if err := resp.ValidateIssuerMatchesAuthority(authorityInfo.CanonicalAuthorityURI, - m.cache[authorityInfo.CanonicalAuthorityURI].Aliases); err != nil { - return authority.Endpoints{}, fmt.Errorf("ResolveEndpoints(): %w", err) + if err := resp.ValidateIssuerMatchesAuthority(authorityInfo.CanonicalAuthorityURI, + aliases); err != nil { + return authority.Endpoints{}, fmt.Errorf("ResolveEndpoints(): %w", err) + } + + return endpoints, nil + }) + if err != nil { + return authority.Endpoints{}, err } - return endpoints, nil + return v.(authority.Endpoints), nil } // cachedEndpoints returns the cached endpoints if they exist. If not, we return false. @@ -100,7 +117,7 @@ func (m *authorityEndpoint) cachedEndpoints(authorityInfo authority.Info, userPr return authority.Endpoints{}, false } -func (m *authorityEndpoint) addCachedEndpoints(authorityInfo authority.Info, userPrincipalName string, endpoints authority.Endpoints) { +func (m *authorityEndpoint) addCachedEndpoints(authorityInfo authority.Info, userPrincipalName string, endpoints authority.Endpoints) map[string]bool { m.mu.Lock() defer m.mu.Unlock() @@ -128,6 +145,7 @@ func (m *authorityEndpoint) addCachedEndpoints(authorityInfo authority.Info, use } m.cache[authorityInfo.CanonicalAuthorityURI] = updatedCacheEntry + return updatedCacheEntry.Aliases } func (m *authorityEndpoint) openIDConfigurationEndpoint(ctx context.Context, authorityInfo authority.Info) (string, error) { diff --git a/vendor/github.com/AzureAD/microsoft-authentication-library-for-go/apps/internal/version/version.go b/vendor/github.com/AzureAD/microsoft-authentication-library-for-go/apps/internal/version/version.go index 40da7d5d1e3..d19d8376a2f 100644 --- a/vendor/github.com/AzureAD/microsoft-authentication-library-for-go/apps/internal/version/version.go +++ b/vendor/github.com/AzureAD/microsoft-authentication-library-for-go/apps/internal/version/version.go @@ -8,4 +8,4 @@ package version const SKU = "MSAL.Go" // Version is the version of this client package that is communicated to the server. -const Version = "1.7.2" +const Version = "1.8.0" diff --git a/vendor/github.com/aws/aws-sdk-go-v2/aws/go_module_metadata.go b/vendor/github.com/aws/aws-sdk-go-v2/aws/go_module_metadata.go index dfcdf5f8f53..cd8dfbc25d2 100644 --- a/vendor/github.com/aws/aws-sdk-go-v2/aws/go_module_metadata.go +++ b/vendor/github.com/aws/aws-sdk-go-v2/aws/go_module_metadata.go @@ -3,4 +3,4 @@ package aws // goModuleVersion is the tagged release for this module -const goModuleVersion = "1.43.6" +const goModuleVersion = "1.47.0" diff --git a/vendor/github.com/aws/aws-sdk-go-v2/aws/retry/middleware.go b/vendor/github.com/aws/aws-sdk-go-v2/aws/retry/middleware.go index 126dcf47bd7..3b7e08b91e5 100644 --- a/vendor/github.com/aws/aws-sdk-go-v2/aws/retry/middleware.go +++ b/vendor/github.com/aws/aws-sdk-go-v2/aws/retry/middleware.go @@ -93,6 +93,9 @@ func (r Attempt) logf(logger logging.Logger, classification logging.Classificati func (r *Attempt) HandleFinalize(ctx context.Context, in smithymiddle.FinalizeInput, next smithymiddle.FinalizeHandler) ( out smithymiddle.FinalizeOutput, metadata smithymiddle.Metadata, err error, ) { + ctx, span := tracing.StartSpan(ctx, "RetryLoop") + defer span.End() + var attemptClockSkew time.Duration if !r.DisableClockSkewCorrection && r.ClientSkew != nil { attemptClockSkew = time.Duration(r.ClientSkew.Load()) @@ -226,6 +229,11 @@ func (r *Attempt) handleAttempt( service, operation, attemptNum) } + // Not an error for other transports: they have no header to set. + if req, ok := in.Request.(*http.Request); ok { + setRetryMetricsHeader(ctx, req) + } + var metadata smithymiddle.Metadata out, metadata, err = next.HandleFinalize(ctx, in) attemptResult.ResponseMetadata = metadata @@ -386,14 +394,22 @@ func absDuration(d time.Duration) time.Duration { } // MetricsHeader attaches SDK request metric header for retries to the transport +// +// Deprecated: AWS service clients no longer use this middleware. The +// Amz-Sdk-Request header is set by the Attempt middleware, which already holds +// the retry metadata the header describes. type MetricsHeader struct{} // ID returns the middleware identifier +// +// Deprecated: MetricsHeader is deprecated. func (r *MetricsHeader) ID() string { return "RetryMetricsHeader" } // HandleFinalize attaches the SDK request metric header to the transport layer +// +// Deprecated: MetricsHeader is deprecated. func (r MetricsHeader) HandleFinalize(ctx context.Context, in smithymiddle.FinalizeInput, next smithymiddle.FinalizeHandler) ( out smithymiddle.FinalizeOutput, metadata smithymiddle.Metadata, err error, ) { @@ -429,6 +445,34 @@ func (r MetricsHeader) HandleFinalize(ctx context.Context, in smithymiddle.Final return next.HandleFinalize(ctx, in) } +// setRetryMetricsHeader sets the Amz-Sdk-Request header from the retry metadata +// on the context. +func setRetryMetricsHeader(ctx context.Context, req *http.Request) { + retryMetadata, _ := getRetryMetadata(ctx) + + const retryMetricHeader = "Amz-Sdk-Request" + var parts []string + + parts = append(parts, "attempt="+strconv.Itoa(retryMetadata.AttemptNum)) + if retryMetadata.MaxAttempts != 0 { + parts = append(parts, "max="+strconv.Itoa(retryMetadata.MaxAttempts)) + } + + var ttl time.Time + if deadline, ok := ctx.Deadline(); ok { + ttl = deadline + } + + // Only append the TTL if it can be determined. + if !ttl.IsZero() && retryMetadata.AttemptClockSkew > 0 { + const unixTimeFormat = "20060102T150405Z" + ttl = ttl.Add(retryMetadata.AttemptClockSkew) + parts = append(parts, "ttl="+ttl.Format(unixTimeFormat)) + } + + req.Header[retryMetricHeader] = append(req.Header[retryMetricHeader][:0], strings.Join(parts, "; ")) +} + type retryMetadataKey struct{} // getRetryMetadata retrieves retryMetadata from the context and a bool @@ -471,9 +515,6 @@ func AddRetryMiddlewares(stack *smithymiddle.Stack, options AddRetryMiddlewaresO return err } - if err := stack.Finalize.Insert(&MetricsHeader{}, attempt.ID(), smithymiddle.After); err != nil { - return err - } return nil } diff --git a/vendor/github.com/aws/aws-sdk-go-v2/aws/signer/internal/v4/headers.go b/vendor/github.com/aws/aws-sdk-go-v2/aws/signer/internal/v4/headers.go index d99b32ceb07..0b9ddd13ba3 100644 --- a/vendor/github.com/aws/aws-sdk-go-v2/aws/signer/internal/v4/headers.go +++ b/vendor/github.com/aws/aws-sdk-go-v2/aws/signer/internal/v4/headers.go @@ -58,6 +58,10 @@ var RequiredSignedHeaders = Rules{ "X-Amz-Tagging": struct{}{}, }, }, + InclusiveRules{ + Patterns{"X-Amz-Checksum-"}, + ExcludeList{Patterns{"X-Amz-Checksum-Mode"}}, + }, Patterns{"X-Amz-Object-Lock-"}, Patterns{"X-Amz-Meta-"}, } diff --git a/vendor/github.com/aws/aws-sdk-go-v2/aws/transport/http/client.go b/vendor/github.com/aws/aws-sdk-go-v2/aws/transport/http/client.go index 94094ec2cdb..50b7417c28a 100644 --- a/vendor/github.com/aws/aws-sdk-go-v2/aws/transport/http/client.go +++ b/vendor/github.com/aws/aws-sdk-go-v2/aws/transport/http/client.go @@ -62,6 +62,7 @@ type BuildableClient struct { initOnce sync.Once clientTimeout time.Duration + readTimeout *time.Duration client *http.Client } @@ -96,9 +97,12 @@ func (b *BuildableClient) Freeze() aws.HTTPClient { } func (b *BuildableClient) build() { + tr := b.GetTransport() + b.installReadTimeout(tr) + b.client = wrapWithLimitedRedirect(&http.Client{ Timeout: b.clientTimeout, - Transport: b.GetTransport(), + Transport: tr, }) } @@ -107,6 +111,7 @@ func (b *BuildableClient) clone() *BuildableClient { cpy.transport = b.GetTransport() cpy.dialer = b.GetDialer() cpy.clientTimeout = b.clientTimeout + cpy.readTimeout = b.readTimeout return cpy } @@ -155,6 +160,25 @@ func (b *BuildableClient) WithTimeout(timeout time.Duration) *BuildableClient { return cpy } +// WithReadTimeout copies the BuildableClient and returns it with the read +// timeout set. +// +// The timeout is the maximum time the client waits for a connection to deliver +// any data. It resets on every byte received, so a slow but progressing response +// does not fail. It is not a deadline on the operation; use WithTimeout for that. +// +// A value set here takes precedence over the SDK's defaults for every service +// this client is used with, including services the SDK would otherwise apply a +// higher value to or exempt entirely. Pass 0 to disable read timeouts. +// +// The timeout is applied per connection, so a client shared between service +// clients applies the same value to all of them. +func (b *BuildableClient) WithReadTimeout(timeout time.Duration) *BuildableClient { + cpy := b.clone() + cpy.readTimeout = &timeout + return cpy +} + // GetTransport returns a copy of the client's HTTP Transport. func (b *BuildableClient) GetTransport() *http.Transport { var tr *http.Transport @@ -184,6 +208,17 @@ func (b *BuildableClient) GetTimeout() time.Duration { return b.clientTimeout } +// GetReadTimeout returns the configured read timeout and whether one was set on +// this client. When it was not, the SDK resolves a default per +// service. +func (b *BuildableClient) GetReadTimeout() (time.Duration, bool) { + if b.readTimeout == nil { + return 0, false + } + + return *b.readTimeout, true +} + func defaultDialer() *net.Dialer { return &net.Dialer{ Timeout: DefaultDialConnectTimeout, diff --git a/vendor/github.com/aws/aws-sdk-go-v2/aws/transport/http/timeouts.go b/vendor/github.com/aws/aws-sdk-go-v2/aws/transport/http/timeouts.go new file mode 100644 index 00000000000..fbd23ef9712 --- /dev/null +++ b/vendor/github.com/aws/aws-sdk-go-v2/aws/transport/http/timeouts.go @@ -0,0 +1,54 @@ +package http + +import ( + "context" + "errors" + "net" + "net/http" + "os" + "time" +) + +// deadlineConn applies a rolling inactivity window to reads on a connection by +// resetting the read deadline before each one. A read returns as soon as any +// bytes are available, so a slow but progressing transfer survives, and a +// connection that goes silent fails once. +type deadlineConn struct { + net.Conn + timeout time.Duration +} + +// Read implements [io.Reader]. +func (c *deadlineConn) Read(p []byte) (int, error) { + if err := c.Conn.SetReadDeadline(time.Now().Add(c.timeout)); err != nil { + return 0, err + } + + n, err := c.Conn.Read(p) + if errors.Is(err, os.ErrDeadlineExceeded) { + return n, &ResponseTimeoutError{TimeoutDur: c.timeout} + } + + return n, err +} + +func (b *BuildableClient) installReadTimeout(tr *http.Transport) { + timeout, ok := b.GetReadTimeout() + if !ok || timeout <= 0 { + return + } + + dial := tr.DialContext + if dial == nil { + dial = defaultDialer().DialContext + } + + tr.DialContext = func(ctx context.Context, network, addr string) (net.Conn, error) { + conn, err := dial(ctx, network, addr) + if err != nil { + return nil, err + } + + return &deadlineConn{Conn: conn, timeout: timeout}, nil + } +} diff --git a/vendor/github.com/aws/aws-sdk-go-v2/internal/configsources/CHANGELOG.md b/vendor/github.com/aws/aws-sdk-go-v2/internal/configsources/CHANGELOG.md index e920b6d94c9..613d88e02e7 100644 --- a/vendor/github.com/aws/aws-sdk-go-v2/internal/configsources/CHANGELOG.md +++ b/vendor/github.com/aws/aws-sdk-go-v2/internal/configsources/CHANGELOG.md @@ -1,3 +1,34 @@ +# v1.5.3 (2026-09-09) + +* **Dependency Update**: Updated to the latest SDK module versions + +# v1.5.2 (2026-09-04) + +* **Dependency Update**: Updated to the latest SDK module versions + +# v1.5.1 (2026-08-28) + +* **Dependency Update**: Updated to the latest SDK module versions + +# v1.5.0 (2026-08-27) + +* **Feature**: Support connection read timeouts in the SDK. This is currently available on an opt-in basis by setting env `AWS_ENABLE_DEFAULT_SOCKET_TIMEOUT_2026=true`. +* **Dependency Update**: Updated to the latest SDK module versions + +# v1.4.40 (2026-08-26) + +* **Dependency Update**: Update to smithy-go v1.28.0. +* **Dependency Update**: Updated to the latest SDK module versions + +# v1.4.39 (2026-08-25) + +* **Dependency Update**: Update to smithy-go v1.27.10. +* **Dependency Update**: Updated to the latest SDK module versions + +# v1.4.38 (2026-08-20) + +* **Dependency Update**: Updated to the latest SDK module versions + # v1.4.37 (2026-08-14) * **Dependency Update**: Update to smithy-go v1.27.8. diff --git a/vendor/github.com/aws/aws-sdk-go-v2/internal/configsources/go_module_metadata.go b/vendor/github.com/aws/aws-sdk-go-v2/internal/configsources/go_module_metadata.go index 12426cc3875..7f07b47820b 100644 --- a/vendor/github.com/aws/aws-sdk-go-v2/internal/configsources/go_module_metadata.go +++ b/vendor/github.com/aws/aws-sdk-go-v2/internal/configsources/go_module_metadata.go @@ -3,4 +3,4 @@ package configsources // goModuleVersion is the tagged release for this module -const goModuleVersion = "1.4.37" +const goModuleVersion = "1.5.3" diff --git a/vendor/github.com/aws/aws-sdk-go-v2/internal/endpoints/v2/CHANGELOG.md b/vendor/github.com/aws/aws-sdk-go-v2/internal/endpoints/v2/CHANGELOG.md index 1f444f7d267..446a0cc85ab 100644 --- a/vendor/github.com/aws/aws-sdk-go-v2/internal/endpoints/v2/CHANGELOG.md +++ b/vendor/github.com/aws/aws-sdk-go-v2/internal/endpoints/v2/CHANGELOG.md @@ -1,3 +1,34 @@ +# v2.8.3 (2026-09-09) + +* **Dependency Update**: Updated to the latest SDK module versions + +# v2.8.2 (2026-09-04) + +* **Dependency Update**: Updated to the latest SDK module versions + +# v2.8.1 (2026-08-28) + +* **Dependency Update**: Updated to the latest SDK module versions + +# v2.8.0 (2026-08-27) + +* **Feature**: Support connection read timeouts in the SDK. This is currently available on an opt-in basis by setting env `AWS_ENABLE_DEFAULT_SOCKET_TIMEOUT_2026=true`. +* **Dependency Update**: Updated to the latest SDK module versions + +# v2.7.40 (2026-08-26) + +* **Dependency Update**: Update to smithy-go v1.28.0. +* **Dependency Update**: Updated to the latest SDK module versions + +# v2.7.39 (2026-08-25) + +* **Dependency Update**: Update to smithy-go v1.27.10. +* **Dependency Update**: Updated to the latest SDK module versions + +# v2.7.38 (2026-08-20) + +* **Dependency Update**: Updated to the latest SDK module versions + # v2.7.37 (2026-08-14) * **Dependency Update**: Update to smithy-go v1.27.8. diff --git a/vendor/github.com/aws/aws-sdk-go-v2/internal/endpoints/v2/go_module_metadata.go b/vendor/github.com/aws/aws-sdk-go-v2/internal/endpoints/v2/go_module_metadata.go index 3990207edb3..5d26e7beccc 100644 --- a/vendor/github.com/aws/aws-sdk-go-v2/internal/endpoints/v2/go_module_metadata.go +++ b/vendor/github.com/aws/aws-sdk-go-v2/internal/endpoints/v2/go_module_metadata.go @@ -3,4 +3,4 @@ package endpoints // goModuleVersion is the tagged release for this module -const goModuleVersion = "2.7.37" +const goModuleVersion = "2.8.3" diff --git a/vendor/github.com/aws/aws-sdk-go-v2/internal/timeouts/awsinternal.go b/vendor/github.com/aws/aws-sdk-go-v2/internal/timeouts/awsinternal.go new file mode 100644 index 00000000000..7967f709130 --- /dev/null +++ b/vendor/github.com/aws/aws-sdk-go-v2/internal/timeouts/awsinternal.go @@ -0,0 +1,6 @@ +package timeouts + +// Enabled internally. +var enableReadTimeout2026 = false + +var readTimeout2026Rollout map[string]bool diff --git a/vendor/github.com/aws/aws-sdk-go-v2/internal/timeouts/timeouts.go b/vendor/github.com/aws/aws-sdk-go-v2/internal/timeouts/timeouts.go new file mode 100644 index 00000000000..626f29c9255 --- /dev/null +++ b/vendor/github.com/aws/aws-sdk-go-v2/internal/timeouts/timeouts.go @@ -0,0 +1,39 @@ +package timeouts + +import ( + "os" + "sync" + "time" +) + +// DefaultReadTimeout is the SDK's default read timeout for a service with no +// entry in serviceInactivityTimeoutMillis. +const DefaultReadTimeout = 5 * time.Minute + +const enableReadTimeoutEnvVar = "AWS_ENABLE_DEFAULT_SOCKET_TIMEOUT_2026" + +var enableFromEnv = sync.OnceValue(func() bool { + return os.Getenv(enableReadTimeoutEnvVar) == "true" +}) + +// GetServiceReadTimeout reports the SDK's default read timeout for a service, +// and whether one applies. +func GetServiceReadTimeout(serviceID string) (time.Duration, bool) { + if enableReadTimeout2026 { + if !readTimeout2026Rollout[serviceID] { + return 0, false + } + } else if !enableFromEnv() { + return 0, false + } + + ms, ok := serviceInactivityTimeoutMillis[serviceID] + if !ok { + return DefaultReadTimeout, true + } + if ms < 0 { + return 0, false + } + + return time.Duration(ms) * time.Millisecond, true +} diff --git a/vendor/github.com/aws/aws-sdk-go-v2/internal/timeouts/timeouts_services.go b/vendor/github.com/aws/aws-sdk-go-v2/internal/timeouts/timeouts_services.go new file mode 100644 index 00000000000..216a5895aad --- /dev/null +++ b/vendor/github.com/aws/aws-sdk-go-v2/internal/timeouts/timeouts_services.go @@ -0,0 +1,102 @@ +// Code generated from the connection read timeout risk mitigation +// document's exemption table. DO NOT EDIT. + +package timeouts + +// serviceInactivityTimeoutMillis overrides the default read timeout for +// services whose operations legitimately hold a connection open, keyed by +// ServiceID. A negative value means the service is fully exempt and gets no +// timeout. +// +// Services absent from this map get DefaultReadTimeout. +var serviceInactivityTimeoutMillis = map[string]int64{ + // Fully exempt: an operation takes an event stream or a streaming blob as + // input. The caller controls how long the request takes, and no response + // arrives until it finishes, so a read timeout would fire on the duration of + // the caller's own upload rather than on a network problem. + "Bedrock Runtime": -1, + "CloudSearch Domain": -1, + "ConnectHealth": -1, + "EBS": -1, + "Glacier": -1, + "Lambda": -1, + "Lex Runtime Service": -1, + "Lex Runtime V2": -1, + "MediaStore Data": -1, + "Omics": -1, + "Polly": -1, + "QBusiness": -1, + "S3": -1, + "SageMaker Runtime HTTP2": -1, + "Transcribe Streaming": -1, + "codeartifact": -1, + + // Long-hold operations: a higher ceiling rather than no ceiling. + "API Gateway": 900000, + "ApiGatewayV2": 900000, + "AppIntegrations": 900000, + "AppStream": 900000, + "Athena": 900000, + "Auto Scaling": 900000, + "Batch": 900000, + "Bedrock": 900000, + "Bedrock Agent": 900000, + "Bedrock Agent Runtime": 900000, + "Bedrock AgentCore": 900000, + "Bedrock AgentCore Control": 900000, + "Bedrock Data Automation Runtime": 900000, + "CloudFormation": 900000, + "CloudWatch": 900000, + "CodeBuild": 900000, + "CodeCatalyst": 900000, + "CodeDeploy": 900000, + "Config Service": 900000, + "Connect": 900000, + "Data Pipeline": 900000, + "DataBrew": 900000, + "DataExchange": 900000, + "DataZone": 900000, + "Device Farm": 900000, + "EC2": 900000, + "ECS": 900000, + "EMR Serverless": 900000, + "Elastic Load Balancing v2": 900000, + "GameLift": 900000, + "GameLiftStreams": 900000, + "Glue": 900000, + "IoT": 900000, + "IoT Data Plane": 900000, + "IoT Jobs Data Plane": 900000, + "IoTSecureTunneling": 900000, + "Kinesis": 900000, + "Kinesis Analytics V2": 900000, + "Kinesis Video Archived Media": 900000, + "Kinesis Video Media": 900000, + "Kinesis Video Signaling": 900000, + "Kinesis Video WebRTC Storage": 900000, + "Lex Model Building Service": 900000, + "Lex Models V2": 900000, + "Neptune Graph": 900000, + "Nova Act": 900000, + "QApps": 900000, + "QConnect": 900000, + "QuickSight": 900000, + "RDS": 900000, + "RDS Data": 900000, + "RTBFabric": 900000, + "SFN": 900000, + "SQS": 900000, + "SSM": 900000, + "SWF": 900000, + "SageMaker": 900000, + "SageMaker Runtime": 900000, + "SagemakerJobRuntime": 900000, + "Storage Gateway": 900000, + "Timestream Query": 900000, + "Wisdom": 900000, + "WorkSpaces": 900000, + "WorkSpaces Web": 900000, + "b2bi": 900000, + "mgn": 900000, + "neptunedata": 900000, +} diff --git a/vendor/github.com/aws/aws-sdk-go-v2/internal/v4a/CHANGELOG.md b/vendor/github.com/aws/aws-sdk-go-v2/internal/v4a/CHANGELOG.md index 4f576aa2189..4900beadd56 100644 --- a/vendor/github.com/aws/aws-sdk-go-v2/internal/v4a/CHANGELOG.md +++ b/vendor/github.com/aws/aws-sdk-go-v2/internal/v4a/CHANGELOG.md @@ -1,3 +1,34 @@ +# v1.5.3 (2026-09-09) + +* **Dependency Update**: Updated to the latest SDK module versions + +# v1.5.2 (2026-09-04) + +* **Dependency Update**: Updated to the latest SDK module versions + +# v1.5.1 (2026-08-28) + +* **Dependency Update**: Updated to the latest SDK module versions + +# v1.5.0 (2026-08-27) + +* **Feature**: Support connection read timeouts in the SDK. This is currently available on an opt-in basis by setting env `AWS_ENABLE_DEFAULT_SOCKET_TIMEOUT_2026=true`. +* **Dependency Update**: Updated to the latest SDK module versions + +# v1.4.41 (2026-08-26) + +* **Dependency Update**: Update to smithy-go v1.28.0. +* **Dependency Update**: Updated to the latest SDK module versions + +# v1.4.40 (2026-08-25) + +* **Dependency Update**: Update to smithy-go v1.27.10. +* **Dependency Update**: Updated to the latest SDK module versions + +# v1.4.39 (2026-08-20) + +* **Dependency Update**: Updated to the latest SDK module versions + # v1.4.38 (2026-08-14) * **Dependency Update**: Update to smithy-go v1.27.8. diff --git a/vendor/github.com/aws/aws-sdk-go-v2/internal/v4a/go_module_metadata.go b/vendor/github.com/aws/aws-sdk-go-v2/internal/v4a/go_module_metadata.go index f0ad2caf2de..dc8e2090879 100644 --- a/vendor/github.com/aws/aws-sdk-go-v2/internal/v4a/go_module_metadata.go +++ b/vendor/github.com/aws/aws-sdk-go-v2/internal/v4a/go_module_metadata.go @@ -3,4 +3,4 @@ package v4a // goModuleVersion is the tagged release for this module -const goModuleVersion = "1.4.38" +const goModuleVersion = "1.5.3" diff --git a/vendor/github.com/aws/aws-sdk-go-v2/service/internal/accept-encoding/CHANGELOG.md b/vendor/github.com/aws/aws-sdk-go-v2/service/internal/accept-encoding/CHANGELOG.md index bdb3895e832..6723895d1a0 100644 --- a/vendor/github.com/aws/aws-sdk-go-v2/service/internal/accept-encoding/CHANGELOG.md +++ b/vendor/github.com/aws/aws-sdk-go-v2/service/internal/accept-encoding/CHANGELOG.md @@ -1,3 +1,11 @@ +# v1.13.19 (2026-08-26) + +* **Dependency Update**: Update to smithy-go v1.28.0. + +# v1.13.18 (2026-08-25) + +* **Dependency Update**: Update to smithy-go v1.27.10. + # v1.13.17 (2026-08-14) * **Dependency Update**: Update to smithy-go v1.27.8. diff --git a/vendor/github.com/aws/aws-sdk-go-v2/service/internal/accept-encoding/go_module_metadata.go b/vendor/github.com/aws/aws-sdk-go-v2/service/internal/accept-encoding/go_module_metadata.go index 7c31cf92ee4..f5bc392a462 100644 --- a/vendor/github.com/aws/aws-sdk-go-v2/service/internal/accept-encoding/go_module_metadata.go +++ b/vendor/github.com/aws/aws-sdk-go-v2/service/internal/accept-encoding/go_module_metadata.go @@ -3,4 +3,4 @@ package acceptencoding // goModuleVersion is the tagged release for this module -const goModuleVersion = "1.13.17" +const goModuleVersion = "1.13.19" diff --git a/vendor/github.com/aws/aws-sdk-go-v2/service/internal/presigned-url/CHANGELOG.md b/vendor/github.com/aws/aws-sdk-go-v2/service/internal/presigned-url/CHANGELOG.md index 2886a705e0c..3e6ab8f020d 100644 --- a/vendor/github.com/aws/aws-sdk-go-v2/service/internal/presigned-url/CHANGELOG.md +++ b/vendor/github.com/aws/aws-sdk-go-v2/service/internal/presigned-url/CHANGELOG.md @@ -1,3 +1,34 @@ +# v1.14.3 (2026-09-09) + +* **Dependency Update**: Updated to the latest SDK module versions + +# v1.14.2 (2026-09-04) + +* **Dependency Update**: Updated to the latest SDK module versions + +# v1.14.1 (2026-08-28) + +* **Dependency Update**: Updated to the latest SDK module versions + +# v1.14.0 (2026-08-27) + +* **Feature**: Support connection read timeouts in the SDK. This is currently available on an opt-in basis by setting env `AWS_ENABLE_DEFAULT_SOCKET_TIMEOUT_2026=true`. +* **Dependency Update**: Updated to the latest SDK module versions + +# v1.13.40 (2026-08-26) + +* **Dependency Update**: Update to smithy-go v1.28.0. +* **Dependency Update**: Updated to the latest SDK module versions + +# v1.13.39 (2026-08-25) + +* **Dependency Update**: Update to smithy-go v1.27.10. +* **Dependency Update**: Updated to the latest SDK module versions + +# v1.13.38 (2026-08-20) + +* **Dependency Update**: Updated to the latest SDK module versions + # v1.13.37 (2026-08-14) * **Dependency Update**: Update to smithy-go v1.27.8. diff --git a/vendor/github.com/aws/aws-sdk-go-v2/service/internal/presigned-url/go_module_metadata.go b/vendor/github.com/aws/aws-sdk-go-v2/service/internal/presigned-url/go_module_metadata.go index 9ed94b8e2ef..1112596ff9a 100644 --- a/vendor/github.com/aws/aws-sdk-go-v2/service/internal/presigned-url/go_module_metadata.go +++ b/vendor/github.com/aws/aws-sdk-go-v2/service/internal/presigned-url/go_module_metadata.go @@ -3,4 +3,4 @@ package presignedurl // goModuleVersion is the tagged release for this module -const goModuleVersion = "1.13.37" +const goModuleVersion = "1.14.3" diff --git a/vendor/github.com/aws/aws-sdk-go-v2/service/sts/CHANGELOG.md b/vendor/github.com/aws/aws-sdk-go-v2/service/sts/CHANGELOG.md index 33bbd24cfb6..f30d0308e26 100644 --- a/vendor/github.com/aws/aws-sdk-go-v2/service/sts/CHANGELOG.md +++ b/vendor/github.com/aws/aws-sdk-go-v2/service/sts/CHANGELOG.md @@ -1,3 +1,41 @@ +# v1.50.0 (2026-09-09) + +* **Feature**: Stop registering the `retry.MetricsHeader` middleware in generated clients. The `Amz-Sdk-Request` header is now set by the retry middleware itself. +* **Dependency Update**: Updated to the latest SDK module versions + +# v1.49.0 (2026-09-04) + +* **Feature**: Stop registering the `spanRetryLoop` middleware in generated clients. The retry loop's tracing span is now opened by the retry middleware itself. +* **Dependency Update**: Updated to the latest SDK module versions + +# v1.48.0 (2026-08-31.2) + +* **Feature**: Stop registering the `SetCredentialSourceMiddleware` middleware in generated clients. Credential source user agent features are now set when the client's middleware stack is constructed. + +# v1.47.1 (2026-08-28) + +* **Dependency Update**: Updated to the latest SDK module versions + +# v1.47.0 (2026-08-27) + +* **Feature**: Support connection read timeouts in the SDK. This is currently available on an opt-in basis by setting env `AWS_ENABLE_DEFAULT_SOCKET_TIMEOUT_2026=true`. +* **Dependency Update**: Updated to the latest SDK module versions + +# v1.46.0 (2026-08-26) + +* **Feature**: Stop registering the `ComputeContentLength` middleware in generated clients. `Content-Length` is now set when the request body is set via `SetStream`. +* **Dependency Update**: Update to smithy-go v1.28.0. +* **Dependency Update**: Updated to the latest SDK module versions + +# v1.45.8 (2026-08-25) + +* **Dependency Update**: Update to smithy-go v1.27.10. +* **Dependency Update**: Updated to the latest SDK module versions + +# v1.45.7 (2026-08-20) + +* **Dependency Update**: Updated to the latest SDK module versions + # v1.45.6 (2026-08-14) * **Dependency Update**: Update to smithy-go v1.27.8. diff --git a/vendor/github.com/aws/aws-sdk-go-v2/service/sts/api_client.go b/vendor/github.com/aws/aws-sdk-go-v2/service/sts/api_client.go index 78dd88486e7..25412cf71c2 100644 --- a/vendor/github.com/aws/aws-sdk-go-v2/service/sts/api_client.go +++ b/vendor/github.com/aws/aws-sdk-go-v2/service/sts/api_client.go @@ -16,6 +16,7 @@ import ( internalauth "github.com/aws/aws-sdk-go-v2/internal/auth" internalauthsmithy "github.com/aws/aws-sdk-go-v2/internal/auth/smithy" internalConfig "github.com/aws/aws-sdk-go-v2/internal/configsources" + "github.com/aws/aws-sdk-go-v2/internal/timeouts" "github.com/aws/aws-sdk-go-v2/internal/v4a" acceptencodingcust "github.com/aws/aws-sdk-go-v2/service/internal/accept-encoding" presignedurlcust "github.com/aws/aws-sdk-go-v2/service/internal/presigned-url" @@ -397,9 +398,6 @@ func (c *Client) addCommonMiddlewares(stack *middleware.Stack, options Options, if err := addRawResponseToMetadata(stack); err != nil { return err } - if err := addSpanRetryLoop(stack, options); err != nil { - return err - } if err := addClientUserAgent(stack, options); err != nil { return err } @@ -533,6 +531,12 @@ func resolveHTTPClient(o *Options) { }) } + if _, ok := buildable.GetReadTimeout(); !ok { + if timeout, ok := timeouts.GetServiceReadTimeout(ServiceID); ok { + buildable = buildable.WithReadTimeout(timeout) + } + } + o.HTTPClient = buildable } @@ -674,10 +678,6 @@ func addClientRequestID(stack *middleware.Stack) error { return stack.Build.Add(&awsmiddleware.ClientRequestID{}, middleware.After) } -func addComputeContentLength(stack *middleware.Stack) error { - return stack.Build.Insert(&smithyhttp.ComputeContentLength{}, "ClientRequestID", middleware.After) -} - func addRawResponseToMetadata(stack *middleware.Stack) error { return stack.Deserialize.Add(&awsmiddleware.AddRawResponse{}, middleware.Before) } @@ -687,30 +687,6 @@ func addRecordResponseTiming(stack *middleware.Stack, options Options) error { DisableClockSkewCorrection: options.DisableClockSkewCorrection, }, middleware.After) } - -func addSpanRetryLoop(stack *middleware.Stack, options Options) error { - return stack.Finalize.Insert(&spanRetryLoop{options: options}, "Retry", middleware.Before) -} - -type spanRetryLoop struct { - options Options -} - -func (*spanRetryLoop) ID() string { - return "spanRetryLoop" -} - -func (m *spanRetryLoop) HandleFinalize( - ctx context.Context, in middleware.FinalizeInput, next middleware.FinalizeHandler, -) ( - middleware.FinalizeOutput, middleware.Metadata, error, -) { - tracer := operationTracer(m.options.TracerProvider) - ctx, span := tracer.StartSpan(ctx, "RetryLoop") - defer span.End() - - return next.HandleFinalize(ctx, in) -} func addStreamingEventsPayload(stack *middleware.Stack) error { return stack.Finalize.Add(&v4.StreamingEventsPayload{}, middleware.Before) } @@ -761,9 +737,6 @@ func addRetry(stack *middleware.Stack, o Options, c *Client) error { if err := stack.Finalize.Insert(attempt, "ResolveAuthScheme", middleware.Before); err != nil { return err } - if err := stack.Finalize.Insert(&retry.MetricsHeader{}, attempt.ID(), middleware.After); err != nil { - return err - } return nil } @@ -836,35 +809,21 @@ func addUserAgentRetryMode(stack *middleware.Stack, options Options) error { return nil } -type setCredentialSourceMiddleware struct { - ua *awsmiddleware.RequestUserAgent - options Options -} - -func (m setCredentialSourceMiddleware) ID() string { return "SetCredentialSourceMiddleware" } - -func (m setCredentialSourceMiddleware) HandleBuild(ctx context.Context, in middleware.BuildInput, next middleware.BuildHandler) ( - out middleware.BuildOutput, metadata middleware.Metadata, err error, -) { - asProviderSource, ok := m.options.Credentials.(aws.CredentialProviderSource) - if !ok { - return next.HandleBuild(ctx, in) - } - providerSources := asProviderSource.ProviderSources() - for _, source := range providerSources { - m.ua.AddCredentialsSource(source) - } - return next.HandleBuild(ctx, in) -} - func addCredentialSource(stack *middleware.Stack, options Options) error { ua, err := getOrAddRequestUserAgent(stack) if err != nil { return err } - mw := setCredentialSourceMiddleware{ua: ua, options: options} - return stack.Build.Insert(&mw, "UserAgent", middleware.Before) + asProviderSource, ok := options.Credentials.(aws.CredentialProviderSource) + if !ok { + return nil + } + + for _, source := range asProviderSource.ProviderSources() { + ua.AddCredentialsSource(source) + } + return nil } func finalizeSTSRetryableErrors(o *Options) { @@ -1024,9 +983,6 @@ func (c presignConverter) convertToPresignMiddleware(stack *middleware.Stack, op if _, ok := stack.Finalize.Get((*retry.Attempt)(nil).ID()); ok { stack.Finalize.Remove((*retry.Attempt)(nil).ID()) } - if _, ok := stack.Finalize.Get((*retry.MetricsHeader)(nil).ID()); ok { - stack.Finalize.Remove((*retry.MetricsHeader)(nil).ID()) - } stack.Deserialize.Clear() stack.Build.Remove((*awsmiddleware.ClientRequestID)(nil).ID()) stack.Build.Remove("UserAgent") diff --git a/vendor/github.com/aws/aws-sdk-go-v2/service/sts/api_op_AssumeRole.go b/vendor/github.com/aws/aws-sdk-go-v2/service/sts/api_op_AssumeRole.go index ba1798d541d..b1cd6756010 100644 --- a/vendor/github.com/aws/aws-sdk-go-v2/service/sts/api_op_AssumeRole.go +++ b/vendor/github.com/aws/aws-sdk-go-v2/service/sts/api_op_AssumeRole.go @@ -421,9 +421,6 @@ func (c *Client) addOperationAssumeRoleMiddlewares(stack *middleware.Stack, opti return err } - if err = addComputeContentLength(stack); err != nil { - return err - } if err = addResolveEndpointMiddleware(stack, options); err != nil { return err } diff --git a/vendor/github.com/aws/aws-sdk-go-v2/service/sts/api_op_AssumeRoleWithSAML.go b/vendor/github.com/aws/aws-sdk-go-v2/service/sts/api_op_AssumeRoleWithSAML.go index 565120003a8..10f16e16559 100644 --- a/vendor/github.com/aws/aws-sdk-go-v2/service/sts/api_op_AssumeRoleWithSAML.go +++ b/vendor/github.com/aws/aws-sdk-go-v2/service/sts/api_op_AssumeRoleWithSAML.go @@ -359,9 +359,6 @@ func (c *Client) addOperationAssumeRoleWithSAMLMiddlewares(stack *middleware.Sta return err } - if err = addComputeContentLength(stack); err != nil { - return err - } if err = addResolveEndpointMiddleware(stack, options); err != nil { return err } diff --git a/vendor/github.com/aws/aws-sdk-go-v2/service/sts/api_op_AssumeRoleWithWebIdentity.go b/vendor/github.com/aws/aws-sdk-go-v2/service/sts/api_op_AssumeRoleWithWebIdentity.go index f1bd15a00e7..97f51b8be70 100644 --- a/vendor/github.com/aws/aws-sdk-go-v2/service/sts/api_op_AssumeRoleWithWebIdentity.go +++ b/vendor/github.com/aws/aws-sdk-go-v2/service/sts/api_op_AssumeRoleWithWebIdentity.go @@ -376,9 +376,6 @@ func (c *Client) addOperationAssumeRoleWithWebIdentityMiddlewares(stack *middlew return err } - if err = addComputeContentLength(stack); err != nil { - return err - } if err = addResolveEndpointMiddleware(stack, options); err != nil { return err } diff --git a/vendor/github.com/aws/aws-sdk-go-v2/service/sts/api_op_AssumeRoot.go b/vendor/github.com/aws/aws-sdk-go-v2/service/sts/api_op_AssumeRoot.go index 1687dc74e50..8946a9bb956 100644 --- a/vendor/github.com/aws/aws-sdk-go-v2/service/sts/api_op_AssumeRoot.go +++ b/vendor/github.com/aws/aws-sdk-go-v2/service/sts/api_op_AssumeRoot.go @@ -130,9 +130,6 @@ func (c *Client) addOperationAssumeRootMiddlewares(stack *middleware.Stack, opti return err } - if err = addComputeContentLength(stack); err != nil { - return err - } if err = addResolveEndpointMiddleware(stack, options); err != nil { return err } diff --git a/vendor/github.com/aws/aws-sdk-go-v2/service/sts/api_op_DecodeAuthorizationMessage.go b/vendor/github.com/aws/aws-sdk-go-v2/service/sts/api_op_DecodeAuthorizationMessage.go index 819b5d9f2f7..41b3fe02f17 100644 --- a/vendor/github.com/aws/aws-sdk-go-v2/service/sts/api_op_DecodeAuthorizationMessage.go +++ b/vendor/github.com/aws/aws-sdk-go-v2/service/sts/api_op_DecodeAuthorizationMessage.go @@ -90,9 +90,6 @@ func (c *Client) addOperationDecodeAuthorizationMessageMiddlewares(stack *middle return err } - if err = addComputeContentLength(stack); err != nil { - return err - } if err = addResolveEndpointMiddleware(stack, options); err != nil { return err } diff --git a/vendor/github.com/aws/aws-sdk-go-v2/service/sts/api_op_GetAccessKeyInfo.go b/vendor/github.com/aws/aws-sdk-go-v2/service/sts/api_op_GetAccessKeyInfo.go index cf424c8625b..da652ff1c74 100644 --- a/vendor/github.com/aws/aws-sdk-go-v2/service/sts/api_op_GetAccessKeyInfo.go +++ b/vendor/github.com/aws/aws-sdk-go-v2/service/sts/api_op_GetAccessKeyInfo.go @@ -81,9 +81,6 @@ func (c *Client) addOperationGetAccessKeyInfoMiddlewares(stack *middleware.Stack return err } - if err = addComputeContentLength(stack); err != nil { - return err - } if err = addResolveEndpointMiddleware(stack, options); err != nil { return err } diff --git a/vendor/github.com/aws/aws-sdk-go-v2/service/sts/api_op_GetCallerIdentity.go b/vendor/github.com/aws/aws-sdk-go-v2/service/sts/api_op_GetCallerIdentity.go index d4148a1c35b..56dbdbf574f 100644 --- a/vendor/github.com/aws/aws-sdk-go-v2/service/sts/api_op_GetCallerIdentity.go +++ b/vendor/github.com/aws/aws-sdk-go-v2/service/sts/api_op_GetCallerIdentity.go @@ -72,9 +72,6 @@ func (c *Client) addOperationGetCallerIdentityMiddlewares(stack *middleware.Stac return err } - if err = addComputeContentLength(stack); err != nil { - return err - } if err = addResolveEndpointMiddleware(stack, options); err != nil { return err } diff --git a/vendor/github.com/aws/aws-sdk-go-v2/service/sts/api_op_GetDelegatedAccessToken.go b/vendor/github.com/aws/aws-sdk-go-v2/service/sts/api_op_GetDelegatedAccessToken.go index e0e06728908..33370240ff7 100644 --- a/vendor/github.com/aws/aws-sdk-go-v2/service/sts/api_op_GetDelegatedAccessToken.go +++ b/vendor/github.com/aws/aws-sdk-go-v2/service/sts/api_op_GetDelegatedAccessToken.go @@ -70,9 +70,6 @@ func (c *Client) addOperationGetDelegatedAccessTokenMiddlewares(stack *middlewar return err } - if err = addComputeContentLength(stack); err != nil { - return err - } if err = addResolveEndpointMiddleware(stack, options); err != nil { return err } diff --git a/vendor/github.com/aws/aws-sdk-go-v2/service/sts/api_op_GetFederationToken.go b/vendor/github.com/aws/aws-sdk-go-v2/service/sts/api_op_GetFederationToken.go index 606d0cdc267..09e7ab30b7e 100644 --- a/vendor/github.com/aws/aws-sdk-go-v2/service/sts/api_op_GetFederationToken.go +++ b/vendor/github.com/aws/aws-sdk-go-v2/service/sts/api_op_GetFederationToken.go @@ -294,9 +294,6 @@ func (c *Client) addOperationGetFederationTokenMiddlewares(stack *middleware.Sta return err } - if err = addComputeContentLength(stack); err != nil { - return err - } if err = addResolveEndpointMiddleware(stack, options); err != nil { return err } diff --git a/vendor/github.com/aws/aws-sdk-go-v2/service/sts/api_op_GetSessionToken.go b/vendor/github.com/aws/aws-sdk-go-v2/service/sts/api_op_GetSessionToken.go index 873090b1e91..ce0b895668e 100644 --- a/vendor/github.com/aws/aws-sdk-go-v2/service/sts/api_op_GetSessionToken.go +++ b/vendor/github.com/aws/aws-sdk-go-v2/service/sts/api_op_GetSessionToken.go @@ -143,9 +143,6 @@ func (c *Client) addOperationGetSessionTokenMiddlewares(stack *middleware.Stack, return err } - if err = addComputeContentLength(stack); err != nil { - return err - } if err = addResolveEndpointMiddleware(stack, options); err != nil { return err } diff --git a/vendor/github.com/aws/aws-sdk-go-v2/service/sts/api_op_GetWebIdentityToken.go b/vendor/github.com/aws/aws-sdk-go-v2/service/sts/api_op_GetWebIdentityToken.go index 4525e2e247c..b36723d4756 100644 --- a/vendor/github.com/aws/aws-sdk-go-v2/service/sts/api_op_GetWebIdentityToken.go +++ b/vendor/github.com/aws/aws-sdk-go-v2/service/sts/api_op_GetWebIdentityToken.go @@ -93,9 +93,6 @@ func (c *Client) addOperationGetWebIdentityTokenMiddlewares(stack *middleware.St return err } - if err = addComputeContentLength(stack); err != nil { - return err - } if err = addResolveEndpointMiddleware(stack, options); err != nil { return err } diff --git a/vendor/github.com/aws/aws-sdk-go-v2/service/sts/go_module_metadata.go b/vendor/github.com/aws/aws-sdk-go-v2/service/sts/go_module_metadata.go index f2b5c084672..8ca9182fe3a 100644 --- a/vendor/github.com/aws/aws-sdk-go-v2/service/sts/go_module_metadata.go +++ b/vendor/github.com/aws/aws-sdk-go-v2/service/sts/go_module_metadata.go @@ -3,4 +3,4 @@ package sts // goModuleVersion is the tagged release for this module -const goModuleVersion = "1.45.6" +const goModuleVersion = "1.50.0" diff --git a/vendor/github.com/aws/smithy-go/CHANGELOG.md b/vendor/github.com/aws/smithy-go/CHANGELOG.md index 88de0403e0b..0d26e973c5b 100644 --- a/vendor/github.com/aws/smithy-go/CHANGELOG.md +++ b/vendor/github.com/aws/smithy-go/CHANGELOG.md @@ -1,3 +1,43 @@ +# Release (2026-08-26) + +## General Highlights +* **Dependency Update**: Updated to the latest SDK module versions + +## Module Highlights +* `github.com/aws/smithy-go`: v1.28.1 + * **Bug Fix**: Fix broken AddLogger middleware since its insert point was removed. + +# Release (2026-08-25.2) + +## General Highlights +* **Dependency Update**: Updated to the latest SDK module versions + +## Module Highlights +* `github.com/aws/smithy-go`: v1.28.0 + * **Feature**: Set `Content-Length` inline when the request body is set via `SetStream`. The `ComputeContentLength` middleware is now deprecated. + +# Release (2026-08-25) + +## General Highlights +* **Dependency Update**: Updated to the latest SDK module versions + +## Module Highlights +* `github.com/aws/smithy-go`: v1.27.10 + * **Bug Fix**: Fix a data race on the underlying writer when an event stream is closed while an event write is in flight. + * **Bug Fix**: Restore draining the HTTP response body in `CloseResponseBody` to avoid issues with TCP connection reuse. + +# Release (2026-08-21) + +## General Highlights +* **Dependency Update**: Updated to the latest SDK module versions + +## Module Highlights +* `github.com/aws/smithy-go`: v1.27.9 + * **Bug Fix**: Fix a generic event stream exception not carrying the error code and message from its payload. + * **Bug Fix**: Fix an event stream not being closed when its connection is lost, which would cause a caller writing to the stream to block indefinitely. + * **Bug Fix**: Fix deserialization of an empty list producing a nil slice instead of an empty one. + * **Bug Fix**: Restore draining the HTTP response body in `CloseResponseBody` to avoid issues with TCP connection reuse. + # Release (2026-08-14) ## General Highlights diff --git a/vendor/github.com/aws/smithy-go/go_module_metadata.go b/vendor/github.com/aws/smithy-go/go_module_metadata.go index 005dac8f6dd..c945a45db81 100644 --- a/vendor/github.com/aws/smithy-go/go_module_metadata.go +++ b/vendor/github.com/aws/smithy-go/go_module_metadata.go @@ -3,4 +3,4 @@ package smithy // goModuleVersion is the tagged release for this module -const goModuleVersion = "1.27.8" +const goModuleVersion = "1.28.1" diff --git a/vendor/github.com/aws/smithy-go/transport/http/eventstream.go b/vendor/github.com/aws/smithy-go/transport/http/eventstream.go index 251db8ac35b..970ade30e20 100644 --- a/vendor/github.com/aws/smithy-go/transport/http/eventstream.go +++ b/vendor/github.com/aws/smithy-go/transport/http/eventstream.go @@ -56,7 +56,10 @@ func NewEventStreamWriter(protocol ClientProtocol, schema *smithy.Schema, stream } func (w *EventStreamWriter) writeStream() { - defer w.Close() + defer func() { + w.err.SetError(w.eventStream.Close()) + }() + defer w.signalClose() for { select { @@ -100,11 +103,14 @@ func (w *EventStreamWriter) Send(ctx context.Context, variant *smithy.Schema, ev // Close signals end-of-stream and closes the underlying writer. Close is // safe for concurrent calls. func (w *EventStreamWriter) Close() error { + w.signalClose() + return w.err.Err() +} + +func (w *EventStreamWriter) signalClose() { w.closeOnce.Do(func() { close(w.done) - w.err.SetError(w.eventStream.Close()) }) - return w.err.Err() } // Err returns the first error encountered during writing. diff --git a/vendor/github.com/aws/smithy-go/transport/http/middleware_content_length.go b/vendor/github.com/aws/smithy-go/transport/http/middleware_content_length.go index 9969389bb29..7a1c47fe367 100644 --- a/vendor/github.com/aws/smithy-go/transport/http/middleware_content_length.go +++ b/vendor/github.com/aws/smithy-go/transport/http/middleware_content_length.go @@ -14,6 +14,9 @@ type ComputeContentLength struct { // AddComputeContentLengthMiddleware adds ComputeContentLength to the middleware // stack's Build step. +// +// Deprecated: Content-Length is now set when the request body is set via +// Request.SetStream, so this middleware is no longer used. func AddComputeContentLengthMiddleware(stack *middleware.Stack) error { return stack.Build.Add(&ComputeContentLength{}, middleware.After) } diff --git a/vendor/github.com/aws/smithy-go/transport/http/request.go b/vendor/github.com/aws/smithy-go/transport/http/request.go index 5cbf6f10acc..87acdfe57c1 100644 --- a/vendor/github.com/aws/smithy-go/transport/http/request.go +++ b/vendor/github.com/aws/smithy-go/transport/http/request.go @@ -118,6 +118,9 @@ func (r *Request) IsStreamSeekable() bool { // SetStream returns a clone of the request with the stream set to the provided // reader. May return an error if the provided reader is seekable but returns // an error. +// +// ContentLength is set to the stream's length when it can be determined, and +// left unchanged otherwise. func (r *Request) SetStream(reader io.Reader) (rc *Request, err error) { rc = r.Clone() @@ -151,6 +154,12 @@ func (r *Request) SetStream(reader io.Reader) (rc *Request, err error) { rc.isStreamSeekable = isStreamSeekable rc.streamStartPos = streamStartPos + if n, ok, err := rc.StreamLength(); err != nil { + return rc, err + } else if ok { + rc.ContentLength = n + } + return rc, err } diff --git a/vendor/github.com/container-storage-interface/spec/lib/go/csi/csi.pb.go b/vendor/github.com/container-storage-interface/spec/lib/go/csi/csi.pb.go index 82904b38be6..7150b4602ec 100644 --- a/vendor/github.com/container-storage-interface/spec/lib/go/csi/csi.pb.go +++ b/vendor/github.com/container-storage-interface/spec/lib/go/csi/csi.pb.go @@ -2,7 +2,7 @@ // Code generated by protoc-gen-go. DO NOT EDIT. // versions: -// protoc-gen-go v1.33.0 +// protoc-gen-go v1.36.10 // protoc v4.25.2 // source: csi.proto @@ -16,6 +16,7 @@ import ( wrapperspb "google.golang.org/protobuf/types/known/wrapperspb" reflect "reflect" sync "sync" + unsafe "unsafe" ) const ( @@ -25,6 +26,126 @@ const ( _ = protoimpl.EnforceVersion(protoimpl.MaxVersion - 20) ) +type VolumeHealthErrorType int32 + +const ( + VolumeHealthErrorType_UNKNOWN_VOLUME_HEALTH_TYPE VolumeHealthErrorType = 0 + // The volume is usable but is not operating optimally. + VolumeHealthErrorType_DEGRADED VolumeHealthErrorType = 1 + // The volume is not accessible. + // When a volume is reported as INACCESSIBLE in + // ControllerListVolumeHealth or ControllerGetVolumeHealth + // RPC calls, the CO MAY interpret the result as + // volume not being accessible from all nodes in the cluster. + // + // When a volume is reported as INACCESSIBLE in NodeGetVolumeHealth + // RPC call the CO MAY interpret the result as volume not + // being accessible from that node. + VolumeHealthErrorType_INACCESSIBLE VolumeHealthErrorType = 2 + // Permanent data loss is known or strongly suspected on the + // underlying volume. The CO MAY use this signal to inform + // users to trigger recovery workflows such as restoring from + // a snapshot or replica. + VolumeHealthErrorType_DATA_LOSS VolumeHealthErrorType = 3 +) + +// Enum value maps for VolumeHealthErrorType. +var ( + VolumeHealthErrorType_name = map[int32]string{ + 0: "UNKNOWN_VOLUME_HEALTH_TYPE", + 1: "DEGRADED", + 2: "INACCESSIBLE", + 3: "DATA_LOSS", + } + VolumeHealthErrorType_value = map[string]int32{ + "UNKNOWN_VOLUME_HEALTH_TYPE": 0, + "DEGRADED": 1, + "INACCESSIBLE": 2, + "DATA_LOSS": 3, + } +) + +func (x VolumeHealthErrorType) Enum() *VolumeHealthErrorType { + p := new(VolumeHealthErrorType) + *p = x + return p +} + +func (x VolumeHealthErrorType) String() string { + return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x)) +} + +func (VolumeHealthErrorType) Descriptor() protoreflect.EnumDescriptor { + return file_csi_proto_enumTypes[0].Descriptor() +} + +func (VolumeHealthErrorType) Type() protoreflect.EnumType { + return &file_csi_proto_enumTypes[0] +} + +func (x VolumeHealthErrorType) Number() protoreflect.EnumNumber { + return protoreflect.EnumNumber(x) +} + +// Deprecated: Use VolumeHealthErrorType.Descriptor instead. +func (VolumeHealthErrorType) EnumDescriptor() ([]byte, []int) { + return file_csi_proto_rawDescGZIP(), []int{0} +} + +type StorageHealthErrorType int32 + +const ( + StorageHealthErrorType_UNKNOWN_STORAGE_HEALTH_ERROR_TYPE StorageHealthErrorType = 0 + // The storage backend is operating in a degraded + // state (e.g. reduced path count, high latency). + // Volumes using this backend may experience reduced performance. + StorageHealthErrorType_STORAGE_DEGRADED StorageHealthErrorType = 1 + // The storage backend is completely unreachable from this node. + // Volumes using this backend are expected to be unavailable. + StorageHealthErrorType_STORAGE_UNREACHABLE StorageHealthErrorType = 2 +) + +// Enum value maps for StorageHealthErrorType. +var ( + StorageHealthErrorType_name = map[int32]string{ + 0: "UNKNOWN_STORAGE_HEALTH_ERROR_TYPE", + 1: "STORAGE_DEGRADED", + 2: "STORAGE_UNREACHABLE", + } + StorageHealthErrorType_value = map[string]int32{ + "UNKNOWN_STORAGE_HEALTH_ERROR_TYPE": 0, + "STORAGE_DEGRADED": 1, + "STORAGE_UNREACHABLE": 2, + } +) + +func (x StorageHealthErrorType) Enum() *StorageHealthErrorType { + p := new(StorageHealthErrorType) + *p = x + return p +} + +func (x StorageHealthErrorType) String() string { + return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x)) +} + +func (StorageHealthErrorType) Descriptor() protoreflect.EnumDescriptor { + return file_csi_proto_enumTypes[1].Descriptor() +} + +func (StorageHealthErrorType) Type() protoreflect.EnumType { + return &file_csi_proto_enumTypes[1] +} + +func (x StorageHealthErrorType) Number() protoreflect.EnumNumber { + return protoreflect.EnumNumber(x) +} + +// Deprecated: Use StorageHealthErrorType.Descriptor instead. +func (StorageHealthErrorType) EnumDescriptor() ([]byte, []int) { + return file_csi_proto_rawDescGZIP(), []int{1} +} + type BlockMetadataType int32 const ( @@ -62,11 +183,11 @@ func (x BlockMetadataType) String() string { } func (BlockMetadataType) Descriptor() protoreflect.EnumDescriptor { - return file_csi_proto_enumTypes[0].Descriptor() + return file_csi_proto_enumTypes[2].Descriptor() } func (BlockMetadataType) Type() protoreflect.EnumType { - return &file_csi_proto_enumTypes[0] + return &file_csi_proto_enumTypes[2] } func (x BlockMetadataType) Number() protoreflect.EnumNumber { @@ -75,7 +196,7 @@ func (x BlockMetadataType) Number() protoreflect.EnumNumber { // Deprecated: Use BlockMetadataType.Descriptor instead. func (BlockMetadataType) EnumDescriptor() ([]byte, []int) { - return file_csi_proto_rawDescGZIP(), []int{0} + return file_csi_proto_rawDescGZIP(), []int{2} } type PluginCapability_Service_Type int32 @@ -113,6 +234,15 @@ const ( // The presence of this capability determines whether the CO will // attempt to invoke the OPTIONAL SnapshotMetadata service RPCs. PluginCapability_Service_SNAPSHOT_METADATA_SERVICE PluginCapability_Service_Type = 4 + // SNAPSHOT_ACCESSIBILITY_CONSTRAINTS indicates that the snapshots + // for this plugin MAY NOT be equally usable from all + // topologies in the cluster. A snapshot is usable from a location + // if volumes created from that snapshot are guaranteed to be + // accessible from that location. The CO MUST use the topology + // information returned in the CreateSnapshotResponse to ensure + // that a desired volume can be provisioned from a given snapshot + // when scheduling workloads. + PluginCapability_Service_SNAPSHOT_ACCESSIBILITY_CONSTRAINTS PluginCapability_Service_Type = 5 ) // Enum value maps for PluginCapability_Service_Type. @@ -123,13 +253,15 @@ var ( 2: "VOLUME_ACCESSIBILITY_CONSTRAINTS", 3: "GROUP_CONTROLLER_SERVICE", 4: "SNAPSHOT_METADATA_SERVICE", + 5: "SNAPSHOT_ACCESSIBILITY_CONSTRAINTS", } PluginCapability_Service_Type_value = map[string]int32{ - "UNKNOWN": 0, - "CONTROLLER_SERVICE": 1, - "VOLUME_ACCESSIBILITY_CONSTRAINTS": 2, - "GROUP_CONTROLLER_SERVICE": 3, - "SNAPSHOT_METADATA_SERVICE": 4, + "UNKNOWN": 0, + "CONTROLLER_SERVICE": 1, + "VOLUME_ACCESSIBILITY_CONSTRAINTS": 2, + "GROUP_CONTROLLER_SERVICE": 3, + "SNAPSHOT_METADATA_SERVICE": 4, + "SNAPSHOT_ACCESSIBILITY_CONSTRAINTS": 5, } ) @@ -144,11 +276,11 @@ func (x PluginCapability_Service_Type) String() string { } func (PluginCapability_Service_Type) Descriptor() protoreflect.EnumDescriptor { - return file_csi_proto_enumTypes[1].Descriptor() + return file_csi_proto_enumTypes[3].Descriptor() } func (PluginCapability_Service_Type) Type() protoreflect.EnumType { - return &file_csi_proto_enumTypes[1] + return &file_csi_proto_enumTypes[3] } func (x PluginCapability_Service_Type) Number() protoreflect.EnumNumber { @@ -232,11 +364,11 @@ func (x PluginCapability_VolumeExpansion_Type) String() string { } func (PluginCapability_VolumeExpansion_Type) Descriptor() protoreflect.EnumDescriptor { - return file_csi_proto_enumTypes[2].Descriptor() + return file_csi_proto_enumTypes[4].Descriptor() } func (PluginCapability_VolumeExpansion_Type) Type() protoreflect.EnumType { - return &file_csi_proto_enumTypes[2] + return &file_csi_proto_enumTypes[4] } func (x PluginCapability_VolumeExpansion_Type) Number() protoreflect.EnumNumber { @@ -313,11 +445,11 @@ func (x VolumeCapability_AccessMode_Mode) String() string { } func (VolumeCapability_AccessMode_Mode) Descriptor() protoreflect.EnumDescriptor { - return file_csi_proto_enumTypes[3].Descriptor() + return file_csi_proto_enumTypes[5].Descriptor() } func (VolumeCapability_AccessMode_Mode) Type() protoreflect.EnumType { - return &file_csi_proto_enumTypes[3] + return &file_csi_proto_enumTypes[5] } func (x VolumeCapability_AccessMode_Mode) Number() protoreflect.EnumNumber { @@ -358,21 +490,9 @@ const ( // ControllerGetVolumeResponse.published_node_ids field. // The SP MUST also support PUBLISH_UNPUBLISH_VOLUME. ControllerServiceCapability_RPC_LIST_VOLUMES_PUBLISHED_NODES ControllerServiceCapability_RPC_Type = 10 - // Indicates that the Controller service can report volume - // conditions. - // An SP MAY implement `VolumeCondition` in only the Controller - // Plugin, only the Node Plugin, or both. - // If `VolumeCondition` is implemented in both the Controller and - // Node Plugins, it SHALL report from different perspectives. - // If for some reason Controller and Node Plugins report - // misaligned volume conditions, CO SHALL assume the worst case - // is the truth. - // Note that, for alpha, `VolumeCondition` is intended be - // informative for humans only, not for automation. - ControllerServiceCapability_RPC_VOLUME_CONDITION ControllerServiceCapability_RPC_Type = 11 // Indicates the SP supports the ControllerGetVolume RPC. // This enables COs to, for example, fetch per volume - // condition after a volume is provisioned. + // information after a volume is provisioned. ControllerServiceCapability_RPC_GET_VOLUME ControllerServiceCapability_RPC_Type = 12 // Indicates the SP supports the SINGLE_NODE_SINGLE_WRITER and/or // SINGLE_NODE_MULTI_WRITER access modes. @@ -389,6 +509,16 @@ const ( // Indicates the SP supports the GetSnapshot RPC. // This enables COs to fetch an existing snapshot. ControllerServiceCapability_RPC_GET_SNAPSHOT ControllerServiceCapability_RPC_Type = 15 + // Indicates the SP supports the ControllerGetVolumeHealth RPC. + // This enables COs to fetch health information for a single + // volume from the Controller Plugin's perspective. + ControllerServiceCapability_RPC_GET_VOLUME_HEALTH ControllerServiceCapability_RPC_Type = 16 + // Indicates the SP supports the ControllerListVolumeHealth RPC. + // This enables COs to fetch volume health information from + // the Controller Plugin's perspective. + // A plugin which supports the LIST_VOLUME_HEALTH capability + // MUST also support the GET_VOLUME_HEALTH capability. + ControllerServiceCapability_RPC_LIST_VOLUME_HEALTH ControllerServiceCapability_RPC_Type = 17 ) // Enum value maps for ControllerServiceCapability_RPC_Type. @@ -405,11 +535,12 @@ var ( 8: "PUBLISH_READONLY", 9: "EXPAND_VOLUME", 10: "LIST_VOLUMES_PUBLISHED_NODES", - 11: "VOLUME_CONDITION", 12: "GET_VOLUME", 13: "SINGLE_NODE_MULTI_WRITER", 14: "MODIFY_VOLUME", 15: "GET_SNAPSHOT", + 16: "GET_VOLUME_HEALTH", + 17: "LIST_VOLUME_HEALTH", } ControllerServiceCapability_RPC_Type_value = map[string]int32{ "UNKNOWN": 0, @@ -423,11 +554,12 @@ var ( "PUBLISH_READONLY": 8, "EXPAND_VOLUME": 9, "LIST_VOLUMES_PUBLISHED_NODES": 10, - "VOLUME_CONDITION": 11, "GET_VOLUME": 12, "SINGLE_NODE_MULTI_WRITER": 13, "MODIFY_VOLUME": 14, "GET_SNAPSHOT": 15, + "GET_VOLUME_HEALTH": 16, + "LIST_VOLUME_HEALTH": 17, } ) @@ -442,11 +574,11 @@ func (x ControllerServiceCapability_RPC_Type) String() string { } func (ControllerServiceCapability_RPC_Type) Descriptor() protoreflect.EnumDescriptor { - return file_csi_proto_enumTypes[4].Descriptor() + return file_csi_proto_enumTypes[6].Descriptor() } func (ControllerServiceCapability_RPC_Type) Type() protoreflect.EnumType { - return &file_csi_proto_enumTypes[4] + return &file_csi_proto_enumTypes[6] } func (x ControllerServiceCapability_RPC_Type) Number() protoreflect.EnumNumber { @@ -455,7 +587,7 @@ func (x ControllerServiceCapability_RPC_Type) Number() protoreflect.EnumNumber { // Deprecated: Use ControllerServiceCapability_RPC_Type.Descriptor instead. func (ControllerServiceCapability_RPC_Type) EnumDescriptor() ([]byte, []int) { - return file_csi_proto_rawDescGZIP(), []int{33, 0, 0} + return file_csi_proto_rawDescGZIP(), []int{38, 0, 0} } type VolumeUsage_Unit int32 @@ -491,11 +623,11 @@ func (x VolumeUsage_Unit) String() string { } func (VolumeUsage_Unit) Descriptor() protoreflect.EnumDescriptor { - return file_csi_proto_enumTypes[5].Descriptor() + return file_csi_proto_enumTypes[7].Descriptor() } func (VolumeUsage_Unit) Type() protoreflect.EnumType { - return &file_csi_proto_enumTypes[5] + return &file_csi_proto_enumTypes[7] } func (x VolumeUsage_Unit) Number() protoreflect.EnumNumber { @@ -504,7 +636,7 @@ func (x VolumeUsage_Unit) Number() protoreflect.EnumNumber { // Deprecated: Use VolumeUsage_Unit.Descriptor instead. func (VolumeUsage_Unit) EnumDescriptor() ([]byte, []int) { - return file_csi_proto_rawDescGZIP(), []int{55, 0} + return file_csi_proto_rawDescGZIP(), []int{60, 0} } type NodeServiceCapability_RPC_Type int32 @@ -518,18 +650,6 @@ const ( NodeServiceCapability_RPC_GET_VOLUME_STATS NodeServiceCapability_RPC_Type = 2 // See VolumeExpansion for details. NodeServiceCapability_RPC_EXPAND_VOLUME NodeServiceCapability_RPC_Type = 3 - // Indicates that the Node service can report volume conditions. - // An SP MAY implement `VolumeCondition` in only the Node - // Plugin, only the Controller Plugin, or both. - // If `VolumeCondition` is implemented in both the Node and - // Controller Plugins, it SHALL report from different - // perspectives. - // If for some reason Node and Controller Plugins report - // misaligned volume conditions, CO SHALL assume the worst case - // is the truth. - // Note that, for alpha, `VolumeCondition` is intended to be - // informative for humans only, not for automation. - NodeServiceCapability_RPC_VOLUME_CONDITION NodeServiceCapability_RPC_Type = 4 // Indicates the SP supports the SINGLE_NODE_SINGLE_WRITER and/or // SINGLE_NODE_MULTI_WRITER access modes. // These access modes are intended to replace the @@ -544,6 +664,14 @@ const ( // with provided volume group identifier during node stage // or node publish RPC calls. NodeServiceCapability_RPC_VOLUME_MOUNT_GROUP NodeServiceCapability_RPC_Type = 6 + // Indicates the SP supports the NodeGetVolumeHealth RPC. + // This enables COs to fetch per-volume health information from + // the Node Plugin's perspective. + NodeServiceCapability_RPC_GET_VOLUME_HEALTH NodeServiceCapability_RPC_Type = 7 + // Indicates the SP supports the NodeGetStorageHealth RPC. + // This enables COs to fetch health of entire storage subsystem + // from node's perspective. + NodeServiceCapability_RPC_GET_STORAGE_HEALTH NodeServiceCapability_RPC_Type = 8 ) // Enum value maps for NodeServiceCapability_RPC_Type. @@ -553,18 +681,20 @@ var ( 1: "STAGE_UNSTAGE_VOLUME", 2: "GET_VOLUME_STATS", 3: "EXPAND_VOLUME", - 4: "VOLUME_CONDITION", 5: "SINGLE_NODE_MULTI_WRITER", 6: "VOLUME_MOUNT_GROUP", + 7: "GET_VOLUME_HEALTH", + 8: "GET_STORAGE_HEALTH", } NodeServiceCapability_RPC_Type_value = map[string]int32{ "UNKNOWN": 0, "STAGE_UNSTAGE_VOLUME": 1, "GET_VOLUME_STATS": 2, "EXPAND_VOLUME": 3, - "VOLUME_CONDITION": 4, "SINGLE_NODE_MULTI_WRITER": 5, "VOLUME_MOUNT_GROUP": 6, + "GET_VOLUME_HEALTH": 7, + "GET_STORAGE_HEALTH": 8, } ) @@ -579,11 +709,11 @@ func (x NodeServiceCapability_RPC_Type) String() string { } func (NodeServiceCapability_RPC_Type) Descriptor() protoreflect.EnumDescriptor { - return file_csi_proto_enumTypes[6].Descriptor() + return file_csi_proto_enumTypes[8].Descriptor() } func (NodeServiceCapability_RPC_Type) Type() protoreflect.EnumType { - return &file_csi_proto_enumTypes[6] + return &file_csi_proto_enumTypes[8] } func (x NodeServiceCapability_RPC_Type) Number() protoreflect.EnumNumber { @@ -592,7 +722,7 @@ func (x NodeServiceCapability_RPC_Type) Number() protoreflect.EnumNumber { // Deprecated: Use NodeServiceCapability_RPC_Type.Descriptor instead. func (NodeServiceCapability_RPC_Type) EnumDescriptor() ([]byte, []int) { - return file_csi_proto_rawDescGZIP(), []int{59, 0, 0} + return file_csi_proto_rawDescGZIP(), []int{67, 0, 0} } type GroupControllerServiceCapability_RPC_Type int32 @@ -628,11 +758,11 @@ func (x GroupControllerServiceCapability_RPC_Type) String() string { } func (GroupControllerServiceCapability_RPC_Type) Descriptor() protoreflect.EnumDescriptor { - return file_csi_proto_enumTypes[7].Descriptor() + return file_csi_proto_enumTypes[9].Descriptor() } func (GroupControllerServiceCapability_RPC_Type) Type() protoreflect.EnumType { - return &file_csi_proto_enumTypes[7] + return &file_csi_proto_enumTypes[9] } func (x GroupControllerServiceCapability_RPC_Type) Number() protoreflect.EnumNumber { @@ -641,22 +771,20 @@ func (x GroupControllerServiceCapability_RPC_Type) Number() protoreflect.EnumNum // Deprecated: Use GroupControllerServiceCapability_RPC_Type.Descriptor instead. func (GroupControllerServiceCapability_RPC_Type) EnumDescriptor() ([]byte, []int) { - return file_csi_proto_rawDescGZIP(), []int{66, 0, 0} + return file_csi_proto_rawDescGZIP(), []int{74, 0, 0} } type GetPluginInfoRequest struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache + state protoimpl.MessageState `protogen:"open.v1"` unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } func (x *GetPluginInfoRequest) Reset() { *x = GetPluginInfoRequest{} - if protoimpl.UnsafeEnabled { - mi := &file_csi_proto_msgTypes[0] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_csi_proto_msgTypes[0] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *GetPluginInfoRequest) String() string { @@ -667,7 +795,7 @@ func (*GetPluginInfoRequest) ProtoMessage() {} func (x *GetPluginInfoRequest) ProtoReflect() protoreflect.Message { mi := &file_csi_proto_msgTypes[0] - if protoimpl.UnsafeEnabled && x != nil { + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -683,10 +811,7 @@ func (*GetPluginInfoRequest) Descriptor() ([]byte, []int) { } type GetPluginInfoResponse struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - + state protoimpl.MessageState `protogen:"open.v1"` // The name MUST follow domain name notation format // (https://tools.ietf.org/html/rfc1035#section-2.3.1). It SHOULD // include the plugin's host company name and the plugin name, @@ -698,16 +823,16 @@ type GetPluginInfoResponse struct { // This field is REQUIRED. Value of this field is opaque to the CO. VendorVersion string `protobuf:"bytes,2,opt,name=vendor_version,json=vendorVersion,proto3" json:"vendor_version,omitempty"` // This field is OPTIONAL. Values are opaque to the CO. - Manifest map[string]string `protobuf:"bytes,3,rep,name=manifest,proto3" json:"manifest,omitempty" protobuf_key:"bytes,1,opt,name=key,proto3" protobuf_val:"bytes,2,opt,name=value,proto3"` + Manifest map[string]string `protobuf:"bytes,3,rep,name=manifest,proto3" json:"manifest,omitempty" protobuf_key:"bytes,1,opt,name=key" protobuf_val:"bytes,2,opt,name=value"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } func (x *GetPluginInfoResponse) Reset() { *x = GetPluginInfoResponse{} - if protoimpl.UnsafeEnabled { - mi := &file_csi_proto_msgTypes[1] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_csi_proto_msgTypes[1] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *GetPluginInfoResponse) String() string { @@ -718,7 +843,7 @@ func (*GetPluginInfoResponse) ProtoMessage() {} func (x *GetPluginInfoResponse) ProtoReflect() protoreflect.Message { mi := &file_csi_proto_msgTypes[1] - if protoimpl.UnsafeEnabled && x != nil { + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -755,18 +880,16 @@ func (x *GetPluginInfoResponse) GetManifest() map[string]string { } type GetPluginCapabilitiesRequest struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache + state protoimpl.MessageState `protogen:"open.v1"` unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } func (x *GetPluginCapabilitiesRequest) Reset() { *x = GetPluginCapabilitiesRequest{} - if protoimpl.UnsafeEnabled { - mi := &file_csi_proto_msgTypes[2] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_csi_proto_msgTypes[2] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *GetPluginCapabilitiesRequest) String() string { @@ -777,7 +900,7 @@ func (*GetPluginCapabilitiesRequest) ProtoMessage() {} func (x *GetPluginCapabilitiesRequest) ProtoReflect() protoreflect.Message { mi := &file_csi_proto_msgTypes[2] - if protoimpl.UnsafeEnabled && x != nil { + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -793,22 +916,19 @@ func (*GetPluginCapabilitiesRequest) Descriptor() ([]byte, []int) { } type GetPluginCapabilitiesResponse struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - + state protoimpl.MessageState `protogen:"open.v1"` // All the capabilities that the controller service supports. This // field is OPTIONAL. - Capabilities []*PluginCapability `protobuf:"bytes,1,rep,name=capabilities,proto3" json:"capabilities,omitempty"` + Capabilities []*PluginCapability `protobuf:"bytes,1,rep,name=capabilities,proto3" json:"capabilities,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } func (x *GetPluginCapabilitiesResponse) Reset() { *x = GetPluginCapabilitiesResponse{} - if protoimpl.UnsafeEnabled { - mi := &file_csi_proto_msgTypes[3] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_csi_proto_msgTypes[3] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *GetPluginCapabilitiesResponse) String() string { @@ -819,7 +939,7 @@ func (*GetPluginCapabilitiesResponse) ProtoMessage() {} func (x *GetPluginCapabilitiesResponse) ProtoReflect() protoreflect.Message { mi := &file_csi_proto_msgTypes[3] - if protoimpl.UnsafeEnabled && x != nil { + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -843,24 +963,21 @@ func (x *GetPluginCapabilitiesResponse) GetCapabilities() []*PluginCapability { // Specifies a capability of the plugin. type PluginCapability struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - - // Types that are assignable to Type: + state protoimpl.MessageState `protogen:"open.v1"` + // Types that are valid to be assigned to Type: // // *PluginCapability_Service_ // *PluginCapability_VolumeExpansion_ - Type isPluginCapability_Type `protobuf_oneof:"type"` + Type isPluginCapability_Type `protobuf_oneof:"type"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } func (x *PluginCapability) Reset() { *x = PluginCapability{} - if protoimpl.UnsafeEnabled { - mi := &file_csi_proto_msgTypes[4] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_csi_proto_msgTypes[4] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *PluginCapability) String() string { @@ -871,7 +988,7 @@ func (*PluginCapability) ProtoMessage() {} func (x *PluginCapability) ProtoReflect() protoreflect.Message { mi := &file_csi_proto_msgTypes[4] - if protoimpl.UnsafeEnabled && x != nil { + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -886,23 +1003,27 @@ func (*PluginCapability) Descriptor() ([]byte, []int) { return file_csi_proto_rawDescGZIP(), []int{4} } -func (m *PluginCapability) GetType() isPluginCapability_Type { - if m != nil { - return m.Type +func (x *PluginCapability) GetType() isPluginCapability_Type { + if x != nil { + return x.Type } return nil } func (x *PluginCapability) GetService() *PluginCapability_Service { - if x, ok := x.GetType().(*PluginCapability_Service_); ok { - return x.Service + if x != nil { + if x, ok := x.Type.(*PluginCapability_Service_); ok { + return x.Service + } } return nil } func (x *PluginCapability) GetVolumeExpansion() *PluginCapability_VolumeExpansion { - if x, ok := x.GetType().(*PluginCapability_VolumeExpansion_); ok { - return x.VolumeExpansion + if x != nil { + if x, ok := x.Type.(*PluginCapability_VolumeExpansion_); ok { + return x.VolumeExpansion + } } return nil } @@ -925,18 +1046,16 @@ func (*PluginCapability_Service_) isPluginCapability_Type() {} func (*PluginCapability_VolumeExpansion_) isPluginCapability_Type() {} type ProbeRequest struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache + state protoimpl.MessageState `protogen:"open.v1"` unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } func (x *ProbeRequest) Reset() { *x = ProbeRequest{} - if protoimpl.UnsafeEnabled { - mi := &file_csi_proto_msgTypes[5] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_csi_proto_msgTypes[5] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *ProbeRequest) String() string { @@ -947,7 +1066,7 @@ func (*ProbeRequest) ProtoMessage() {} func (x *ProbeRequest) ProtoReflect() protoreflect.Message { mi := &file_csi_proto_msgTypes[5] - if protoimpl.UnsafeEnabled && x != nil { + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -963,10 +1082,7 @@ func (*ProbeRequest) Descriptor() ([]byte, []int) { } type ProbeResponse struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - + state protoimpl.MessageState `protogen:"open.v1"` // Readiness allows a plugin to report its initialization status back // to the CO. Initialization for some plugins MAY be time consuming // and it is important for a CO to distinguish between the following @@ -987,16 +1103,16 @@ type ProbeResponse struct { // that the plugin is in a ready state and is accepting calls to its // Controller and/or Node services (according to the plugin's reported // capabilities). - Ready *wrapperspb.BoolValue `protobuf:"bytes,1,opt,name=ready,proto3" json:"ready,omitempty"` + Ready *wrapperspb.BoolValue `protobuf:"bytes,1,opt,name=ready,proto3" json:"ready,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } func (x *ProbeResponse) Reset() { *x = ProbeResponse{} - if protoimpl.UnsafeEnabled { - mi := &file_csi_proto_msgTypes[6] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_csi_proto_msgTypes[6] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *ProbeResponse) String() string { @@ -1007,7 +1123,7 @@ func (*ProbeResponse) ProtoMessage() {} func (x *ProbeResponse) ProtoReflect() protoreflect.Message { mi := &file_csi_proto_msgTypes[6] - if protoimpl.UnsafeEnabled && x != nil { + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -1030,10 +1146,7 @@ func (x *ProbeResponse) GetReady() *wrapperspb.BoolValue { } type CreateVolumeRequest struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - + state protoimpl.MessageState `protogen:"open.v1"` // The suggested name for the storage space. This field is REQUIRED. // It serves two purposes: // 1. Idempotency - This name is generated by the CO to achieve @@ -1088,11 +1201,11 @@ type CreateVolumeRequest struct { // key-value pairs. This field is OPTIONAL. The Plugin is responsible // for parsing and validating these parameters. COs will treat // these as opaque. - Parameters map[string]string `protobuf:"bytes,4,rep,name=parameters,proto3" json:"parameters,omitempty" protobuf_key:"bytes,1,opt,name=key,proto3" protobuf_val:"bytes,2,opt,name=value,proto3"` + Parameters map[string]string `protobuf:"bytes,4,rep,name=parameters,proto3" json:"parameters,omitempty" protobuf_key:"bytes,1,opt,name=key" protobuf_val:"bytes,2,opt,name=value"` // Secrets required by plugin to complete volume creation request. // This field is OPTIONAL. Refer to the `Secrets Requirements` // section on how to use this field. - Secrets map[string]string `protobuf:"bytes,5,rep,name=secrets,proto3" json:"secrets,omitempty" protobuf_key:"bytes,1,opt,name=key,proto3" protobuf_val:"bytes,2,opt,name=value,proto3"` + Secrets map[string]string `protobuf:"bytes,5,rep,name=secrets,proto3" json:"secrets,omitempty" protobuf_key:"bytes,1,opt,name=key" protobuf_val:"bytes,2,opt,name=value"` // If specified, the new volume will be pre-populated with data from // this source. This field is OPTIONAL. VolumeContentSource *VolumeContentSource `protobuf:"bytes,6,opt,name=volume_content_source,json=volumeContentSource,proto3" json:"volume_content_source,omitempty"` @@ -1112,16 +1225,16 @@ type CreateVolumeRequest struct { // as if they take precedence over the parameters field. // This field SHALL NOT be specified unless the SP has the // MODIFY_VOLUME plugin capability. - MutableParameters map[string]string `protobuf:"bytes,8,rep,name=mutable_parameters,json=mutableParameters,proto3" json:"mutable_parameters,omitempty" protobuf_key:"bytes,1,opt,name=key,proto3" protobuf_val:"bytes,2,opt,name=value,proto3"` + MutableParameters map[string]string `protobuf:"bytes,8,rep,name=mutable_parameters,json=mutableParameters,proto3" json:"mutable_parameters,omitempty" protobuf_key:"bytes,1,opt,name=key" protobuf_val:"bytes,2,opt,name=value"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } func (x *CreateVolumeRequest) Reset() { *x = CreateVolumeRequest{} - if protoimpl.UnsafeEnabled { - mi := &file_csi_proto_msgTypes[7] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_csi_proto_msgTypes[7] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *CreateVolumeRequest) String() string { @@ -1132,7 +1245,7 @@ func (*CreateVolumeRequest) ProtoMessage() {} func (x *CreateVolumeRequest) ProtoReflect() protoreflect.Message { mi := &file_csi_proto_msgTypes[7] - if protoimpl.UnsafeEnabled && x != nil { + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -1206,24 +1319,21 @@ func (x *CreateVolumeRequest) GetMutableParameters() map[string]string { // Specifies what source the volume will be created from. One of the // type fields MUST be specified. type VolumeContentSource struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - - // Types that are assignable to Type: + state protoimpl.MessageState `protogen:"open.v1"` + // Types that are valid to be assigned to Type: // // *VolumeContentSource_Snapshot // *VolumeContentSource_Volume - Type isVolumeContentSource_Type `protobuf_oneof:"type"` + Type isVolumeContentSource_Type `protobuf_oneof:"type"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } func (x *VolumeContentSource) Reset() { *x = VolumeContentSource{} - if protoimpl.UnsafeEnabled { - mi := &file_csi_proto_msgTypes[8] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_csi_proto_msgTypes[8] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *VolumeContentSource) String() string { @@ -1234,7 +1344,7 @@ func (*VolumeContentSource) ProtoMessage() {} func (x *VolumeContentSource) ProtoReflect() protoreflect.Message { mi := &file_csi_proto_msgTypes[8] - if protoimpl.UnsafeEnabled && x != nil { + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -1249,23 +1359,27 @@ func (*VolumeContentSource) Descriptor() ([]byte, []int) { return file_csi_proto_rawDescGZIP(), []int{8} } -func (m *VolumeContentSource) GetType() isVolumeContentSource_Type { - if m != nil { - return m.Type +func (x *VolumeContentSource) GetType() isVolumeContentSource_Type { + if x != nil { + return x.Type } return nil } func (x *VolumeContentSource) GetSnapshot() *VolumeContentSource_SnapshotSource { - if x, ok := x.GetType().(*VolumeContentSource_Snapshot); ok { - return x.Snapshot + if x != nil { + if x, ok := x.Type.(*VolumeContentSource_Snapshot); ok { + return x.Snapshot + } } return nil } func (x *VolumeContentSource) GetVolume() *VolumeContentSource_VolumeSource { - if x, ok := x.GetType().(*VolumeContentSource_Volume); ok { - return x.Volume + if x != nil { + if x, ok := x.Type.(*VolumeContentSource_Volume); ok { + return x.Volume + } } return nil } @@ -1287,23 +1401,20 @@ func (*VolumeContentSource_Snapshot) isVolumeContentSource_Type() {} func (*VolumeContentSource_Volume) isVolumeContentSource_Type() {} type CreateVolumeResponse struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - + state protoimpl.MessageState `protogen:"open.v1"` // Contains all attributes of the newly created volume that are // relevant to the CO along with information required by the Plugin // to uniquely identify the volume. This field is REQUIRED. - Volume *Volume `protobuf:"bytes,1,opt,name=volume,proto3" json:"volume,omitempty"` + Volume *Volume `protobuf:"bytes,1,opt,name=volume,proto3" json:"volume,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } func (x *CreateVolumeResponse) Reset() { *x = CreateVolumeResponse{} - if protoimpl.UnsafeEnabled { - mi := &file_csi_proto_msgTypes[9] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_csi_proto_msgTypes[9] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *CreateVolumeResponse) String() string { @@ -1314,7 +1425,7 @@ func (*CreateVolumeResponse) ProtoMessage() {} func (x *CreateVolumeResponse) ProtoReflect() protoreflect.Message { mi := &file_csi_proto_msgTypes[9] - if protoimpl.UnsafeEnabled && x != nil { + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -1338,29 +1449,26 @@ func (x *CreateVolumeResponse) GetVolume() *Volume { // Specify a capability of a volume. type VolumeCapability struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - + state protoimpl.MessageState `protogen:"open.v1"` // Specifies what API the volume will be accessed using. One of the // following fields MUST be specified. // - // Types that are assignable to AccessType: + // Types that are valid to be assigned to AccessType: // // *VolumeCapability_Block // *VolumeCapability_Mount AccessType isVolumeCapability_AccessType `protobuf_oneof:"access_type"` // This is a REQUIRED field. - AccessMode *VolumeCapability_AccessMode `protobuf:"bytes,3,opt,name=access_mode,json=accessMode,proto3" json:"access_mode,omitempty"` + AccessMode *VolumeCapability_AccessMode `protobuf:"bytes,3,opt,name=access_mode,json=accessMode,proto3" json:"access_mode,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } func (x *VolumeCapability) Reset() { *x = VolumeCapability{} - if protoimpl.UnsafeEnabled { - mi := &file_csi_proto_msgTypes[10] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_csi_proto_msgTypes[10] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *VolumeCapability) String() string { @@ -1371,7 +1479,7 @@ func (*VolumeCapability) ProtoMessage() {} func (x *VolumeCapability) ProtoReflect() protoreflect.Message { mi := &file_csi_proto_msgTypes[10] - if protoimpl.UnsafeEnabled && x != nil { + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -1386,23 +1494,27 @@ func (*VolumeCapability) Descriptor() ([]byte, []int) { return file_csi_proto_rawDescGZIP(), []int{10} } -func (m *VolumeCapability) GetAccessType() isVolumeCapability_AccessType { - if m != nil { - return m.AccessType +func (x *VolumeCapability) GetAccessType() isVolumeCapability_AccessType { + if x != nil { + return x.AccessType } return nil } func (x *VolumeCapability) GetBlock() *VolumeCapability_BlockVolume { - if x, ok := x.GetAccessType().(*VolumeCapability_Block); ok { - return x.Block + if x != nil { + if x, ok := x.AccessType.(*VolumeCapability_Block); ok { + return x.Block + } } return nil } func (x *VolumeCapability) GetMount() *VolumeCapability_MountVolume { - if x, ok := x.GetAccessType().(*VolumeCapability_Mount); ok { - return x.Mount + if x != nil { + if x, ok := x.AccessType.(*VolumeCapability_Mount); ok { + return x.Mount + } } return nil } @@ -1434,10 +1546,7 @@ func (*VolumeCapability_Mount) isVolumeCapability_AccessType() {} // `required_bytes` and `limit_bytes` SHALL be set to the same value. At // least one of the these fields MUST be specified. type CapacityRange struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - + state protoimpl.MessageState `protogen:"open.v1"` // Volume MUST be at least this big. This field is OPTIONAL. // A value of 0 is equal to an unspecified field value. // The value of this field MUST NOT be negative. @@ -1445,16 +1554,16 @@ type CapacityRange struct { // Volume MUST not be bigger than this. This field is OPTIONAL. // A value of 0 is equal to an unspecified field value. // The value of this field MUST NOT be negative. - LimitBytes int64 `protobuf:"varint,2,opt,name=limit_bytes,json=limitBytes,proto3" json:"limit_bytes,omitempty"` + LimitBytes int64 `protobuf:"varint,2,opt,name=limit_bytes,json=limitBytes,proto3" json:"limit_bytes,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } func (x *CapacityRange) Reset() { *x = CapacityRange{} - if protoimpl.UnsafeEnabled { - mi := &file_csi_proto_msgTypes[11] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_csi_proto_msgTypes[11] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *CapacityRange) String() string { @@ -1465,7 +1574,7 @@ func (*CapacityRange) ProtoMessage() {} func (x *CapacityRange) ProtoReflect() protoreflect.Message { mi := &file_csi_proto_msgTypes[11] - if protoimpl.UnsafeEnabled && x != nil { + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -1496,10 +1605,7 @@ func (x *CapacityRange) GetLimitBytes() int64 { // Information about a specific volume. type Volume struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - + state protoimpl.MessageState `protogen:"open.v1"` // The capacity of the volume in bytes. This field is OPTIONAL. If not // set (value of 0), it indicates that the capacity of the volume is // unknown (e.g., NFS share). @@ -1529,7 +1635,7 @@ type Volume struct { // same volume_context. // This field is OPTIONAL and when present MUST be passed to volume // validation and publishing calls. - VolumeContext map[string]string `protobuf:"bytes,3,rep,name=volume_context,json=volumeContext,proto3" json:"volume_context,omitempty" protobuf_key:"bytes,1,opt,name=key,proto3" protobuf_val:"bytes,2,opt,name=value,proto3"` + VolumeContext map[string]string `protobuf:"bytes,3,rep,name=volume_context,json=volumeContext,proto3" json:"volume_context,omitempty" protobuf_key:"bytes,1,opt,name=key" protobuf_val:"bytes,2,opt,name=value"` // If specified, indicates that the volume is not empty and is // pre-populated with data from the specified source. // This field is OPTIONAL. @@ -1564,15 +1670,15 @@ type Volume struct { // Indicates a volume accessible from both "zone" "Z2" and "zone" "Z3" // in the "region" "R1". AccessibleTopology []*Topology `protobuf:"bytes,5,rep,name=accessible_topology,json=accessibleTopology,proto3" json:"accessible_topology,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } func (x *Volume) Reset() { *x = Volume{} - if protoimpl.UnsafeEnabled { - mi := &file_csi_proto_msgTypes[12] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_csi_proto_msgTypes[12] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *Volume) String() string { @@ -1583,7 +1689,7 @@ func (*Volume) ProtoMessage() {} func (x *Volume) ProtoReflect() protoreflect.Message { mi := &file_csi_proto_msgTypes[12] - if protoimpl.UnsafeEnabled && x != nil { + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -1634,10 +1740,7 @@ func (x *Volume) GetAccessibleTopology() []*Topology { } type TopologyRequirement struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - + state protoimpl.MessageState `protogen:"open.v1"` // Specifies the list of topologies the provisioned volume MUST be // accessible from. // This field is OPTIONAL. If TopologyRequirement is specified either @@ -1789,16 +1892,16 @@ type TopologyRequirement struct { // combination of "Z3" and other possibilities from the list of // requisite. If that's not possible, it should fall back to a // combination of other possibilities from the list of requisite. - Preferred []*Topology `protobuf:"bytes,2,rep,name=preferred,proto3" json:"preferred,omitempty"` + Preferred []*Topology `protobuf:"bytes,2,rep,name=preferred,proto3" json:"preferred,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } func (x *TopologyRequirement) Reset() { *x = TopologyRequirement{} - if protoimpl.UnsafeEnabled { - mi := &file_csi_proto_msgTypes[13] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_csi_proto_msgTypes[13] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *TopologyRequirement) String() string { @@ -1809,7 +1912,7 @@ func (*TopologyRequirement) ProtoMessage() {} func (x *TopologyRequirement) ProtoReflect() protoreflect.Message { mi := &file_csi_proto_msgTypes[13] - if protoimpl.UnsafeEnabled && x != nil { + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -1868,20 +1971,17 @@ func (x *TopologyRequirement) GetPreferred() []*Topology { // alphanumeric character with '-', '_', '.', or alphanumerics in // between. type Topology struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache + state protoimpl.MessageState `protogen:"open.v1"` + Segments map[string]string `protobuf:"bytes,1,rep,name=segments,proto3" json:"segments,omitempty" protobuf_key:"bytes,1,opt,name=key" protobuf_val:"bytes,2,opt,name=value"` unknownFields protoimpl.UnknownFields - - Segments map[string]string `protobuf:"bytes,1,rep,name=segments,proto3" json:"segments,omitempty" protobuf_key:"bytes,1,opt,name=key,proto3" protobuf_val:"bytes,2,opt,name=value,proto3"` + sizeCache protoimpl.SizeCache } func (x *Topology) Reset() { *x = Topology{} - if protoimpl.UnsafeEnabled { - mi := &file_csi_proto_msgTypes[14] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_csi_proto_msgTypes[14] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *Topology) String() string { @@ -1892,7 +1992,7 @@ func (*Topology) ProtoMessage() {} func (x *Topology) ProtoReflect() protoreflect.Message { mi := &file_csi_proto_msgTypes[14] - if protoimpl.UnsafeEnabled && x != nil { + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -1915,26 +2015,23 @@ func (x *Topology) GetSegments() map[string]string { } type DeleteVolumeRequest struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - + state protoimpl.MessageState `protogen:"open.v1"` // The ID of the volume to be deprovisioned. // This field is REQUIRED. VolumeId string `protobuf:"bytes,1,opt,name=volume_id,json=volumeId,proto3" json:"volume_id,omitempty"` // Secrets required by plugin to complete volume deletion request. // This field is OPTIONAL. Refer to the `Secrets Requirements` // section on how to use this field. - Secrets map[string]string `protobuf:"bytes,2,rep,name=secrets,proto3" json:"secrets,omitempty" protobuf_key:"bytes,1,opt,name=key,proto3" protobuf_val:"bytes,2,opt,name=value,proto3"` + Secrets map[string]string `protobuf:"bytes,2,rep,name=secrets,proto3" json:"secrets,omitempty" protobuf_key:"bytes,1,opt,name=key" protobuf_val:"bytes,2,opt,name=value"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } func (x *DeleteVolumeRequest) Reset() { *x = DeleteVolumeRequest{} - if protoimpl.UnsafeEnabled { - mi := &file_csi_proto_msgTypes[15] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_csi_proto_msgTypes[15] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *DeleteVolumeRequest) String() string { @@ -1945,7 +2042,7 @@ func (*DeleteVolumeRequest) ProtoMessage() {} func (x *DeleteVolumeRequest) ProtoReflect() protoreflect.Message { mi := &file_csi_proto_msgTypes[15] - if protoimpl.UnsafeEnabled && x != nil { + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -1975,18 +2072,16 @@ func (x *DeleteVolumeRequest) GetSecrets() map[string]string { } type DeleteVolumeResponse struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache + state protoimpl.MessageState `protogen:"open.v1"` unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } func (x *DeleteVolumeResponse) Reset() { *x = DeleteVolumeResponse{} - if protoimpl.UnsafeEnabled { - mi := &file_csi_proto_msgTypes[16] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_csi_proto_msgTypes[16] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *DeleteVolumeResponse) String() string { @@ -1997,7 +2092,7 @@ func (*DeleteVolumeResponse) ProtoMessage() {} func (x *DeleteVolumeResponse) ProtoReflect() protoreflect.Message { mi := &file_csi_proto_msgTypes[16] - if protoimpl.UnsafeEnabled && x != nil { + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -2013,10 +2108,7 @@ func (*DeleteVolumeResponse) Descriptor() ([]byte, []int) { } type ControllerPublishVolumeRequest struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - + state protoimpl.MessageState `protogen:"open.v1"` // The ID of the volume to be used on a node. // This field is REQUIRED. VolumeId string `protobuf:"bytes,1,opt,name=volume_id,json=volumeId,proto3" json:"volume_id,omitempty"` @@ -2036,21 +2128,21 @@ type ControllerPublishVolumeRequest struct { // Secrets required by plugin to complete controller publish volume // request. This field is OPTIONAL. Refer to the // `Secrets Requirements` section on how to use this field. - Secrets map[string]string `protobuf:"bytes,5,rep,name=secrets,proto3" json:"secrets,omitempty" protobuf_key:"bytes,1,opt,name=key,proto3" protobuf_val:"bytes,2,opt,name=value,proto3"` + Secrets map[string]string `protobuf:"bytes,5,rep,name=secrets,proto3" json:"secrets,omitempty" protobuf_key:"bytes,1,opt,name=key" protobuf_val:"bytes,2,opt,name=value"` // Volume context as returned by SP in // CreateVolumeResponse.Volume.volume_context. // This field is OPTIONAL and MUST match the volume_context of the // volume identified by `volume_id`. - VolumeContext map[string]string `protobuf:"bytes,6,rep,name=volume_context,json=volumeContext,proto3" json:"volume_context,omitempty" protobuf_key:"bytes,1,opt,name=key,proto3" protobuf_val:"bytes,2,opt,name=value,proto3"` + VolumeContext map[string]string `protobuf:"bytes,6,rep,name=volume_context,json=volumeContext,proto3" json:"volume_context,omitempty" protobuf_key:"bytes,1,opt,name=key" protobuf_val:"bytes,2,opt,name=value"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } func (x *ControllerPublishVolumeRequest) Reset() { *x = ControllerPublishVolumeRequest{} - if protoimpl.UnsafeEnabled { - mi := &file_csi_proto_msgTypes[17] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_csi_proto_msgTypes[17] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *ControllerPublishVolumeRequest) String() string { @@ -2061,7 +2153,7 @@ func (*ControllerPublishVolumeRequest) ProtoMessage() {} func (x *ControllerPublishVolumeRequest) ProtoReflect() protoreflect.Message { mi := &file_csi_proto_msgTypes[17] - if protoimpl.UnsafeEnabled && x != nil { + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -2119,10 +2211,7 @@ func (x *ControllerPublishVolumeRequest) GetVolumeContext() map[string]string { } type ControllerPublishVolumeResponse struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - + state protoimpl.MessageState `protogen:"open.v1"` // Opaque static publish properties of the volume. SP MAY use this // field to ensure subsequent `NodeStageVolume` or `NodePublishVolume` // calls calls have contextual information. @@ -2136,16 +2225,16 @@ type ControllerPublishVolumeResponse struct { // identify the volume. // This field is OPTIONAL and when present MUST be passed to // subsequent `NodeStageVolume` or `NodePublishVolume` calls - PublishContext map[string]string `protobuf:"bytes,1,rep,name=publish_context,json=publishContext,proto3" json:"publish_context,omitempty" protobuf_key:"bytes,1,opt,name=key,proto3" protobuf_val:"bytes,2,opt,name=value,proto3"` + PublishContext map[string]string `protobuf:"bytes,1,rep,name=publish_context,json=publishContext,proto3" json:"publish_context,omitempty" protobuf_key:"bytes,1,opt,name=key" protobuf_val:"bytes,2,opt,name=value"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } func (x *ControllerPublishVolumeResponse) Reset() { *x = ControllerPublishVolumeResponse{} - if protoimpl.UnsafeEnabled { - mi := &file_csi_proto_msgTypes[18] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_csi_proto_msgTypes[18] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *ControllerPublishVolumeResponse) String() string { @@ -2156,7 +2245,7 @@ func (*ControllerPublishVolumeResponse) ProtoMessage() {} func (x *ControllerPublishVolumeResponse) ProtoReflect() protoreflect.Message { mi := &file_csi_proto_msgTypes[18] - if protoimpl.UnsafeEnabled && x != nil { + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -2179,10 +2268,7 @@ func (x *ControllerPublishVolumeResponse) GetPublishContext() map[string]string } type ControllerUnpublishVolumeRequest struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - + state protoimpl.MessageState `protogen:"open.v1"` // The ID of the volume. This field is REQUIRED. VolumeId string `protobuf:"bytes,1,opt,name=volume_id,json=volumeId,proto3" json:"volume_id,omitempty"` // The ID of the node. This field is OPTIONAL. The CO SHOULD set this @@ -2196,16 +2282,16 @@ type ControllerUnpublishVolumeRequest struct { // ControllerPublishVolume call for the specified volume. // This field is OPTIONAL. Refer to the `Secrets Requirements` // section on how to use this field. - Secrets map[string]string `protobuf:"bytes,3,rep,name=secrets,proto3" json:"secrets,omitempty" protobuf_key:"bytes,1,opt,name=key,proto3" protobuf_val:"bytes,2,opt,name=value,proto3"` + Secrets map[string]string `protobuf:"bytes,3,rep,name=secrets,proto3" json:"secrets,omitempty" protobuf_key:"bytes,1,opt,name=key" protobuf_val:"bytes,2,opt,name=value"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } func (x *ControllerUnpublishVolumeRequest) Reset() { *x = ControllerUnpublishVolumeRequest{} - if protoimpl.UnsafeEnabled { - mi := &file_csi_proto_msgTypes[19] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_csi_proto_msgTypes[19] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *ControllerUnpublishVolumeRequest) String() string { @@ -2216,7 +2302,7 @@ func (*ControllerUnpublishVolumeRequest) ProtoMessage() {} func (x *ControllerUnpublishVolumeRequest) ProtoReflect() protoreflect.Message { mi := &file_csi_proto_msgTypes[19] - if protoimpl.UnsafeEnabled && x != nil { + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -2253,18 +2339,16 @@ func (x *ControllerUnpublishVolumeRequest) GetSecrets() map[string]string { } type ControllerUnpublishVolumeResponse struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache + state protoimpl.MessageState `protogen:"open.v1"` unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } func (x *ControllerUnpublishVolumeResponse) Reset() { *x = ControllerUnpublishVolumeResponse{} - if protoimpl.UnsafeEnabled { - mi := &file_csi_proto_msgTypes[20] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_csi_proto_msgTypes[20] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *ControllerUnpublishVolumeResponse) String() string { @@ -2275,7 +2359,7 @@ func (*ControllerUnpublishVolumeResponse) ProtoMessage() {} func (x *ControllerUnpublishVolumeResponse) ProtoReflect() protoreflect.Message { mi := &file_csi_proto_msgTypes[20] - if protoimpl.UnsafeEnabled && x != nil { + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -2291,40 +2375,37 @@ func (*ControllerUnpublishVolumeResponse) Descriptor() ([]byte, []int) { } type ValidateVolumeCapabilitiesRequest struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - + state protoimpl.MessageState `protogen:"open.v1"` // The ID of the volume to check. This field is REQUIRED. VolumeId string `protobuf:"bytes,1,opt,name=volume_id,json=volumeId,proto3" json:"volume_id,omitempty"` // Volume context as returned by SP in // CreateVolumeResponse.Volume.volume_context. // This field is OPTIONAL and MUST match the volume_context of the // volume identified by `volume_id`. - VolumeContext map[string]string `protobuf:"bytes,2,rep,name=volume_context,json=volumeContext,proto3" json:"volume_context,omitempty" protobuf_key:"bytes,1,opt,name=key,proto3" protobuf_val:"bytes,2,opt,name=value,proto3"` + VolumeContext map[string]string `protobuf:"bytes,2,rep,name=volume_context,json=volumeContext,proto3" json:"volume_context,omitempty" protobuf_key:"bytes,1,opt,name=key" protobuf_val:"bytes,2,opt,name=value"` // The capabilities that the CO wants to check for the volume. This // call SHALL return "confirmed" only if all the volume capabilities // specified below are supported. This field is REQUIRED. VolumeCapabilities []*VolumeCapability `protobuf:"bytes,3,rep,name=volume_capabilities,json=volumeCapabilities,proto3" json:"volume_capabilities,omitempty"` // See CreateVolumeRequest.parameters. // This field is OPTIONAL. - Parameters map[string]string `protobuf:"bytes,4,rep,name=parameters,proto3" json:"parameters,omitempty" protobuf_key:"bytes,1,opt,name=key,proto3" protobuf_val:"bytes,2,opt,name=value,proto3"` + Parameters map[string]string `protobuf:"bytes,4,rep,name=parameters,proto3" json:"parameters,omitempty" protobuf_key:"bytes,1,opt,name=key" protobuf_val:"bytes,2,opt,name=value"` // Secrets required by plugin to complete volume validation request. // This field is OPTIONAL. Refer to the `Secrets Requirements` // section on how to use this field. - Secrets map[string]string `protobuf:"bytes,5,rep,name=secrets,proto3" json:"secrets,omitempty" protobuf_key:"bytes,1,opt,name=key,proto3" protobuf_val:"bytes,2,opt,name=value,proto3"` + Secrets map[string]string `protobuf:"bytes,5,rep,name=secrets,proto3" json:"secrets,omitempty" protobuf_key:"bytes,1,opt,name=key" protobuf_val:"bytes,2,opt,name=value"` // See CreateVolumeRequest.mutable_parameters. // This field is OPTIONAL. - MutableParameters map[string]string `protobuf:"bytes,6,rep,name=mutable_parameters,json=mutableParameters,proto3" json:"mutable_parameters,omitempty" protobuf_key:"bytes,1,opt,name=key,proto3" protobuf_val:"bytes,2,opt,name=value,proto3"` + MutableParameters map[string]string `protobuf:"bytes,6,rep,name=mutable_parameters,json=mutableParameters,proto3" json:"mutable_parameters,omitempty" protobuf_key:"bytes,1,opt,name=key" protobuf_val:"bytes,2,opt,name=value"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } func (x *ValidateVolumeCapabilitiesRequest) Reset() { *x = ValidateVolumeCapabilitiesRequest{} - if protoimpl.UnsafeEnabled { - mi := &file_csi_proto_msgTypes[21] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_csi_proto_msgTypes[21] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *ValidateVolumeCapabilitiesRequest) String() string { @@ -2335,7 +2416,7 @@ func (*ValidateVolumeCapabilitiesRequest) ProtoMessage() {} func (x *ValidateVolumeCapabilitiesRequest) ProtoReflect() protoreflect.Message { mi := &file_csi_proto_msgTypes[21] - if protoimpl.UnsafeEnabled && x != nil { + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -2393,10 +2474,7 @@ func (x *ValidateVolumeCapabilitiesRequest) GetMutableParameters() map[string]st } type ValidateVolumeCapabilitiesResponse struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - + state protoimpl.MessageState `protogen:"open.v1"` // Confirmed indicates to the CO the set of capabilities that the // plugin has validated. This field SHALL only be set to a non-empty // value for successful validation responses. @@ -2409,16 +2487,16 @@ type ValidateVolumeCapabilitiesResponse struct { // Message to the CO if `confirmed` above is empty. This field is // OPTIONAL. // An empty string is equal to an unspecified field value. - Message string `protobuf:"bytes,2,opt,name=message,proto3" json:"message,omitempty"` + Message string `protobuf:"bytes,2,opt,name=message,proto3" json:"message,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } func (x *ValidateVolumeCapabilitiesResponse) Reset() { *x = ValidateVolumeCapabilitiesResponse{} - if protoimpl.UnsafeEnabled { - mi := &file_csi_proto_msgTypes[22] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_csi_proto_msgTypes[22] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *ValidateVolumeCapabilitiesResponse) String() string { @@ -2429,7 +2507,7 @@ func (*ValidateVolumeCapabilitiesResponse) ProtoMessage() {} func (x *ValidateVolumeCapabilitiesResponse) ProtoReflect() protoreflect.Message { mi := &file_csi_proto_msgTypes[22] - if protoimpl.UnsafeEnabled && x != nil { + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -2459,10 +2537,7 @@ func (x *ValidateVolumeCapabilitiesResponse) GetMessage() string { } type ListVolumesRequest struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - + state protoimpl.MessageState `protogen:"open.v1"` // If specified (non-zero value), the Plugin MUST NOT return more // entries than this number in the response. If the actual number of // entries is more than this number, the Plugin MUST set `next_token` @@ -2477,15 +2552,15 @@ type ListVolumesRequest struct { // next page of entries. This field is OPTIONAL. // An empty string is equal to an unspecified field value. StartingToken string `protobuf:"bytes,2,opt,name=starting_token,json=startingToken,proto3" json:"starting_token,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } func (x *ListVolumesRequest) Reset() { *x = ListVolumesRequest{} - if protoimpl.UnsafeEnabled { - mi := &file_csi_proto_msgTypes[23] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_csi_proto_msgTypes[23] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *ListVolumesRequest) String() string { @@ -2496,7 +2571,7 @@ func (*ListVolumesRequest) ProtoMessage() {} func (x *ListVolumesRequest) ProtoReflect() protoreflect.Message { mi := &file_csi_proto_msgTypes[23] - if protoimpl.UnsafeEnabled && x != nil { + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -2526,10 +2601,7 @@ func (x *ListVolumesRequest) GetStartingToken() string { } type ListVolumesResponse struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - + state protoimpl.MessageState `protogen:"open.v1"` Entries []*ListVolumesResponse_Entry `protobuf:"bytes,1,rep,name=entries,proto3" json:"entries,omitempty"` // This token allows you to get the next page of entries for // `ListVolumes` request. If the number of entries is larger than @@ -2537,16 +2609,16 @@ type ListVolumesResponse struct { // `starting_token` field in the next `ListVolumes` request. This // field is OPTIONAL. // An empty string is equal to an unspecified field value. - NextToken string `protobuf:"bytes,2,opt,name=next_token,json=nextToken,proto3" json:"next_token,omitempty"` + NextToken string `protobuf:"bytes,2,opt,name=next_token,json=nextToken,proto3" json:"next_token,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } func (x *ListVolumesResponse) Reset() { *x = ListVolumesResponse{} - if protoimpl.UnsafeEnabled { - mi := &file_csi_proto_msgTypes[24] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_csi_proto_msgTypes[24] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *ListVolumesResponse) String() string { @@ -2557,7 +2629,7 @@ func (*ListVolumesResponse) ProtoMessage() {} func (x *ListVolumesResponse) ProtoReflect() protoreflect.Message { mi := &file_csi_proto_msgTypes[24] - if protoimpl.UnsafeEnabled && x != nil { + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -2586,34 +2658,46 @@ func (x *ListVolumesResponse) GetNextToken() string { return "" } -type ControllerGetVolumeRequest struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache +type ControllerListVolumeHealthRequest struct { + state protoimpl.MessageState `protogen:"open.v1"` + // If specified (non-zero value), the Plugin MUST NOT return more + // entries than this number in the response. If the actual number of + // entries is more than this number, the Plugin MUST set `next_token` + // in the response which can be used to get the next page of entries + // in the subsequent `ControllerListVolumeHealth` call. This field is + // OPTIONAL. If not specified (zero value), it means there is no + // restriction on the number of entries that can be returned. + // The value of this field MUST NOT be negative. + MaxEntries int32 `protobuf:"varint,1,opt,name=max_entries,json=maxEntries,proto3" json:"max_entries,omitempty"` + // A token to specify where to start paginating. Set this field to + // `next_token` returned by a previous `ControllerListVolumeHealth` + // call to get the next page of entries. This field is OPTIONAL. + // An empty string is equal to an unspecified field value. + StartingToken string `protobuf:"bytes,2,opt,name=starting_token,json=startingToken,proto3" json:"starting_token,omitempty"` + // Secrets required by plugin to complete the request. + // This field is OPTIONAL. Refer to the `Secrets Requirements` + // section on how to use this field. + Secrets map[string]string `protobuf:"bytes,3,rep,name=secrets,proto3" json:"secrets,omitempty" protobuf_key:"bytes,1,opt,name=key" protobuf_val:"bytes,2,opt,name=value"` unknownFields protoimpl.UnknownFields - - // The ID of the volume to fetch current volume information for. - // This field is REQUIRED. - VolumeId string `protobuf:"bytes,1,opt,name=volume_id,json=volumeId,proto3" json:"volume_id,omitempty"` + sizeCache protoimpl.SizeCache } -func (x *ControllerGetVolumeRequest) Reset() { - *x = ControllerGetVolumeRequest{} - if protoimpl.UnsafeEnabled { - mi := &file_csi_proto_msgTypes[25] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } +func (x *ControllerListVolumeHealthRequest) Reset() { + *x = ControllerListVolumeHealthRequest{} + mi := &file_csi_proto_msgTypes[25] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } -func (x *ControllerGetVolumeRequest) String() string { +func (x *ControllerListVolumeHealthRequest) String() string { return protoimpl.X.MessageStringOf(x) } -func (*ControllerGetVolumeRequest) ProtoMessage() {} +func (*ControllerListVolumeHealthRequest) ProtoMessage() {} -func (x *ControllerGetVolumeRequest) ProtoReflect() protoreflect.Message { +func (x *ControllerListVolumeHealthRequest) ProtoReflect() protoreflect.Message { mi := &file_csi_proto_msgTypes[25] - if protoimpl.UnsafeEnabled && x != nil { + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -2623,47 +2707,63 @@ func (x *ControllerGetVolumeRequest) ProtoReflect() protoreflect.Message { return mi.MessageOf(x) } -// Deprecated: Use ControllerGetVolumeRequest.ProtoReflect.Descriptor instead. -func (*ControllerGetVolumeRequest) Descriptor() ([]byte, []int) { +// Deprecated: Use ControllerListVolumeHealthRequest.ProtoReflect.Descriptor instead. +func (*ControllerListVolumeHealthRequest) Descriptor() ([]byte, []int) { return file_csi_proto_rawDescGZIP(), []int{25} } -func (x *ControllerGetVolumeRequest) GetVolumeId() string { +func (x *ControllerListVolumeHealthRequest) GetMaxEntries() int32 { if x != nil { - return x.VolumeId + return x.MaxEntries + } + return 0 +} + +func (x *ControllerListVolumeHealthRequest) GetStartingToken() string { + if x != nil { + return x.StartingToken } return "" } -type ControllerGetVolumeResponse struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields +func (x *ControllerListVolumeHealthRequest) GetSecrets() map[string]string { + if x != nil { + return x.Secrets + } + return nil +} - // This field is REQUIRED - Volume *Volume `protobuf:"bytes,1,opt,name=volume,proto3" json:"volume,omitempty"` - // This field is REQUIRED. - Status *ControllerGetVolumeResponse_VolumeStatus `protobuf:"bytes,2,opt,name=status,proto3" json:"status,omitempty"` +type ControllerListVolumeHealthResponse struct { + state protoimpl.MessageState `protogen:"open.v1"` + // List of abnormal volume health entries. + Entries []*VolumeHealth `protobuf:"bytes,1,rep,name=entries,proto3" json:"entries,omitempty"` + // This token allows you to get the next page of entries for + // `ControllerListVolumeHealth` request. If the number of entries is + // larger than `max_entries`, use the `next_token` as a value for the + // `starting_token` field in the next request. This field is + // OPTIONAL. + // An empty string is equal to an unspecified field value. + NextToken string `protobuf:"bytes,2,opt,name=next_token,json=nextToken,proto3" json:"next_token,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } -func (x *ControllerGetVolumeResponse) Reset() { - *x = ControllerGetVolumeResponse{} - if protoimpl.UnsafeEnabled { - mi := &file_csi_proto_msgTypes[26] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } +func (x *ControllerListVolumeHealthResponse) Reset() { + *x = ControllerListVolumeHealthResponse{} + mi := &file_csi_proto_msgTypes[26] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } -func (x *ControllerGetVolumeResponse) String() string { +func (x *ControllerListVolumeHealthResponse) String() string { return protoimpl.X.MessageStringOf(x) } -func (*ControllerGetVolumeResponse) ProtoMessage() {} +func (*ControllerListVolumeHealthResponse) ProtoMessage() {} -func (x *ControllerGetVolumeResponse) ProtoReflect() protoreflect.Message { +func (x *ControllerListVolumeHealthResponse) ProtoReflect() protoreflect.Message { mi := &file_csi_proto_msgTypes[26] - if protoimpl.UnsafeEnabled && x != nil { + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -2673,66 +2773,76 @@ func (x *ControllerGetVolumeResponse) ProtoReflect() protoreflect.Message { return mi.MessageOf(x) } -// Deprecated: Use ControllerGetVolumeResponse.ProtoReflect.Descriptor instead. -func (*ControllerGetVolumeResponse) Descriptor() ([]byte, []int) { +// Deprecated: Use ControllerListVolumeHealthResponse.ProtoReflect.Descriptor instead. +func (*ControllerListVolumeHealthResponse) Descriptor() ([]byte, []int) { return file_csi_proto_rawDescGZIP(), []int{26} } -func (x *ControllerGetVolumeResponse) GetVolume() *Volume { +func (x *ControllerListVolumeHealthResponse) GetEntries() []*VolumeHealth { if x != nil { - return x.Volume + return x.Entries } return nil } -func (x *ControllerGetVolumeResponse) GetStatus() *ControllerGetVolumeResponse_VolumeStatus { +func (x *ControllerListVolumeHealthResponse) GetNextToken() string { if x != nil { - return x.Status + return x.NextToken } - return nil + return "" } -type ControllerModifyVolumeRequest struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - - // Contains identity information for the existing volume. +type VolumeHealth struct { + state protoimpl.MessageState `protogen:"open.v1"` + // The ID of the volume. // This field is REQUIRED. VolumeId string `protobuf:"bytes,1,opt,name=volume_id,json=volumeId,proto3" json:"volume_id,omitempty"` - // Secrets required by plugin to complete modify volume request. - // This field is OPTIONAL. Refer to the `Secrets Requirements` - // section on how to use this field. - Secrets map[string]string `protobuf:"bytes,2,rep,name=secrets,proto3" json:"secrets,omitempty" protobuf_key:"bytes,1,opt,name=key,proto3" protobuf_val:"bytes,2,opt,name=value,proto3"` - // Plugin specific volume attributes to mutate, passed in as - // opaque key-value pairs. - // This field is REQUIRED. The Plugin is responsible for - // parsing and validating these parameters. COs will treat these - // as opaque. The CO SHOULD specify the intended values of all mutable - // parameters it intends to modify. SPs MUST NOT modify volumes based - // on the absence of keys, only keys that are specified should result - // in modifications to the volume. - MutableParameters map[string]string `protobuf:"bytes,3,rep,name=mutable_parameters,json=mutableParameters,proto3" json:"mutable_parameters,omitempty" protobuf_key:"bytes,1,opt,name=key,proto3" protobuf_val:"bytes,2,opt,name=value,proto3"` + // Health statuses associated with the volume. An empty list means no + // adverse health condition is known by the Plugin. + // + // The SP MAY report one or more health issues with the volume at the + // same time. A future version of the CSI spec MAY introduce + // additional VolumeHealthErrorType values. A Plugin that adopts a + // newer spec version MAY report newer error types alongside existing + // ones, but MUST NOT remove an older error entry from + // health_statuses until that condition is no longer present. + // + // COs MUST ignore unknown VolumeHealthErrorType values, that they + // don't know about. + // + // For example: + // - CSI spec v1.12.3 + // A Plugin reports an adverse health condition as DEGRADED. + // - CSI spec v1.12.5 + // A new VolumeHealthErrorType value MULTIPATH_LOSS is introduced. + // The Plugin upgrades and now reports [DEGRADED, MULTIPATH_LOSS] + // for this volume. An older CO that does not recognize + // MULTIPATH_LOSS still acts on DEGRADED as before and surfaces + // the unknown value for observability without taking automated + // action on it. + // + // This field is OPTIONAL. + HealthStatuses []*VolumeHealth_VolumeHealthEntry `protobuf:"bytes,2,rep,name=health_statuses,json=healthStatuses,proto3" json:"health_statuses,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } -func (x *ControllerModifyVolumeRequest) Reset() { - *x = ControllerModifyVolumeRequest{} - if protoimpl.UnsafeEnabled { - mi := &file_csi_proto_msgTypes[27] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } +func (x *VolumeHealth) Reset() { + *x = VolumeHealth{} + mi := &file_csi_proto_msgTypes[27] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } -func (x *ControllerModifyVolumeRequest) String() string { +func (x *VolumeHealth) String() string { return protoimpl.X.MessageStringOf(x) } -func (*ControllerModifyVolumeRequest) ProtoMessage() {} +func (*VolumeHealth) ProtoMessage() {} -func (x *ControllerModifyVolumeRequest) ProtoReflect() protoreflect.Message { +func (x *VolumeHealth) ProtoReflect() protoreflect.Message { mi := &file_csi_proto_msgTypes[27] - if protoimpl.UnsafeEnabled && x != nil { + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -2742,56 +2852,54 @@ func (x *ControllerModifyVolumeRequest) ProtoReflect() protoreflect.Message { return mi.MessageOf(x) } -// Deprecated: Use ControllerModifyVolumeRequest.ProtoReflect.Descriptor instead. -func (*ControllerModifyVolumeRequest) Descriptor() ([]byte, []int) { +// Deprecated: Use VolumeHealth.ProtoReflect.Descriptor instead. +func (*VolumeHealth) Descriptor() ([]byte, []int) { return file_csi_proto_rawDescGZIP(), []int{27} } -func (x *ControllerModifyVolumeRequest) GetVolumeId() string { +func (x *VolumeHealth) GetVolumeId() string { if x != nil { return x.VolumeId } return "" } -func (x *ControllerModifyVolumeRequest) GetSecrets() map[string]string { - if x != nil { - return x.Secrets - } - return nil -} - -func (x *ControllerModifyVolumeRequest) GetMutableParameters() map[string]string { +func (x *VolumeHealth) GetHealthStatuses() []*VolumeHealth_VolumeHealthEntry { if x != nil { - return x.MutableParameters + return x.HealthStatuses } return nil } -type ControllerModifyVolumeResponse struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache +type ControllerGetVolumeHealthRequest struct { + state protoimpl.MessageState `protogen:"open.v1"` + // The ID of the volume to fetch health information for. + // This field is REQUIRED. + VolumeId string `protobuf:"bytes,1,opt,name=volume_id,json=volumeId,proto3" json:"volume_id,omitempty"` + // Secrets required by plugin to complete the request. + // This field is OPTIONAL. Refer to the `Secrets Requirements` + // section on how to use this field. + Secrets map[string]string `protobuf:"bytes,2,rep,name=secrets,proto3" json:"secrets,omitempty" protobuf_key:"bytes,1,opt,name=key" protobuf_val:"bytes,2,opt,name=value"` unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } -func (x *ControllerModifyVolumeResponse) Reset() { - *x = ControllerModifyVolumeResponse{} - if protoimpl.UnsafeEnabled { - mi := &file_csi_proto_msgTypes[28] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } +func (x *ControllerGetVolumeHealthRequest) Reset() { + *x = ControllerGetVolumeHealthRequest{} + mi := &file_csi_proto_msgTypes[28] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } -func (x *ControllerModifyVolumeResponse) String() string { +func (x *ControllerGetVolumeHealthRequest) String() string { return protoimpl.X.MessageStringOf(x) } -func (*ControllerModifyVolumeResponse) ProtoMessage() {} +func (*ControllerGetVolumeHealthRequest) ProtoMessage() {} -func (x *ControllerModifyVolumeResponse) ProtoReflect() protoreflect.Message { +func (x *ControllerGetVolumeHealthRequest) ProtoReflect() protoreflect.Message { mi := &file_csi_proto_msgTypes[28] - if protoimpl.UnsafeEnabled && x != nil { + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -2801,54 +2909,50 @@ func (x *ControllerModifyVolumeResponse) ProtoReflect() protoreflect.Message { return mi.MessageOf(x) } -// Deprecated: Use ControllerModifyVolumeResponse.ProtoReflect.Descriptor instead. -func (*ControllerModifyVolumeResponse) Descriptor() ([]byte, []int) { +// Deprecated: Use ControllerGetVolumeHealthRequest.ProtoReflect.Descriptor instead. +func (*ControllerGetVolumeHealthRequest) Descriptor() ([]byte, []int) { return file_csi_proto_rawDescGZIP(), []int{28} } -type GetCapacityRequest struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - - // If specified, the Plugin SHALL report the capacity of the storage - // that can be used to provision volumes that satisfy ALL of the - // specified `volume_capabilities`. These are the same - // `volume_capabilities` the CO will use in `CreateVolumeRequest`. - // This field is OPTIONAL. - VolumeCapabilities []*VolumeCapability `protobuf:"bytes,1,rep,name=volume_capabilities,json=volumeCapabilities,proto3" json:"volume_capabilities,omitempty"` - // If specified, the Plugin SHALL report the capacity of the storage - // that can be used to provision volumes with the given Plugin - // specific `parameters`. These are the same `parameters` the CO will - // use in `CreateVolumeRequest`. This field is OPTIONAL. - Parameters map[string]string `protobuf:"bytes,2,rep,name=parameters,proto3" json:"parameters,omitempty" protobuf_key:"bytes,1,opt,name=key,proto3" protobuf_val:"bytes,2,opt,name=value,proto3"` - // If specified, the Plugin SHALL report the capacity of the storage - // that can be used to provision volumes that in the specified - // `accessible_topology`. This is the same as the - // `accessible_topology` the CO returns in a `CreateVolumeResponse`. - // This field is OPTIONAL. This field SHALL NOT be set unless the - // plugin advertises the VOLUME_ACCESSIBILITY_CONSTRAINTS capability. - AccessibleTopology *Topology `protobuf:"bytes,3,opt,name=accessible_topology,json=accessibleTopology,proto3" json:"accessible_topology,omitempty"` +func (x *ControllerGetVolumeHealthRequest) GetVolumeId() string { + if x != nil { + return x.VolumeId + } + return "" } -func (x *GetCapacityRequest) Reset() { - *x = GetCapacityRequest{} - if protoimpl.UnsafeEnabled { - mi := &file_csi_proto_msgTypes[29] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) +func (x *ControllerGetVolumeHealthRequest) GetSecrets() map[string]string { + if x != nil { + return x.Secrets } + return nil } -func (x *GetCapacityRequest) String() string { +type ControllerGetVolumeHealthResponse struct { + state protoimpl.MessageState `protogen:"open.v1"` + // The health information for the requested volume. + // This field is REQUIRED. + VolumeHealth *VolumeHealth `protobuf:"bytes,1,opt,name=volume_health,json=volumeHealth,proto3" json:"volume_health,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache +} + +func (x *ControllerGetVolumeHealthResponse) Reset() { + *x = ControllerGetVolumeHealthResponse{} + mi := &file_csi_proto_msgTypes[29] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *ControllerGetVolumeHealthResponse) String() string { return protoimpl.X.MessageStringOf(x) } -func (*GetCapacityRequest) ProtoMessage() {} +func (*ControllerGetVolumeHealthResponse) ProtoMessage() {} -func (x *GetCapacityRequest) ProtoReflect() protoreflect.Message { +func (x *ControllerGetVolumeHealthResponse) ProtoReflect() protoreflect.Message { mi := &file_csi_proto_msgTypes[29] - if protoimpl.UnsafeEnabled && x != nil { + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -2858,37 +2962,304 @@ func (x *GetCapacityRequest) ProtoReflect() protoreflect.Message { return mi.MessageOf(x) } -// Deprecated: Use GetCapacityRequest.ProtoReflect.Descriptor instead. -func (*GetCapacityRequest) Descriptor() ([]byte, []int) { +// Deprecated: Use ControllerGetVolumeHealthResponse.ProtoReflect.Descriptor instead. +func (*ControllerGetVolumeHealthResponse) Descriptor() ([]byte, []int) { return file_csi_proto_rawDescGZIP(), []int{29} } -func (x *GetCapacityRequest) GetVolumeCapabilities() []*VolumeCapability { +func (x *ControllerGetVolumeHealthResponse) GetVolumeHealth() *VolumeHealth { if x != nil { - return x.VolumeCapabilities + return x.VolumeHealth } return nil } -func (x *GetCapacityRequest) GetParameters() map[string]string { - if x != nil { - return x.Parameters - } - return nil +type ControllerGetVolumeRequest struct { + state protoimpl.MessageState `protogen:"open.v1"` + // The ID of the volume to fetch current volume information for. + // This field is REQUIRED. + VolumeId string `protobuf:"bytes,1,opt,name=volume_id,json=volumeId,proto3" json:"volume_id,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } -func (x *GetCapacityRequest) GetAccessibleTopology() *Topology { - if x != nil { - return x.AccessibleTopology - } - return nil +func (x *ControllerGetVolumeRequest) Reset() { + *x = ControllerGetVolumeRequest{} + mi := &file_csi_proto_msgTypes[30] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } -type GetCapacityResponse struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields +func (x *ControllerGetVolumeRequest) String() string { + return protoimpl.X.MessageStringOf(x) +} +func (*ControllerGetVolumeRequest) ProtoMessage() {} + +func (x *ControllerGetVolumeRequest) ProtoReflect() protoreflect.Message { + mi := &file_csi_proto_msgTypes[30] + if x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use ControllerGetVolumeRequest.ProtoReflect.Descriptor instead. +func (*ControllerGetVolumeRequest) Descriptor() ([]byte, []int) { + return file_csi_proto_rawDescGZIP(), []int{30} +} + +func (x *ControllerGetVolumeRequest) GetVolumeId() string { + if x != nil { + return x.VolumeId + } + return "" +} + +type ControllerGetVolumeResponse struct { + state protoimpl.MessageState `protogen:"open.v1"` + // This field is REQUIRED + Volume *Volume `protobuf:"bytes,1,opt,name=volume,proto3" json:"volume,omitempty"` + // This field is REQUIRED. + Status *ControllerGetVolumeResponse_VolumeStatus `protobuf:"bytes,2,opt,name=status,proto3" json:"status,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache +} + +func (x *ControllerGetVolumeResponse) Reset() { + *x = ControllerGetVolumeResponse{} + mi := &file_csi_proto_msgTypes[31] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *ControllerGetVolumeResponse) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*ControllerGetVolumeResponse) ProtoMessage() {} + +func (x *ControllerGetVolumeResponse) ProtoReflect() protoreflect.Message { + mi := &file_csi_proto_msgTypes[31] + if x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use ControllerGetVolumeResponse.ProtoReflect.Descriptor instead. +func (*ControllerGetVolumeResponse) Descriptor() ([]byte, []int) { + return file_csi_proto_rawDescGZIP(), []int{31} +} + +func (x *ControllerGetVolumeResponse) GetVolume() *Volume { + if x != nil { + return x.Volume + } + return nil +} + +func (x *ControllerGetVolumeResponse) GetStatus() *ControllerGetVolumeResponse_VolumeStatus { + if x != nil { + return x.Status + } + return nil +} + +type ControllerModifyVolumeRequest struct { + state protoimpl.MessageState `protogen:"open.v1"` + // Contains identity information for the existing volume. + // This field is REQUIRED. + VolumeId string `protobuf:"bytes,1,opt,name=volume_id,json=volumeId,proto3" json:"volume_id,omitempty"` + // Secrets required by plugin to complete modify volume request. + // This field is OPTIONAL. Refer to the `Secrets Requirements` + // section on how to use this field. + Secrets map[string]string `protobuf:"bytes,2,rep,name=secrets,proto3" json:"secrets,omitempty" protobuf_key:"bytes,1,opt,name=key" protobuf_val:"bytes,2,opt,name=value"` + // Plugin specific volume attributes to mutate, passed in as + // opaque key-value pairs. + // This field is REQUIRED. The Plugin is responsible for + // parsing and validating these parameters. COs will treat these + // as opaque. The CO SHOULD specify the intended values of all mutable + // parameters it intends to modify. SPs MUST NOT modify volumes based + // on the absence of keys, only keys that are specified should result + // in modifications to the volume. + MutableParameters map[string]string `protobuf:"bytes,3,rep,name=mutable_parameters,json=mutableParameters,proto3" json:"mutable_parameters,omitempty" protobuf_key:"bytes,1,opt,name=key" protobuf_val:"bytes,2,opt,name=value"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache +} + +func (x *ControllerModifyVolumeRequest) Reset() { + *x = ControllerModifyVolumeRequest{} + mi := &file_csi_proto_msgTypes[32] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *ControllerModifyVolumeRequest) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*ControllerModifyVolumeRequest) ProtoMessage() {} + +func (x *ControllerModifyVolumeRequest) ProtoReflect() protoreflect.Message { + mi := &file_csi_proto_msgTypes[32] + if x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use ControllerModifyVolumeRequest.ProtoReflect.Descriptor instead. +func (*ControllerModifyVolumeRequest) Descriptor() ([]byte, []int) { + return file_csi_proto_rawDescGZIP(), []int{32} +} + +func (x *ControllerModifyVolumeRequest) GetVolumeId() string { + if x != nil { + return x.VolumeId + } + return "" +} + +func (x *ControllerModifyVolumeRequest) GetSecrets() map[string]string { + if x != nil { + return x.Secrets + } + return nil +} + +func (x *ControllerModifyVolumeRequest) GetMutableParameters() map[string]string { + if x != nil { + return x.MutableParameters + } + return nil +} + +type ControllerModifyVolumeResponse struct { + state protoimpl.MessageState `protogen:"open.v1"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache +} + +func (x *ControllerModifyVolumeResponse) Reset() { + *x = ControllerModifyVolumeResponse{} + mi := &file_csi_proto_msgTypes[33] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *ControllerModifyVolumeResponse) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*ControllerModifyVolumeResponse) ProtoMessage() {} + +func (x *ControllerModifyVolumeResponse) ProtoReflect() protoreflect.Message { + mi := &file_csi_proto_msgTypes[33] + if x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use ControllerModifyVolumeResponse.ProtoReflect.Descriptor instead. +func (*ControllerModifyVolumeResponse) Descriptor() ([]byte, []int) { + return file_csi_proto_rawDescGZIP(), []int{33} +} + +type GetCapacityRequest struct { + state protoimpl.MessageState `protogen:"open.v1"` + // If specified, the Plugin SHALL report the capacity of the storage + // that can be used to provision volumes that satisfy ALL of the + // specified `volume_capabilities`. These are the same + // `volume_capabilities` the CO will use in `CreateVolumeRequest`. + // This field is OPTIONAL. + VolumeCapabilities []*VolumeCapability `protobuf:"bytes,1,rep,name=volume_capabilities,json=volumeCapabilities,proto3" json:"volume_capabilities,omitempty"` + // If specified, the Plugin SHALL report the capacity of the storage + // that can be used to provision volumes with the given Plugin + // specific `parameters`. These are the same `parameters` the CO will + // use in `CreateVolumeRequest`. This field is OPTIONAL. + Parameters map[string]string `protobuf:"bytes,2,rep,name=parameters,proto3" json:"parameters,omitempty" protobuf_key:"bytes,1,opt,name=key" protobuf_val:"bytes,2,opt,name=value"` + // If specified, the Plugin SHALL report the capacity of the storage + // that can be used to provision volumes that in the specified + // `accessible_topology`. This is the same as the + // `accessible_topology` the CO returns in a `CreateVolumeResponse`. + // This field is OPTIONAL. This field SHALL NOT be set unless the + // plugin advertises the VOLUME_ACCESSIBILITY_CONSTRAINTS capability. + AccessibleTopology *Topology `protobuf:"bytes,3,opt,name=accessible_topology,json=accessibleTopology,proto3" json:"accessible_topology,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache +} + +func (x *GetCapacityRequest) Reset() { + *x = GetCapacityRequest{} + mi := &file_csi_proto_msgTypes[34] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *GetCapacityRequest) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*GetCapacityRequest) ProtoMessage() {} + +func (x *GetCapacityRequest) ProtoReflect() protoreflect.Message { + mi := &file_csi_proto_msgTypes[34] + if x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use GetCapacityRequest.ProtoReflect.Descriptor instead. +func (*GetCapacityRequest) Descriptor() ([]byte, []int) { + return file_csi_proto_rawDescGZIP(), []int{34} +} + +func (x *GetCapacityRequest) GetVolumeCapabilities() []*VolumeCapability { + if x != nil { + return x.VolumeCapabilities + } + return nil +} + +func (x *GetCapacityRequest) GetParameters() map[string]string { + if x != nil { + return x.Parameters + } + return nil +} + +func (x *GetCapacityRequest) GetAccessibleTopology() *Topology { + if x != nil { + return x.AccessibleTopology + } + return nil +} + +type GetCapacityResponse struct { + state protoimpl.MessageState `protogen:"open.v1"` // The available capacity, in bytes, of the storage that can be used // to provision volumes. If `volume_capabilities` or `parameters` is // specified in the request, the Plugin SHALL take those into @@ -2928,15 +3299,15 @@ type GetCapacityResponse struct { // otherwise. COs MAY use it to make decision about // where to create volumes. MinimumVolumeSize *wrapperspb.Int64Value `protobuf:"bytes,3,opt,name=minimum_volume_size,json=minimumVolumeSize,proto3" json:"minimum_volume_size,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } func (x *GetCapacityResponse) Reset() { *x = GetCapacityResponse{} - if protoimpl.UnsafeEnabled { - mi := &file_csi_proto_msgTypes[30] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_csi_proto_msgTypes[35] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *GetCapacityResponse) String() string { @@ -2946,8 +3317,8 @@ func (x *GetCapacityResponse) String() string { func (*GetCapacityResponse) ProtoMessage() {} func (x *GetCapacityResponse) ProtoReflect() protoreflect.Message { - mi := &file_csi_proto_msgTypes[30] - if protoimpl.UnsafeEnabled && x != nil { + mi := &file_csi_proto_msgTypes[35] + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -2959,7 +3330,7 @@ func (x *GetCapacityResponse) ProtoReflect() protoreflect.Message { // Deprecated: Use GetCapacityResponse.ProtoReflect.Descriptor instead. func (*GetCapacityResponse) Descriptor() ([]byte, []int) { - return file_csi_proto_rawDescGZIP(), []int{30} + return file_csi_proto_rawDescGZIP(), []int{35} } func (x *GetCapacityResponse) GetAvailableCapacity() int64 { @@ -2984,18 +3355,16 @@ func (x *GetCapacityResponse) GetMinimumVolumeSize() *wrapperspb.Int64Value { } type ControllerGetCapabilitiesRequest struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache + state protoimpl.MessageState `protogen:"open.v1"` unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } func (x *ControllerGetCapabilitiesRequest) Reset() { *x = ControllerGetCapabilitiesRequest{} - if protoimpl.UnsafeEnabled { - mi := &file_csi_proto_msgTypes[31] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_csi_proto_msgTypes[36] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *ControllerGetCapabilitiesRequest) String() string { @@ -3005,8 +3374,8 @@ func (x *ControllerGetCapabilitiesRequest) String() string { func (*ControllerGetCapabilitiesRequest) ProtoMessage() {} func (x *ControllerGetCapabilitiesRequest) ProtoReflect() protoreflect.Message { - mi := &file_csi_proto_msgTypes[31] - if protoimpl.UnsafeEnabled && x != nil { + mi := &file_csi_proto_msgTypes[36] + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -3018,26 +3387,23 @@ func (x *ControllerGetCapabilitiesRequest) ProtoReflect() protoreflect.Message { // Deprecated: Use ControllerGetCapabilitiesRequest.ProtoReflect.Descriptor instead. func (*ControllerGetCapabilitiesRequest) Descriptor() ([]byte, []int) { - return file_csi_proto_rawDescGZIP(), []int{31} + return file_csi_proto_rawDescGZIP(), []int{36} } type ControllerGetCapabilitiesResponse struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - + state protoimpl.MessageState `protogen:"open.v1"` // All the capabilities that the controller service supports. This // field is OPTIONAL. - Capabilities []*ControllerServiceCapability `protobuf:"bytes,1,rep,name=capabilities,proto3" json:"capabilities,omitempty"` + Capabilities []*ControllerServiceCapability `protobuf:"bytes,1,rep,name=capabilities,proto3" json:"capabilities,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } func (x *ControllerGetCapabilitiesResponse) Reset() { *x = ControllerGetCapabilitiesResponse{} - if protoimpl.UnsafeEnabled { - mi := &file_csi_proto_msgTypes[32] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_csi_proto_msgTypes[37] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *ControllerGetCapabilitiesResponse) String() string { @@ -3047,8 +3413,8 @@ func (x *ControllerGetCapabilitiesResponse) String() string { func (*ControllerGetCapabilitiesResponse) ProtoMessage() {} func (x *ControllerGetCapabilitiesResponse) ProtoReflect() protoreflect.Message { - mi := &file_csi_proto_msgTypes[32] - if protoimpl.UnsafeEnabled && x != nil { + mi := &file_csi_proto_msgTypes[37] + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -3060,7 +3426,7 @@ func (x *ControllerGetCapabilitiesResponse) ProtoReflect() protoreflect.Message // Deprecated: Use ControllerGetCapabilitiesResponse.ProtoReflect.Descriptor instead. func (*ControllerGetCapabilitiesResponse) Descriptor() ([]byte, []int) { - return file_csi_proto_rawDescGZIP(), []int{32} + return file_csi_proto_rawDescGZIP(), []int{37} } func (x *ControllerGetCapabilitiesResponse) GetCapabilities() []*ControllerServiceCapability { @@ -3072,23 +3438,20 @@ func (x *ControllerGetCapabilitiesResponse) GetCapabilities() []*ControllerServi // Specifies a capability of the controller service. type ControllerServiceCapability struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - - // Types that are assignable to Type: + state protoimpl.MessageState `protogen:"open.v1"` + // Types that are valid to be assigned to Type: // // *ControllerServiceCapability_Rpc - Type isControllerServiceCapability_Type `protobuf_oneof:"type"` + Type isControllerServiceCapability_Type `protobuf_oneof:"type"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } func (x *ControllerServiceCapability) Reset() { *x = ControllerServiceCapability{} - if protoimpl.UnsafeEnabled { - mi := &file_csi_proto_msgTypes[33] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_csi_proto_msgTypes[38] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *ControllerServiceCapability) String() string { @@ -3098,8 +3461,8 @@ func (x *ControllerServiceCapability) String() string { func (*ControllerServiceCapability) ProtoMessage() {} func (x *ControllerServiceCapability) ProtoReflect() protoreflect.Message { - mi := &file_csi_proto_msgTypes[33] - if protoimpl.UnsafeEnabled && x != nil { + mi := &file_csi_proto_msgTypes[38] + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -3111,19 +3474,21 @@ func (x *ControllerServiceCapability) ProtoReflect() protoreflect.Message { // Deprecated: Use ControllerServiceCapability.ProtoReflect.Descriptor instead. func (*ControllerServiceCapability) Descriptor() ([]byte, []int) { - return file_csi_proto_rawDescGZIP(), []int{33} + return file_csi_proto_rawDescGZIP(), []int{38} } -func (m *ControllerServiceCapability) GetType() isControllerServiceCapability_Type { - if m != nil { - return m.Type +func (x *ControllerServiceCapability) GetType() isControllerServiceCapability_Type { + if x != nil { + return x.Type } return nil } func (x *ControllerServiceCapability) GetRpc() *ControllerServiceCapability_RPC { - if x, ok := x.GetType().(*ControllerServiceCapability_Rpc); ok { - return x.Rpc + if x != nil { + if x, ok := x.Type.(*ControllerServiceCapability_Rpc); ok { + return x.Rpc + } } return nil } @@ -3140,10 +3505,7 @@ type ControllerServiceCapability_Rpc struct { func (*ControllerServiceCapability_Rpc) isControllerServiceCapability_Type() {} type CreateSnapshotRequest struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - + state protoimpl.MessageState `protogen:"open.v1"` // The ID of the source volume to be snapshotted. // This field is REQUIRED. SourceVolumeId string `protobuf:"bytes,1,opt,name=source_volume_id,json=sourceVolumeId,proto3" json:"source_volume_id,omitempty"` @@ -3157,7 +3519,7 @@ type CreateSnapshotRequest struct { // Secrets required by plugin to complete snapshot creation request. // This field is OPTIONAL. Refer to the `Secrets Requirements` // section on how to use this field. - Secrets map[string]string `protobuf:"bytes,3,rep,name=secrets,proto3" json:"secrets,omitempty" protobuf_key:"bytes,1,opt,name=key,proto3" protobuf_val:"bytes,2,opt,name=value,proto3"` + Secrets map[string]string `protobuf:"bytes,3,rep,name=secrets,proto3" json:"secrets,omitempty" protobuf_key:"bytes,1,opt,name=key" protobuf_val:"bytes,2,opt,name=value"` // Plugin specific parameters passed in as opaque key-value pairs. // This field is OPTIONAL. The Plugin is responsible for parsing and // validating these parameters. COs will treat these as opaque. @@ -3168,16 +3530,30 @@ type CreateSnapshotRequest struct { // - Specify if the snapshot should be replicated to some place. // - Specify primary or secondary for replication systems that // support snapshotting only on primary. - Parameters map[string]string `protobuf:"bytes,4,rep,name=parameters,proto3" json:"parameters,omitempty" protobuf_key:"bytes,1,opt,name=key,proto3" protobuf_val:"bytes,2,opt,name=value,proto3"` + Parameters map[string]string `protobuf:"bytes,4,rep,name=parameters,proto3" json:"parameters,omitempty" protobuf_key:"bytes,1,opt,name=key" protobuf_val:"bytes,2,opt,name=value"` + // Specifies where (regions, zones, racks, etc.) the provisioned + // snapshot MUST be usable from. A snapshot is usable from a location + // if volumes created from that snapshot are guaranteed to be + // accessible from that location. + // An SP SHALL advertise the requirements for topological + // accessibility information in documentation. COs SHALL only specify + // topological accessibility information supported by the SP. + // This field is OPTIONAL. + // This field SHALL NOT be specified unless the SP has the + // SNAPSHOT_ACCESSIBILITY_CONSTRAINTS plugin capability. + // If this field is not specified and the SP has the + // SNAPSHOT_ACCESSIBILITY_CONSTRAINTS plugin capability, the SP MAY + // choose where the provisioned snapshot is usable from. + AccessibilityRequirements *TopologyRequirement `protobuf:"bytes,5,opt,name=accessibility_requirements,json=accessibilityRequirements,proto3" json:"accessibility_requirements,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } func (x *CreateSnapshotRequest) Reset() { *x = CreateSnapshotRequest{} - if protoimpl.UnsafeEnabled { - mi := &file_csi_proto_msgTypes[34] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_csi_proto_msgTypes[39] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *CreateSnapshotRequest) String() string { @@ -3187,8 +3563,8 @@ func (x *CreateSnapshotRequest) String() string { func (*CreateSnapshotRequest) ProtoMessage() {} func (x *CreateSnapshotRequest) ProtoReflect() protoreflect.Message { - mi := &file_csi_proto_msgTypes[34] - if protoimpl.UnsafeEnabled && x != nil { + mi := &file_csi_proto_msgTypes[39] + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -3200,7 +3576,7 @@ func (x *CreateSnapshotRequest) ProtoReflect() protoreflect.Message { // Deprecated: Use CreateSnapshotRequest.ProtoReflect.Descriptor instead. func (*CreateSnapshotRequest) Descriptor() ([]byte, []int) { - return file_csi_proto_rawDescGZIP(), []int{34} + return file_csi_proto_rawDescGZIP(), []int{39} } func (x *CreateSnapshotRequest) GetSourceVolumeId() string { @@ -3231,24 +3607,28 @@ func (x *CreateSnapshotRequest) GetParameters() map[string]string { return nil } -type CreateSnapshotResponse struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields +func (x *CreateSnapshotRequest) GetAccessibilityRequirements() *TopologyRequirement { + if x != nil { + return x.AccessibilityRequirements + } + return nil +} +type CreateSnapshotResponse struct { + state protoimpl.MessageState `protogen:"open.v1"` // Contains all attributes of the newly created snapshot that are // relevant to the CO along with information required by the Plugin // to uniquely identify the snapshot. This field is REQUIRED. - Snapshot *Snapshot `protobuf:"bytes,1,opt,name=snapshot,proto3" json:"snapshot,omitempty"` + Snapshot *Snapshot `protobuf:"bytes,1,opt,name=snapshot,proto3" json:"snapshot,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } func (x *CreateSnapshotResponse) Reset() { *x = CreateSnapshotResponse{} - if protoimpl.UnsafeEnabled { - mi := &file_csi_proto_msgTypes[35] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_csi_proto_msgTypes[40] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *CreateSnapshotResponse) String() string { @@ -3258,8 +3638,8 @@ func (x *CreateSnapshotResponse) String() string { func (*CreateSnapshotResponse) ProtoMessage() {} func (x *CreateSnapshotResponse) ProtoReflect() protoreflect.Message { - mi := &file_csi_proto_msgTypes[35] - if protoimpl.UnsafeEnabled && x != nil { + mi := &file_csi_proto_msgTypes[40] + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -3271,7 +3651,7 @@ func (x *CreateSnapshotResponse) ProtoReflect() protoreflect.Message { // Deprecated: Use CreateSnapshotResponse.ProtoReflect.Descriptor instead. func (*CreateSnapshotResponse) Descriptor() ([]byte, []int) { - return file_csi_proto_rawDescGZIP(), []int{35} + return file_csi_proto_rawDescGZIP(), []int{40} } func (x *CreateSnapshotResponse) GetSnapshot() *Snapshot { @@ -3283,10 +3663,7 @@ func (x *CreateSnapshotResponse) GetSnapshot() *Snapshot { // Information about a specific snapshot. type Snapshot struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - + state protoimpl.MessageState `protogen:"open.v1"` // This is the complete size of the snapshot in bytes. The purpose of // this field is to give CO guidance on how much space is needed to // create a volume from this snapshot. The size of the volume MUST NOT @@ -3330,15 +3707,30 @@ type Snapshot struct { // If this message is inside a VolumeGroupSnapshot message, the value // MUST be the same as the group_snapshot_id in that message. GroupSnapshotId string `protobuf:"bytes,6,opt,name=group_snapshot_id,json=groupSnapshotId,proto3" json:"group_snapshot_id,omitempty"` + // Specifies where (regions, zones, racks, etc.) the provisioned + // snapshot is usable from. A snapshot is usable from a location if + // volumes created from that snapshot are guaranteed to be accessible + // from that location. + // A plugin that returns this field MUST also set the + // SNAPSHOT_ACCESSIBILITY_CONSTRAINTS plugin capability. + // An SP MAY specify multiple topologies to indicate the snapshot is + // usable from multiple locations. + // COs MAY use this information to ensure that a desired volume can + // be provisioned from a given snapshot when scheduling workloads. + // This field is OPTIONAL. If it is not specified, the CO MAY assume + // the snapshot is equally usable from all topologies in the + // cluster and MAY provision volumes referencing the snapshot as a + // source without topology constraints. + AccessibleTopology []*Topology `protobuf:"bytes,7,rep,name=accessible_topology,json=accessibleTopology,proto3" json:"accessible_topology,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } func (x *Snapshot) Reset() { *x = Snapshot{} - if protoimpl.UnsafeEnabled { - mi := &file_csi_proto_msgTypes[36] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_csi_proto_msgTypes[41] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *Snapshot) String() string { @@ -3348,8 +3740,8 @@ func (x *Snapshot) String() string { func (*Snapshot) ProtoMessage() {} func (x *Snapshot) ProtoReflect() protoreflect.Message { - mi := &file_csi_proto_msgTypes[36] - if protoimpl.UnsafeEnabled && x != nil { + mi := &file_csi_proto_msgTypes[41] + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -3361,7 +3753,7 @@ func (x *Snapshot) ProtoReflect() protoreflect.Message { // Deprecated: Use Snapshot.ProtoReflect.Descriptor instead. func (*Snapshot) Descriptor() ([]byte, []int) { - return file_csi_proto_rawDescGZIP(), []int{36} + return file_csi_proto_rawDescGZIP(), []int{41} } func (x *Snapshot) GetSizeBytes() int64 { @@ -3406,27 +3798,31 @@ func (x *Snapshot) GetGroupSnapshotId() string { return "" } -type DeleteSnapshotRequest struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields +func (x *Snapshot) GetAccessibleTopology() []*Topology { + if x != nil { + return x.AccessibleTopology + } + return nil +} +type DeleteSnapshotRequest struct { + state protoimpl.MessageState `protogen:"open.v1"` // The ID of the snapshot to be deleted. // This field is REQUIRED. SnapshotId string `protobuf:"bytes,1,opt,name=snapshot_id,json=snapshotId,proto3" json:"snapshot_id,omitempty"` // Secrets required by plugin to complete snapshot deletion request. // This field is OPTIONAL. Refer to the `Secrets Requirements` // section on how to use this field. - Secrets map[string]string `protobuf:"bytes,2,rep,name=secrets,proto3" json:"secrets,omitempty" protobuf_key:"bytes,1,opt,name=key,proto3" protobuf_val:"bytes,2,opt,name=value,proto3"` + Secrets map[string]string `protobuf:"bytes,2,rep,name=secrets,proto3" json:"secrets,omitempty" protobuf_key:"bytes,1,opt,name=key" protobuf_val:"bytes,2,opt,name=value"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } func (x *DeleteSnapshotRequest) Reset() { *x = DeleteSnapshotRequest{} - if protoimpl.UnsafeEnabled { - mi := &file_csi_proto_msgTypes[37] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_csi_proto_msgTypes[42] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *DeleteSnapshotRequest) String() string { @@ -3436,8 +3832,8 @@ func (x *DeleteSnapshotRequest) String() string { func (*DeleteSnapshotRequest) ProtoMessage() {} func (x *DeleteSnapshotRequest) ProtoReflect() protoreflect.Message { - mi := &file_csi_proto_msgTypes[37] - if protoimpl.UnsafeEnabled && x != nil { + mi := &file_csi_proto_msgTypes[42] + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -3449,7 +3845,7 @@ func (x *DeleteSnapshotRequest) ProtoReflect() protoreflect.Message { // Deprecated: Use DeleteSnapshotRequest.ProtoReflect.Descriptor instead. func (*DeleteSnapshotRequest) Descriptor() ([]byte, []int) { - return file_csi_proto_rawDescGZIP(), []int{37} + return file_csi_proto_rawDescGZIP(), []int{42} } func (x *DeleteSnapshotRequest) GetSnapshotId() string { @@ -3467,18 +3863,16 @@ func (x *DeleteSnapshotRequest) GetSecrets() map[string]string { } type DeleteSnapshotResponse struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache + state protoimpl.MessageState `protogen:"open.v1"` unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } func (x *DeleteSnapshotResponse) Reset() { *x = DeleteSnapshotResponse{} - if protoimpl.UnsafeEnabled { - mi := &file_csi_proto_msgTypes[38] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_csi_proto_msgTypes[43] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *DeleteSnapshotResponse) String() string { @@ -3488,8 +3882,8 @@ func (x *DeleteSnapshotResponse) String() string { func (*DeleteSnapshotResponse) ProtoMessage() {} func (x *DeleteSnapshotResponse) ProtoReflect() protoreflect.Message { - mi := &file_csi_proto_msgTypes[38] - if protoimpl.UnsafeEnabled && x != nil { + mi := &file_csi_proto_msgTypes[43] + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -3501,16 +3895,13 @@ func (x *DeleteSnapshotResponse) ProtoReflect() protoreflect.Message { // Deprecated: Use DeleteSnapshotResponse.ProtoReflect.Descriptor instead. func (*DeleteSnapshotResponse) Descriptor() ([]byte, []int) { - return file_csi_proto_rawDescGZIP(), []int{38} + return file_csi_proto_rawDescGZIP(), []int{43} } // List all snapshots on the storage system regardless of how they were // created. type ListSnapshotsRequest struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - + state protoimpl.MessageState `protogen:"open.v1"` // If specified (non-zero value), the Plugin MUST NOT return more // entries than this number in the response. If the actual number of // entries is more than this number, the Plugin MUST set `next_token` @@ -3537,16 +3928,16 @@ type ListSnapshotsRequest struct { // Secrets required by plugin to complete ListSnapshot request. // This field is OPTIONAL. Refer to the `Secrets Requirements` // section on how to use this field. - Secrets map[string]string `protobuf:"bytes,5,rep,name=secrets,proto3" json:"secrets,omitempty" protobuf_key:"bytes,1,opt,name=key,proto3" protobuf_val:"bytes,2,opt,name=value,proto3"` + Secrets map[string]string `protobuf:"bytes,5,rep,name=secrets,proto3" json:"secrets,omitempty" protobuf_key:"bytes,1,opt,name=key" protobuf_val:"bytes,2,opt,name=value"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } func (x *ListSnapshotsRequest) Reset() { *x = ListSnapshotsRequest{} - if protoimpl.UnsafeEnabled { - mi := &file_csi_proto_msgTypes[39] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_csi_proto_msgTypes[44] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *ListSnapshotsRequest) String() string { @@ -3556,8 +3947,8 @@ func (x *ListSnapshotsRequest) String() string { func (*ListSnapshotsRequest) ProtoMessage() {} func (x *ListSnapshotsRequest) ProtoReflect() protoreflect.Message { - mi := &file_csi_proto_msgTypes[39] - if protoimpl.UnsafeEnabled && x != nil { + mi := &file_csi_proto_msgTypes[44] + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -3569,7 +3960,7 @@ func (x *ListSnapshotsRequest) ProtoReflect() protoreflect.Message { // Deprecated: Use ListSnapshotsRequest.ProtoReflect.Descriptor instead. func (*ListSnapshotsRequest) Descriptor() ([]byte, []int) { - return file_csi_proto_rawDescGZIP(), []int{39} + return file_csi_proto_rawDescGZIP(), []int{44} } func (x *ListSnapshotsRequest) GetMaxEntries() int32 { @@ -3608,10 +3999,7 @@ func (x *ListSnapshotsRequest) GetSecrets() map[string]string { } type ListSnapshotsResponse struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - + state protoimpl.MessageState `protogen:"open.v1"` Entries []*ListSnapshotsResponse_Entry `protobuf:"bytes,1,rep,name=entries,proto3" json:"entries,omitempty"` // This token allows you to get the next page of entries for // `ListSnapshots` request. If the number of entries is larger than @@ -3619,16 +4007,16 @@ type ListSnapshotsResponse struct { // `starting_token` field in the next `ListSnapshots` request. This // field is OPTIONAL. // An empty string is equal to an unspecified field value. - NextToken string `protobuf:"bytes,2,opt,name=next_token,json=nextToken,proto3" json:"next_token,omitempty"` + NextToken string `protobuf:"bytes,2,opt,name=next_token,json=nextToken,proto3" json:"next_token,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } func (x *ListSnapshotsResponse) Reset() { *x = ListSnapshotsResponse{} - if protoimpl.UnsafeEnabled { - mi := &file_csi_proto_msgTypes[40] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_csi_proto_msgTypes[45] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *ListSnapshotsResponse) String() string { @@ -3638,8 +4026,8 @@ func (x *ListSnapshotsResponse) String() string { func (*ListSnapshotsResponse) ProtoMessage() {} func (x *ListSnapshotsResponse) ProtoReflect() protoreflect.Message { - mi := &file_csi_proto_msgTypes[40] - if protoimpl.UnsafeEnabled && x != nil { + mi := &file_csi_proto_msgTypes[45] + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -3651,7 +4039,7 @@ func (x *ListSnapshotsResponse) ProtoReflect() protoreflect.Message { // Deprecated: Use ListSnapshotsResponse.ProtoReflect.Descriptor instead. func (*ListSnapshotsResponse) Descriptor() ([]byte, []int) { - return file_csi_proto_rawDescGZIP(), []int{40} + return file_csi_proto_rawDescGZIP(), []int{45} } func (x *ListSnapshotsResponse) GetEntries() []*ListSnapshotsResponse_Entry { @@ -3669,26 +4057,23 @@ func (x *ListSnapshotsResponse) GetNextToken() string { } type GetSnapshotRequest struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - + state protoimpl.MessageState `protogen:"open.v1"` // The ID of the snapshot to fetch current snapshot information for. // This field is REQUIRED. SnapshotId string `protobuf:"bytes,1,opt,name=snapshot_id,json=snapshotId,proto3" json:"snapshot_id,omitempty"` // Secrets required by plugin to complete GetSnapshot request. // This field is OPTIONAL. Refer to the `Secrets Requirements` // section on how to use this field. - Secrets map[string]string `protobuf:"bytes,2,rep,name=secrets,proto3" json:"secrets,omitempty" protobuf_key:"bytes,1,opt,name=key,proto3" protobuf_val:"bytes,2,opt,name=value,proto3"` + Secrets map[string]string `protobuf:"bytes,2,rep,name=secrets,proto3" json:"secrets,omitempty" protobuf_key:"bytes,1,opt,name=key" protobuf_val:"bytes,2,opt,name=value"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } func (x *GetSnapshotRequest) Reset() { *x = GetSnapshotRequest{} - if protoimpl.UnsafeEnabled { - mi := &file_csi_proto_msgTypes[41] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_csi_proto_msgTypes[46] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *GetSnapshotRequest) String() string { @@ -3698,8 +4083,8 @@ func (x *GetSnapshotRequest) String() string { func (*GetSnapshotRequest) ProtoMessage() {} func (x *GetSnapshotRequest) ProtoReflect() protoreflect.Message { - mi := &file_csi_proto_msgTypes[41] - if protoimpl.UnsafeEnabled && x != nil { + mi := &file_csi_proto_msgTypes[46] + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -3711,7 +4096,7 @@ func (x *GetSnapshotRequest) ProtoReflect() protoreflect.Message { // Deprecated: Use GetSnapshotRequest.ProtoReflect.Descriptor instead. func (*GetSnapshotRequest) Descriptor() ([]byte, []int) { - return file_csi_proto_rawDescGZIP(), []int{41} + return file_csi_proto_rawDescGZIP(), []int{46} } func (x *GetSnapshotRequest) GetSnapshotId() string { @@ -3729,21 +4114,18 @@ func (x *GetSnapshotRequest) GetSecrets() map[string]string { } type GetSnapshotResponse struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - + state protoimpl.MessageState `protogen:"open.v1"` // This field is REQUIRED - Snapshot *Snapshot `protobuf:"bytes,1,opt,name=snapshot,proto3" json:"snapshot,omitempty"` + Snapshot *Snapshot `protobuf:"bytes,1,opt,name=snapshot,proto3" json:"snapshot,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } func (x *GetSnapshotResponse) Reset() { *x = GetSnapshotResponse{} - if protoimpl.UnsafeEnabled { - mi := &file_csi_proto_msgTypes[42] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_csi_proto_msgTypes[47] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *GetSnapshotResponse) String() string { @@ -3753,8 +4135,8 @@ func (x *GetSnapshotResponse) String() string { func (*GetSnapshotResponse) ProtoMessage() {} func (x *GetSnapshotResponse) ProtoReflect() protoreflect.Message { - mi := &file_csi_proto_msgTypes[42] - if protoimpl.UnsafeEnabled && x != nil { + mi := &file_csi_proto_msgTypes[47] + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -3766,7 +4148,7 @@ func (x *GetSnapshotResponse) ProtoReflect() protoreflect.Message { // Deprecated: Use GetSnapshotResponse.ProtoReflect.Descriptor instead. func (*GetSnapshotResponse) Descriptor() ([]byte, []int) { - return file_csi_proto_rawDescGZIP(), []int{42} + return file_csi_proto_rawDescGZIP(), []int{47} } func (x *GetSnapshotResponse) GetSnapshot() *Snapshot { @@ -3777,10 +4159,7 @@ func (x *GetSnapshotResponse) GetSnapshot() *Snapshot { } type ControllerExpandVolumeRequest struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - + state protoimpl.MessageState `protogen:"open.v1"` // The ID of the volume to expand. This field is REQUIRED. VolumeId string `protobuf:"bytes,1,opt,name=volume_id,json=volumeId,proto3" json:"volume_id,omitempty"` // This allows CO to specify the capacity requirements of the volume @@ -3788,7 +4167,7 @@ type ControllerExpandVolumeRequest struct { CapacityRange *CapacityRange `protobuf:"bytes,2,opt,name=capacity_range,json=capacityRange,proto3" json:"capacity_range,omitempty"` // Secrets required by the plugin for expanding the volume. // This field is OPTIONAL. - Secrets map[string]string `protobuf:"bytes,3,rep,name=secrets,proto3" json:"secrets,omitempty" protobuf_key:"bytes,1,opt,name=key,proto3" protobuf_val:"bytes,2,opt,name=value,proto3"` + Secrets map[string]string `protobuf:"bytes,3,rep,name=secrets,proto3" json:"secrets,omitempty" protobuf_key:"bytes,1,opt,name=key" protobuf_val:"bytes,2,opt,name=value"` // Volume capability describing how the CO intends to use this volume. // This allows SP to determine if volume is being used as a block // device or mounted file system. For example - if volume is @@ -3797,15 +4176,15 @@ type ControllerExpandVolumeRequest struct { // to skip invocation of NodeExpandVolume on the node by the CO. // This is an OPTIONAL field. VolumeCapability *VolumeCapability `protobuf:"bytes,4,opt,name=volume_capability,json=volumeCapability,proto3" json:"volume_capability,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } func (x *ControllerExpandVolumeRequest) Reset() { *x = ControllerExpandVolumeRequest{} - if protoimpl.UnsafeEnabled { - mi := &file_csi_proto_msgTypes[43] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_csi_proto_msgTypes[48] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *ControllerExpandVolumeRequest) String() string { @@ -3815,8 +4194,8 @@ func (x *ControllerExpandVolumeRequest) String() string { func (*ControllerExpandVolumeRequest) ProtoMessage() {} func (x *ControllerExpandVolumeRequest) ProtoReflect() protoreflect.Message { - mi := &file_csi_proto_msgTypes[43] - if protoimpl.UnsafeEnabled && x != nil { + mi := &file_csi_proto_msgTypes[48] + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -3828,7 +4207,7 @@ func (x *ControllerExpandVolumeRequest) ProtoReflect() protoreflect.Message { // Deprecated: Use ControllerExpandVolumeRequest.ProtoReflect.Descriptor instead. func (*ControllerExpandVolumeRequest) Descriptor() ([]byte, []int) { - return file_csi_proto_rawDescGZIP(), []int{43} + return file_csi_proto_rawDescGZIP(), []int{48} } func (x *ControllerExpandVolumeRequest) GetVolumeId() string { @@ -3860,25 +4239,22 @@ func (x *ControllerExpandVolumeRequest) GetVolumeCapability() *VolumeCapability } type ControllerExpandVolumeResponse struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - + state protoimpl.MessageState `protogen:"open.v1"` // Capacity of volume after expansion. This field is REQUIRED. CapacityBytes int64 `protobuf:"varint,1,opt,name=capacity_bytes,json=capacityBytes,proto3" json:"capacity_bytes,omitempty"` // Whether node expansion is required for the volume. When true // the CO MUST make NodeExpandVolume RPC call on the node. This field // is REQUIRED. NodeExpansionRequired bool `protobuf:"varint,2,opt,name=node_expansion_required,json=nodeExpansionRequired,proto3" json:"node_expansion_required,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } func (x *ControllerExpandVolumeResponse) Reset() { *x = ControllerExpandVolumeResponse{} - if protoimpl.UnsafeEnabled { - mi := &file_csi_proto_msgTypes[44] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_csi_proto_msgTypes[49] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *ControllerExpandVolumeResponse) String() string { @@ -3888,8 +4264,8 @@ func (x *ControllerExpandVolumeResponse) String() string { func (*ControllerExpandVolumeResponse) ProtoMessage() {} func (x *ControllerExpandVolumeResponse) ProtoReflect() protoreflect.Message { - mi := &file_csi_proto_msgTypes[44] - if protoimpl.UnsafeEnabled && x != nil { + mi := &file_csi_proto_msgTypes[49] + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -3901,7 +4277,7 @@ func (x *ControllerExpandVolumeResponse) ProtoReflect() protoreflect.Message { // Deprecated: Use ControllerExpandVolumeResponse.ProtoReflect.Descriptor instead. func (*ControllerExpandVolumeResponse) Descriptor() ([]byte, []int) { - return file_csi_proto_rawDescGZIP(), []int{44} + return file_csi_proto_rawDescGZIP(), []int{49} } func (x *ControllerExpandVolumeResponse) GetCapacityBytes() int64 { @@ -3919,10 +4295,7 @@ func (x *ControllerExpandVolumeResponse) GetNodeExpansionRequired() bool { } type NodeStageVolumeRequest struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - + state protoimpl.MessageState `protogen:"open.v1"` // The ID of the volume to publish. This field is REQUIRED. VolumeId string `protobuf:"bytes,1,opt,name=volume_id,json=volumeId,proto3" json:"volume_id,omitempty"` // The CO SHALL set this field to the value returned by @@ -3930,7 +4303,7 @@ type NodeStageVolumeRequest struct { // has `PUBLISH_UNPUBLISH_VOLUME` controller capability, and SHALL be // left unset if the corresponding Controller Plugin does not have // this capability. This is an OPTIONAL field. - PublishContext map[string]string `protobuf:"bytes,2,rep,name=publish_context,json=publishContext,proto3" json:"publish_context,omitempty" protobuf_key:"bytes,1,opt,name=key,proto3" protobuf_val:"bytes,2,opt,name=value,proto3"` + PublishContext map[string]string `protobuf:"bytes,2,rep,name=publish_context,json=publishContext,proto3" json:"publish_context,omitempty" protobuf_key:"bytes,1,opt,name=key" protobuf_val:"bytes,2,opt,name=value"` // The path to which the volume MAY be staged. It MUST be an // absolute path in the root filesystem of the process serving this // request, and MUST be a directory. The CO SHALL ensure that there @@ -3953,21 +4326,21 @@ type NodeStageVolumeRequest struct { // Secrets required by plugin to complete node stage volume request. // This field is OPTIONAL. Refer to the `Secrets Requirements` // section on how to use this field. - Secrets map[string]string `protobuf:"bytes,5,rep,name=secrets,proto3" json:"secrets,omitempty" protobuf_key:"bytes,1,opt,name=key,proto3" protobuf_val:"bytes,2,opt,name=value,proto3"` + Secrets map[string]string `protobuf:"bytes,5,rep,name=secrets,proto3" json:"secrets,omitempty" protobuf_key:"bytes,1,opt,name=key" protobuf_val:"bytes,2,opt,name=value"` // Volume context as returned by SP in // CreateVolumeResponse.Volume.volume_context. // This field is OPTIONAL and MUST match the volume_context of the // volume identified by `volume_id`. - VolumeContext map[string]string `protobuf:"bytes,6,rep,name=volume_context,json=volumeContext,proto3" json:"volume_context,omitempty" protobuf_key:"bytes,1,opt,name=key,proto3" protobuf_val:"bytes,2,opt,name=value,proto3"` + VolumeContext map[string]string `protobuf:"bytes,6,rep,name=volume_context,json=volumeContext,proto3" json:"volume_context,omitempty" protobuf_key:"bytes,1,opt,name=key" protobuf_val:"bytes,2,opt,name=value"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } func (x *NodeStageVolumeRequest) Reset() { *x = NodeStageVolumeRequest{} - if protoimpl.UnsafeEnabled { - mi := &file_csi_proto_msgTypes[45] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_csi_proto_msgTypes[50] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *NodeStageVolumeRequest) String() string { @@ -3977,8 +4350,8 @@ func (x *NodeStageVolumeRequest) String() string { func (*NodeStageVolumeRequest) ProtoMessage() {} func (x *NodeStageVolumeRequest) ProtoReflect() protoreflect.Message { - mi := &file_csi_proto_msgTypes[45] - if protoimpl.UnsafeEnabled && x != nil { + mi := &file_csi_proto_msgTypes[50] + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -3990,7 +4363,7 @@ func (x *NodeStageVolumeRequest) ProtoReflect() protoreflect.Message { // Deprecated: Use NodeStageVolumeRequest.ProtoReflect.Descriptor instead. func (*NodeStageVolumeRequest) Descriptor() ([]byte, []int) { - return file_csi_proto_rawDescGZIP(), []int{45} + return file_csi_proto_rawDescGZIP(), []int{50} } func (x *NodeStageVolumeRequest) GetVolumeId() string { @@ -4036,18 +4409,16 @@ func (x *NodeStageVolumeRequest) GetVolumeContext() map[string]string { } type NodeStageVolumeResponse struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache + state protoimpl.MessageState `protogen:"open.v1"` unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } func (x *NodeStageVolumeResponse) Reset() { *x = NodeStageVolumeResponse{} - if protoimpl.UnsafeEnabled { - mi := &file_csi_proto_msgTypes[46] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_csi_proto_msgTypes[51] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *NodeStageVolumeResponse) String() string { @@ -4057,8 +4428,8 @@ func (x *NodeStageVolumeResponse) String() string { func (*NodeStageVolumeResponse) ProtoMessage() {} func (x *NodeStageVolumeResponse) ProtoReflect() protoreflect.Message { - mi := &file_csi_proto_msgTypes[46] - if protoimpl.UnsafeEnabled && x != nil { + mi := &file_csi_proto_msgTypes[51] + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -4070,14 +4441,11 @@ func (x *NodeStageVolumeResponse) ProtoReflect() protoreflect.Message { // Deprecated: Use NodeStageVolumeResponse.ProtoReflect.Descriptor instead. func (*NodeStageVolumeResponse) Descriptor() ([]byte, []int) { - return file_csi_proto_rawDescGZIP(), []int{46} + return file_csi_proto_rawDescGZIP(), []int{51} } type NodeUnstageVolumeRequest struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - + state protoimpl.MessageState `protogen:"open.v1"` // The ID of the volume. This field is REQUIRED. VolumeId string `protobuf:"bytes,1,opt,name=volume_id,json=volumeId,proto3" json:"volume_id,omitempty"` // The path at which the volume was staged. It MUST be an absolute @@ -4088,15 +4456,15 @@ type NodeUnstageVolumeRequest struct { // system/filesystem, but, at a minimum, SP MUST accept a max path // length of at least 128 bytes. StagingTargetPath string `protobuf:"bytes,2,opt,name=staging_target_path,json=stagingTargetPath,proto3" json:"staging_target_path,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } func (x *NodeUnstageVolumeRequest) Reset() { *x = NodeUnstageVolumeRequest{} - if protoimpl.UnsafeEnabled { - mi := &file_csi_proto_msgTypes[47] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_csi_proto_msgTypes[52] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *NodeUnstageVolumeRequest) String() string { @@ -4106,8 +4474,8 @@ func (x *NodeUnstageVolumeRequest) String() string { func (*NodeUnstageVolumeRequest) ProtoMessage() {} func (x *NodeUnstageVolumeRequest) ProtoReflect() protoreflect.Message { - mi := &file_csi_proto_msgTypes[47] - if protoimpl.UnsafeEnabled && x != nil { + mi := &file_csi_proto_msgTypes[52] + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -4119,7 +4487,7 @@ func (x *NodeUnstageVolumeRequest) ProtoReflect() protoreflect.Message { // Deprecated: Use NodeUnstageVolumeRequest.ProtoReflect.Descriptor instead. func (*NodeUnstageVolumeRequest) Descriptor() ([]byte, []int) { - return file_csi_proto_rawDescGZIP(), []int{47} + return file_csi_proto_rawDescGZIP(), []int{52} } func (x *NodeUnstageVolumeRequest) GetVolumeId() string { @@ -4137,18 +4505,16 @@ func (x *NodeUnstageVolumeRequest) GetStagingTargetPath() string { } type NodeUnstageVolumeResponse struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache + state protoimpl.MessageState `protogen:"open.v1"` unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } func (x *NodeUnstageVolumeResponse) Reset() { *x = NodeUnstageVolumeResponse{} - if protoimpl.UnsafeEnabled { - mi := &file_csi_proto_msgTypes[48] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_csi_proto_msgTypes[53] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *NodeUnstageVolumeResponse) String() string { @@ -4158,8 +4524,8 @@ func (x *NodeUnstageVolumeResponse) String() string { func (*NodeUnstageVolumeResponse) ProtoMessage() {} func (x *NodeUnstageVolumeResponse) ProtoReflect() protoreflect.Message { - mi := &file_csi_proto_msgTypes[48] - if protoimpl.UnsafeEnabled && x != nil { + mi := &file_csi_proto_msgTypes[53] + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -4171,14 +4537,11 @@ func (x *NodeUnstageVolumeResponse) ProtoReflect() protoreflect.Message { // Deprecated: Use NodeUnstageVolumeResponse.ProtoReflect.Descriptor instead. func (*NodeUnstageVolumeResponse) Descriptor() ([]byte, []int) { - return file_csi_proto_rawDescGZIP(), []int{48} + return file_csi_proto_rawDescGZIP(), []int{53} } type NodePublishVolumeRequest struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - + state protoimpl.MessageState `protogen:"open.v1"` // The ID of the volume to publish. This field is REQUIRED. VolumeId string `protobuf:"bytes,1,opt,name=volume_id,json=volumeId,proto3" json:"volume_id,omitempty"` // The CO SHALL set this field to the value returned by @@ -4186,7 +4549,7 @@ type NodePublishVolumeRequest struct { // has `PUBLISH_UNPUBLISH_VOLUME` controller capability, and SHALL be // left unset if the corresponding Controller Plugin does not have // this capability. This is an OPTIONAL field. - PublishContext map[string]string `protobuf:"bytes,2,rep,name=publish_context,json=publishContext,proto3" json:"publish_context,omitempty" protobuf_key:"bytes,1,opt,name=key,proto3" protobuf_val:"bytes,2,opt,name=value,proto3"` + PublishContext map[string]string `protobuf:"bytes,2,rep,name=publish_context,json=publishContext,proto3" json:"publish_context,omitempty" protobuf_key:"bytes,1,opt,name=key" protobuf_val:"bytes,2,opt,name=value"` // The path to which the volume was staged by `NodeStageVolume`. // It MUST be an absolute path in the root filesystem of the process // serving this request. @@ -4226,21 +4589,21 @@ type NodePublishVolumeRequest struct { // Secrets required by plugin to complete node publish volume request. // This field is OPTIONAL. Refer to the `Secrets Requirements` // section on how to use this field. - Secrets map[string]string `protobuf:"bytes,7,rep,name=secrets,proto3" json:"secrets,omitempty" protobuf_key:"bytes,1,opt,name=key,proto3" protobuf_val:"bytes,2,opt,name=value,proto3"` + Secrets map[string]string `protobuf:"bytes,7,rep,name=secrets,proto3" json:"secrets,omitempty" protobuf_key:"bytes,1,opt,name=key" protobuf_val:"bytes,2,opt,name=value"` // Volume context as returned by SP in // CreateVolumeResponse.Volume.volume_context. // This field is OPTIONAL and MUST match the volume_context of the // volume identified by `volume_id`. - VolumeContext map[string]string `protobuf:"bytes,8,rep,name=volume_context,json=volumeContext,proto3" json:"volume_context,omitempty" protobuf_key:"bytes,1,opt,name=key,proto3" protobuf_val:"bytes,2,opt,name=value,proto3"` + VolumeContext map[string]string `protobuf:"bytes,8,rep,name=volume_context,json=volumeContext,proto3" json:"volume_context,omitempty" protobuf_key:"bytes,1,opt,name=key" protobuf_val:"bytes,2,opt,name=value"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } func (x *NodePublishVolumeRequest) Reset() { *x = NodePublishVolumeRequest{} - if protoimpl.UnsafeEnabled { - mi := &file_csi_proto_msgTypes[49] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_csi_proto_msgTypes[54] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *NodePublishVolumeRequest) String() string { @@ -4250,8 +4613,8 @@ func (x *NodePublishVolumeRequest) String() string { func (*NodePublishVolumeRequest) ProtoMessage() {} func (x *NodePublishVolumeRequest) ProtoReflect() protoreflect.Message { - mi := &file_csi_proto_msgTypes[49] - if protoimpl.UnsafeEnabled && x != nil { + mi := &file_csi_proto_msgTypes[54] + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -4263,7 +4626,7 @@ func (x *NodePublishVolumeRequest) ProtoReflect() protoreflect.Message { // Deprecated: Use NodePublishVolumeRequest.ProtoReflect.Descriptor instead. func (*NodePublishVolumeRequest) Descriptor() ([]byte, []int) { - return file_csi_proto_rawDescGZIP(), []int{49} + return file_csi_proto_rawDescGZIP(), []int{54} } func (x *NodePublishVolumeRequest) GetVolumeId() string { @@ -4323,18 +4686,16 @@ func (x *NodePublishVolumeRequest) GetVolumeContext() map[string]string { } type NodePublishVolumeResponse struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache + state protoimpl.MessageState `protogen:"open.v1"` unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } func (x *NodePublishVolumeResponse) Reset() { *x = NodePublishVolumeResponse{} - if protoimpl.UnsafeEnabled { - mi := &file_csi_proto_msgTypes[50] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_csi_proto_msgTypes[55] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *NodePublishVolumeResponse) String() string { @@ -4344,8 +4705,8 @@ func (x *NodePublishVolumeResponse) String() string { func (*NodePublishVolumeResponse) ProtoMessage() {} func (x *NodePublishVolumeResponse) ProtoReflect() protoreflect.Message { - mi := &file_csi_proto_msgTypes[50] - if protoimpl.UnsafeEnabled && x != nil { + mi := &file_csi_proto_msgTypes[55] + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -4357,14 +4718,11 @@ func (x *NodePublishVolumeResponse) ProtoReflect() protoreflect.Message { // Deprecated: Use NodePublishVolumeResponse.ProtoReflect.Descriptor instead. func (*NodePublishVolumeResponse) Descriptor() ([]byte, []int) { - return file_csi_proto_rawDescGZIP(), []int{50} + return file_csi_proto_rawDescGZIP(), []int{55} } type NodeUnpublishVolumeRequest struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - + state protoimpl.MessageState `protogen:"open.v1"` // The ID of the volume. This field is REQUIRED. VolumeId string `protobuf:"bytes,1,opt,name=volume_id,json=volumeId,proto3" json:"volume_id,omitempty"` // The path at which the volume was published. It MUST be an absolute @@ -4375,16 +4733,16 @@ type NodeUnpublishVolumeRequest struct { // SP SHOULD support the maximum path length allowed by the operating // system/filesystem, but, at a minimum, SP MUST accept a max path // length of at least 128 bytes. - TargetPath string `protobuf:"bytes,2,opt,name=target_path,json=targetPath,proto3" json:"target_path,omitempty"` + TargetPath string `protobuf:"bytes,2,opt,name=target_path,json=targetPath,proto3" json:"target_path,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } func (x *NodeUnpublishVolumeRequest) Reset() { *x = NodeUnpublishVolumeRequest{} - if protoimpl.UnsafeEnabled { - mi := &file_csi_proto_msgTypes[51] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_csi_proto_msgTypes[56] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *NodeUnpublishVolumeRequest) String() string { @@ -4394,8 +4752,8 @@ func (x *NodeUnpublishVolumeRequest) String() string { func (*NodeUnpublishVolumeRequest) ProtoMessage() {} func (x *NodeUnpublishVolumeRequest) ProtoReflect() protoreflect.Message { - mi := &file_csi_proto_msgTypes[51] - if protoimpl.UnsafeEnabled && x != nil { + mi := &file_csi_proto_msgTypes[56] + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -4407,7 +4765,7 @@ func (x *NodeUnpublishVolumeRequest) ProtoReflect() protoreflect.Message { // Deprecated: Use NodeUnpublishVolumeRequest.ProtoReflect.Descriptor instead. func (*NodeUnpublishVolumeRequest) Descriptor() ([]byte, []int) { - return file_csi_proto_rawDescGZIP(), []int{51} + return file_csi_proto_rawDescGZIP(), []int{56} } func (x *NodeUnpublishVolumeRequest) GetVolumeId() string { @@ -4425,18 +4783,16 @@ func (x *NodeUnpublishVolumeRequest) GetTargetPath() string { } type NodeUnpublishVolumeResponse struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache + state protoimpl.MessageState `protogen:"open.v1"` unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } func (x *NodeUnpublishVolumeResponse) Reset() { *x = NodeUnpublishVolumeResponse{} - if protoimpl.UnsafeEnabled { - mi := &file_csi_proto_msgTypes[52] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_csi_proto_msgTypes[57] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *NodeUnpublishVolumeResponse) String() string { @@ -4446,8 +4802,8 @@ func (x *NodeUnpublishVolumeResponse) String() string { func (*NodeUnpublishVolumeResponse) ProtoMessage() {} func (x *NodeUnpublishVolumeResponse) ProtoReflect() protoreflect.Message { - mi := &file_csi_proto_msgTypes[52] - if protoimpl.UnsafeEnabled && x != nil { + mi := &file_csi_proto_msgTypes[57] + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -4459,14 +4815,11 @@ func (x *NodeUnpublishVolumeResponse) ProtoReflect() protoreflect.Message { // Deprecated: Use NodeUnpublishVolumeResponse.ProtoReflect.Descriptor instead. func (*NodeUnpublishVolumeResponse) Descriptor() ([]byte, []int) { - return file_csi_proto_rawDescGZIP(), []int{52} + return file_csi_proto_rawDescGZIP(), []int{57} } type NodeGetVolumeStatsRequest struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - + state protoimpl.MessageState `protogen:"open.v1"` // The ID of the volume. This field is REQUIRED. VolumeId string `protobuf:"bytes,1,opt,name=volume_id,json=volumeId,proto3" json:"volume_id,omitempty"` // It can be any valid path where volume was previously @@ -4489,15 +4842,15 @@ type NodeGetVolumeStatsRequest struct { // system/filesystem, but, at a minimum, SP MUST accept a max path // length of at least 128 bytes. StagingTargetPath string `protobuf:"bytes,3,opt,name=staging_target_path,json=stagingTargetPath,proto3" json:"staging_target_path,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } func (x *NodeGetVolumeStatsRequest) Reset() { *x = NodeGetVolumeStatsRequest{} - if protoimpl.UnsafeEnabled { - mi := &file_csi_proto_msgTypes[53] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_csi_proto_msgTypes[58] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *NodeGetVolumeStatsRequest) String() string { @@ -4507,8 +4860,8 @@ func (x *NodeGetVolumeStatsRequest) String() string { func (*NodeGetVolumeStatsRequest) ProtoMessage() {} func (x *NodeGetVolumeStatsRequest) ProtoReflect() protoreflect.Message { - mi := &file_csi_proto_msgTypes[53] - if protoimpl.UnsafeEnabled && x != nil { + mi := &file_csi_proto_msgTypes[58] + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -4520,7 +4873,7 @@ func (x *NodeGetVolumeStatsRequest) ProtoReflect() protoreflect.Message { // Deprecated: Use NodeGetVolumeStatsRequest.ProtoReflect.Descriptor instead. func (*NodeGetVolumeStatsRequest) Descriptor() ([]byte, []int) { - return file_csi_proto_rawDescGZIP(), []int{53} + return file_csi_proto_rawDescGZIP(), []int{58} } func (x *NodeGetVolumeStatsRequest) GetVolumeId() string { @@ -4545,26 +4898,18 @@ func (x *NodeGetVolumeStatsRequest) GetStagingTargetPath() string { } type NodeGetVolumeStatsResponse struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - + state protoimpl.MessageState `protogen:"open.v1"` // This field is OPTIONAL. - Usage []*VolumeUsage `protobuf:"bytes,1,rep,name=usage,proto3" json:"usage,omitempty"` - // Information about the current condition of the volume. - // This field is OPTIONAL. - // This field MUST be specified if the VOLUME_CONDITION node - // capability is supported. - VolumeCondition *VolumeCondition `protobuf:"bytes,2,opt,name=volume_condition,json=volumeCondition,proto3" json:"volume_condition,omitempty"` + Usage []*VolumeUsage `protobuf:"bytes,1,rep,name=usage,proto3" json:"usage,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } func (x *NodeGetVolumeStatsResponse) Reset() { *x = NodeGetVolumeStatsResponse{} - if protoimpl.UnsafeEnabled { - mi := &file_csi_proto_msgTypes[54] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_csi_proto_msgTypes[59] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *NodeGetVolumeStatsResponse) String() string { @@ -4574,8 +4919,8 @@ func (x *NodeGetVolumeStatsResponse) String() string { func (*NodeGetVolumeStatsResponse) ProtoMessage() {} func (x *NodeGetVolumeStatsResponse) ProtoReflect() protoreflect.Message { - mi := &file_csi_proto_msgTypes[54] - if protoimpl.UnsafeEnabled && x != nil { + mi := &file_csi_proto_msgTypes[59] + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -4587,7 +4932,7 @@ func (x *NodeGetVolumeStatsResponse) ProtoReflect() protoreflect.Message { // Deprecated: Use NodeGetVolumeStatsResponse.ProtoReflect.Descriptor instead. func (*NodeGetVolumeStatsResponse) Descriptor() ([]byte, []int) { - return file_csi_proto_rawDescGZIP(), []int{54} + return file_csi_proto_rawDescGZIP(), []int{59} } func (x *NodeGetVolumeStatsResponse) GetUsage() []*VolumeUsage { @@ -4597,18 +4942,8 @@ func (x *NodeGetVolumeStatsResponse) GetUsage() []*VolumeUsage { return nil } -func (x *NodeGetVolumeStatsResponse) GetVolumeCondition() *VolumeCondition { - if x != nil { - return x.VolumeCondition - } - return nil -} - type VolumeUsage struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - + state protoimpl.MessageState `protogen:"open.v1"` // The available capacity in specified Unit. This field is OPTIONAL. // The value of this field MUST NOT be negative. Available int64 `protobuf:"varint,1,opt,name=available,proto3" json:"available,omitempty"` @@ -4619,16 +4954,16 @@ type VolumeUsage struct { // The value of this field MUST NOT be negative. Used int64 `protobuf:"varint,3,opt,name=used,proto3" json:"used,omitempty"` // Units by which values are measured. This field is REQUIRED. - Unit VolumeUsage_Unit `protobuf:"varint,4,opt,name=unit,proto3,enum=csi.v1.VolumeUsage_Unit" json:"unit,omitempty"` + Unit VolumeUsage_Unit `protobuf:"varint,4,opt,name=unit,proto3,enum=csi.v1.VolumeUsage_Unit" json:"unit,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } func (x *VolumeUsage) Reset() { *x = VolumeUsage{} - if protoimpl.UnsafeEnabled { - mi := &file_csi_proto_msgTypes[55] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_csi_proto_msgTypes[60] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *VolumeUsage) String() string { @@ -4638,8 +4973,8 @@ func (x *VolumeUsage) String() string { func (*VolumeUsage) ProtoMessage() {} func (x *VolumeUsage) ProtoReflect() protoreflect.Message { - mi := &file_csi_proto_msgTypes[55] - if protoimpl.UnsafeEnabled && x != nil { + mi := &file_csi_proto_msgTypes[60] + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -4651,7 +4986,7 @@ func (x *VolumeUsage) ProtoReflect() protoreflect.Message { // Deprecated: Use VolumeUsage.ProtoReflect.Descriptor instead. func (*VolumeUsage) Descriptor() ([]byte, []int) { - return file_csi_proto_rawDescGZIP(), []int{55} + return file_csi_proto_rawDescGZIP(), []int{60} } func (x *VolumeUsage) GetAvailable() int64 { @@ -4682,39 +5017,158 @@ func (x *VolumeUsage) GetUnit() VolumeUsage_Unit { return VolumeUsage_UNKNOWN } -// VolumeCondition represents the current condition of a volume. -type VolumeCondition struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - - // Normal volumes are available for use and operating optimally. - // An abnormal volume does not meet these criteria. +type NodeGetVolumeHealthRequest struct { + state protoimpl.MessageState `protogen:"open.v1"` + // The ID of the volume. // This field is REQUIRED. - Abnormal bool `protobuf:"varint,1,opt,name=abnormal,proto3" json:"abnormal,omitempty"` - // The message describing the condition of the volume. + VolumeId string `protobuf:"bytes,1,opt,name=volume_id,json=volumeId,proto3" json:"volume_id,omitempty"` + // The path where the volume was published or CO attempted to + // publish on the node. If not empty, it MUST be an absolute path + // in the root filesystem of the process serving this request. + // This field is OPTIONAL. + // This field overrides the general CSI size limit. + // SP SHOULD support the maximum path length allowed by the operating + // system/filesystem, but, at a minimum, SP MUST accept a max path + // length of at least 128 bytes. + VolumePublishPath string `protobuf:"bytes,2,opt,name=volume_publish_path,json=volumePublishPath,proto3" json:"volume_publish_path,omitempty"` + // The path where the volume was staged or CO attempted to + // stage the volume, if the plugin has the + // STAGE_UNSTAGE_VOLUME capability, otherwise empty. + // If not empty, it MUST be an absolute path in the root + // filesystem of the process serving this request. + // This field is OPTIONAL. + // This field overrides the general CSI size limit. + // SP SHOULD support the maximum path length allowed by the operating + // system/filesystem, but, at a minimum, SP MUST accept a max path + // length of at least 128 bytes. + StagingTargetPath string `protobuf:"bytes,3,opt,name=staging_target_path,json=stagingTargetPath,proto3" json:"staging_target_path,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache +} + +func (x *NodeGetVolumeHealthRequest) Reset() { + *x = NodeGetVolumeHealthRequest{} + mi := &file_csi_proto_msgTypes[61] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *NodeGetVolumeHealthRequest) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*NodeGetVolumeHealthRequest) ProtoMessage() {} + +func (x *NodeGetVolumeHealthRequest) ProtoReflect() protoreflect.Message { + mi := &file_csi_proto_msgTypes[61] + if x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use NodeGetVolumeHealthRequest.ProtoReflect.Descriptor instead. +func (*NodeGetVolumeHealthRequest) Descriptor() ([]byte, []int) { + return file_csi_proto_rawDescGZIP(), []int{61} +} + +func (x *NodeGetVolumeHealthRequest) GetVolumeId() string { + if x != nil { + return x.VolumeId + } + return "" +} + +func (x *NodeGetVolumeHealthRequest) GetVolumePublishPath() string { + if x != nil { + return x.VolumePublishPath + } + return "" +} + +func (x *NodeGetVolumeHealthRequest) GetStagingTargetPath() string { + if x != nil { + return x.StagingTargetPath + } + return "" +} + +type NodeGetVolumeHealthResponse struct { + state protoimpl.MessageState `protogen:"open.v1"` + // The health information for the requested volume. // This field is REQUIRED. - Message string `protobuf:"bytes,2,opt,name=message,proto3" json:"message,omitempty"` + VolumeHealth *VolumeHealth `protobuf:"bytes,1,opt,name=volume_health,json=volumeHealth,proto3" json:"volume_health,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache +} + +func (x *NodeGetVolumeHealthResponse) Reset() { + *x = NodeGetVolumeHealthResponse{} + mi := &file_csi_proto_msgTypes[62] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *NodeGetVolumeHealthResponse) String() string { + return protoimpl.X.MessageStringOf(x) } -func (x *VolumeCondition) Reset() { - *x = VolumeCondition{} - if protoimpl.UnsafeEnabled { - mi := &file_csi_proto_msgTypes[56] +func (*NodeGetVolumeHealthResponse) ProtoMessage() {} + +func (x *NodeGetVolumeHealthResponse) ProtoReflect() protoreflect.Message { + mi := &file_csi_proto_msgTypes[62] + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use NodeGetVolumeHealthResponse.ProtoReflect.Descriptor instead. +func (*NodeGetVolumeHealthResponse) Descriptor() ([]byte, []int) { + return file_csi_proto_rawDescGZIP(), []int{62} +} + +func (x *NodeGetVolumeHealthResponse) GetVolumeHealth() *VolumeHealth { + if x != nil { + return x.VolumeHealth } + return nil +} + +type NodeGetStorageHealthRequest struct { + state protoimpl.MessageState `protogen:"open.v1"` + // Secrets required by the plugin to complete the request. + // This field is OPTIONAL. Refer to the `Secrets Requirements` + // section on how to use this field. + Secrets map[string]string `protobuf:"bytes,1,rep,name=secrets,proto3" json:"secrets,omitempty" protobuf_key:"bytes,1,opt,name=key" protobuf_val:"bytes,2,opt,name=value"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache +} + +func (x *NodeGetStorageHealthRequest) Reset() { + *x = NodeGetStorageHealthRequest{} + mi := &file_csi_proto_msgTypes[63] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } -func (x *VolumeCondition) String() string { +func (x *NodeGetStorageHealthRequest) String() string { return protoimpl.X.MessageStringOf(x) } -func (*VolumeCondition) ProtoMessage() {} +func (*NodeGetStorageHealthRequest) ProtoMessage() {} -func (x *VolumeCondition) ProtoReflect() protoreflect.Message { - mi := &file_csi_proto_msgTypes[56] - if protoimpl.UnsafeEnabled && x != nil { +func (x *NodeGetStorageHealthRequest) ProtoReflect() protoreflect.Message { + mi := &file_csi_proto_msgTypes[63] + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -4724,38 +5178,76 @@ func (x *VolumeCondition) ProtoReflect() protoreflect.Message { return mi.MessageOf(x) } -// Deprecated: Use VolumeCondition.ProtoReflect.Descriptor instead. -func (*VolumeCondition) Descriptor() ([]byte, []int) { - return file_csi_proto_rawDescGZIP(), []int{56} +// Deprecated: Use NodeGetStorageHealthRequest.ProtoReflect.Descriptor instead. +func (*NodeGetStorageHealthRequest) Descriptor() ([]byte, []int) { + return file_csi_proto_rawDescGZIP(), []int{63} } -func (x *VolumeCondition) GetAbnormal() bool { +func (x *NodeGetStorageHealthRequest) GetSecrets() map[string]string { if x != nil { - return x.Abnormal + return x.Secrets } - return false + return nil +} + +type NodeGetStorageHealthResponse struct { + state protoimpl.MessageState `protogen:"open.v1"` + // Health information for storage backends or classes available from + // this node. + // This field is OPTIONAL. + BackendHealth []*NodeGetStorageHealthResponse_StorageBackendHealth `protobuf:"bytes,1,rep,name=backend_health,json=backendHealth,proto3" json:"backend_health,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache +} + +func (x *NodeGetStorageHealthResponse) Reset() { + *x = NodeGetStorageHealthResponse{} + mi := &file_csi_proto_msgTypes[64] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *NodeGetStorageHealthResponse) String() string { + return protoimpl.X.MessageStringOf(x) } -func (x *VolumeCondition) GetMessage() string { +func (*NodeGetStorageHealthResponse) ProtoMessage() {} + +func (x *NodeGetStorageHealthResponse) ProtoReflect() protoreflect.Message { + mi := &file_csi_proto_msgTypes[64] if x != nil { - return x.Message + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms } - return "" + return mi.MessageOf(x) +} + +// Deprecated: Use NodeGetStorageHealthResponse.ProtoReflect.Descriptor instead. +func (*NodeGetStorageHealthResponse) Descriptor() ([]byte, []int) { + return file_csi_proto_rawDescGZIP(), []int{64} +} + +func (x *NodeGetStorageHealthResponse) GetBackendHealth() []*NodeGetStorageHealthResponse_StorageBackendHealth { + if x != nil { + return x.BackendHealth + } + return nil } type NodeGetCapabilitiesRequest struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache + state protoimpl.MessageState `protogen:"open.v1"` unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } func (x *NodeGetCapabilitiesRequest) Reset() { *x = NodeGetCapabilitiesRequest{} - if protoimpl.UnsafeEnabled { - mi := &file_csi_proto_msgTypes[57] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_csi_proto_msgTypes[65] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *NodeGetCapabilitiesRequest) String() string { @@ -4765,8 +5257,8 @@ func (x *NodeGetCapabilitiesRequest) String() string { func (*NodeGetCapabilitiesRequest) ProtoMessage() {} func (x *NodeGetCapabilitiesRequest) ProtoReflect() protoreflect.Message { - mi := &file_csi_proto_msgTypes[57] - if protoimpl.UnsafeEnabled && x != nil { + mi := &file_csi_proto_msgTypes[65] + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -4778,26 +5270,23 @@ func (x *NodeGetCapabilitiesRequest) ProtoReflect() protoreflect.Message { // Deprecated: Use NodeGetCapabilitiesRequest.ProtoReflect.Descriptor instead. func (*NodeGetCapabilitiesRequest) Descriptor() ([]byte, []int) { - return file_csi_proto_rawDescGZIP(), []int{57} + return file_csi_proto_rawDescGZIP(), []int{65} } type NodeGetCapabilitiesResponse struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - + state protoimpl.MessageState `protogen:"open.v1"` // All the capabilities that the node service supports. This field // is OPTIONAL. - Capabilities []*NodeServiceCapability `protobuf:"bytes,1,rep,name=capabilities,proto3" json:"capabilities,omitempty"` + Capabilities []*NodeServiceCapability `protobuf:"bytes,1,rep,name=capabilities,proto3" json:"capabilities,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } func (x *NodeGetCapabilitiesResponse) Reset() { *x = NodeGetCapabilitiesResponse{} - if protoimpl.UnsafeEnabled { - mi := &file_csi_proto_msgTypes[58] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_csi_proto_msgTypes[66] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *NodeGetCapabilitiesResponse) String() string { @@ -4807,8 +5296,8 @@ func (x *NodeGetCapabilitiesResponse) String() string { func (*NodeGetCapabilitiesResponse) ProtoMessage() {} func (x *NodeGetCapabilitiesResponse) ProtoReflect() protoreflect.Message { - mi := &file_csi_proto_msgTypes[58] - if protoimpl.UnsafeEnabled && x != nil { + mi := &file_csi_proto_msgTypes[66] + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -4820,7 +5309,7 @@ func (x *NodeGetCapabilitiesResponse) ProtoReflect() protoreflect.Message { // Deprecated: Use NodeGetCapabilitiesResponse.ProtoReflect.Descriptor instead. func (*NodeGetCapabilitiesResponse) Descriptor() ([]byte, []int) { - return file_csi_proto_rawDescGZIP(), []int{58} + return file_csi_proto_rawDescGZIP(), []int{66} } func (x *NodeGetCapabilitiesResponse) GetCapabilities() []*NodeServiceCapability { @@ -4832,23 +5321,20 @@ func (x *NodeGetCapabilitiesResponse) GetCapabilities() []*NodeServiceCapability // Specifies a capability of the node service. type NodeServiceCapability struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - - // Types that are assignable to Type: + state protoimpl.MessageState `protogen:"open.v1"` + // Types that are valid to be assigned to Type: // // *NodeServiceCapability_Rpc - Type isNodeServiceCapability_Type `protobuf_oneof:"type"` + Type isNodeServiceCapability_Type `protobuf_oneof:"type"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } func (x *NodeServiceCapability) Reset() { *x = NodeServiceCapability{} - if protoimpl.UnsafeEnabled { - mi := &file_csi_proto_msgTypes[59] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_csi_proto_msgTypes[67] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *NodeServiceCapability) String() string { @@ -4858,8 +5344,8 @@ func (x *NodeServiceCapability) String() string { func (*NodeServiceCapability) ProtoMessage() {} func (x *NodeServiceCapability) ProtoReflect() protoreflect.Message { - mi := &file_csi_proto_msgTypes[59] - if protoimpl.UnsafeEnabled && x != nil { + mi := &file_csi_proto_msgTypes[67] + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -4871,19 +5357,21 @@ func (x *NodeServiceCapability) ProtoReflect() protoreflect.Message { // Deprecated: Use NodeServiceCapability.ProtoReflect.Descriptor instead. func (*NodeServiceCapability) Descriptor() ([]byte, []int) { - return file_csi_proto_rawDescGZIP(), []int{59} + return file_csi_proto_rawDescGZIP(), []int{67} } -func (m *NodeServiceCapability) GetType() isNodeServiceCapability_Type { - if m != nil { - return m.Type +func (x *NodeServiceCapability) GetType() isNodeServiceCapability_Type { + if x != nil { + return x.Type } return nil } func (x *NodeServiceCapability) GetRpc() *NodeServiceCapability_RPC { - if x, ok := x.GetType().(*NodeServiceCapability_Rpc); ok { - return x.Rpc + if x != nil { + if x, ok := x.Type.(*NodeServiceCapability_Rpc); ok { + return x.Rpc + } } return nil } @@ -4900,18 +5388,16 @@ type NodeServiceCapability_Rpc struct { func (*NodeServiceCapability_Rpc) isNodeServiceCapability_Type() {} type NodeGetInfoRequest struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache + state protoimpl.MessageState `protogen:"open.v1"` unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } func (x *NodeGetInfoRequest) Reset() { *x = NodeGetInfoRequest{} - if protoimpl.UnsafeEnabled { - mi := &file_csi_proto_msgTypes[60] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_csi_proto_msgTypes[68] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *NodeGetInfoRequest) String() string { @@ -4921,8 +5407,8 @@ func (x *NodeGetInfoRequest) String() string { func (*NodeGetInfoRequest) ProtoMessage() {} func (x *NodeGetInfoRequest) ProtoReflect() protoreflect.Message { - mi := &file_csi_proto_msgTypes[60] - if protoimpl.UnsafeEnabled && x != nil { + mi := &file_csi_proto_msgTypes[68] + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -4934,14 +5420,11 @@ func (x *NodeGetInfoRequest) ProtoReflect() protoreflect.Message { // Deprecated: Use NodeGetInfoRequest.ProtoReflect.Descriptor instead. func (*NodeGetInfoRequest) Descriptor() ([]byte, []int) { - return file_csi_proto_rawDescGZIP(), []int{60} + return file_csi_proto_rawDescGZIP(), []int{68} } type NodeGetInfoResponse struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - + state protoimpl.MessageState `protogen:"open.v1"` // The identifier of the node as understood by the SP. // This field is REQUIRED. // This field MUST contain enough information to uniquely identify @@ -4981,15 +5464,15 @@ type NodeGetInfoResponse struct { // Indicates the node exists within the "region" "R1" and the "zone" // "Z2". AccessibleTopology *Topology `protobuf:"bytes,3,opt,name=accessible_topology,json=accessibleTopology,proto3" json:"accessible_topology,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } func (x *NodeGetInfoResponse) Reset() { *x = NodeGetInfoResponse{} - if protoimpl.UnsafeEnabled { - mi := &file_csi_proto_msgTypes[61] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_csi_proto_msgTypes[69] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *NodeGetInfoResponse) String() string { @@ -4999,8 +5482,8 @@ func (x *NodeGetInfoResponse) String() string { func (*NodeGetInfoResponse) ProtoMessage() {} func (x *NodeGetInfoResponse) ProtoReflect() protoreflect.Message { - mi := &file_csi_proto_msgTypes[61] - if protoimpl.UnsafeEnabled && x != nil { + mi := &file_csi_proto_msgTypes[69] + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -5012,7 +5495,7 @@ func (x *NodeGetInfoResponse) ProtoReflect() protoreflect.Message { // Deprecated: Use NodeGetInfoResponse.ProtoReflect.Descriptor instead. func (*NodeGetInfoResponse) Descriptor() ([]byte, []int) { - return file_csi_proto_rawDescGZIP(), []int{61} + return file_csi_proto_rawDescGZIP(), []int{69} } func (x *NodeGetInfoResponse) GetNodeId() string { @@ -5037,10 +5520,7 @@ func (x *NodeGetInfoResponse) GetAccessibleTopology() *Topology { } type NodeExpandVolumeRequest struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - + state protoimpl.MessageState `protogen:"open.v1"` // The ID of the volume. This field is REQUIRED. VolumeId string `protobuf:"bytes,1,opt,name=volume_id,json=volumeId,proto3" json:"volume_id,omitempty"` // The path on which volume is available. This field is REQUIRED. @@ -5079,16 +5559,16 @@ type NodeExpandVolumeRequest struct { // Secrets required by plugin to complete node expand volume request. // This field is OPTIONAL. Refer to the `Secrets Requirements` // section on how to use this field. - Secrets map[string]string `protobuf:"bytes,6,rep,name=secrets,proto3" json:"secrets,omitempty" protobuf_key:"bytes,1,opt,name=key,proto3" protobuf_val:"bytes,2,opt,name=value,proto3"` + Secrets map[string]string `protobuf:"bytes,6,rep,name=secrets,proto3" json:"secrets,omitempty" protobuf_key:"bytes,1,opt,name=key" protobuf_val:"bytes,2,opt,name=value"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } func (x *NodeExpandVolumeRequest) Reset() { *x = NodeExpandVolumeRequest{} - if protoimpl.UnsafeEnabled { - mi := &file_csi_proto_msgTypes[62] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_csi_proto_msgTypes[70] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *NodeExpandVolumeRequest) String() string { @@ -5098,8 +5578,8 @@ func (x *NodeExpandVolumeRequest) String() string { func (*NodeExpandVolumeRequest) ProtoMessage() {} func (x *NodeExpandVolumeRequest) ProtoReflect() protoreflect.Message { - mi := &file_csi_proto_msgTypes[62] - if protoimpl.UnsafeEnabled && x != nil { + mi := &file_csi_proto_msgTypes[70] + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -5111,7 +5591,7 @@ func (x *NodeExpandVolumeRequest) ProtoReflect() protoreflect.Message { // Deprecated: Use NodeExpandVolumeRequest.ProtoReflect.Descriptor instead. func (*NodeExpandVolumeRequest) Descriptor() ([]byte, []int) { - return file_csi_proto_rawDescGZIP(), []int{62} + return file_csi_proto_rawDescGZIP(), []int{70} } func (x *NodeExpandVolumeRequest) GetVolumeId() string { @@ -5157,21 +5637,18 @@ func (x *NodeExpandVolumeRequest) GetSecrets() map[string]string { } type NodeExpandVolumeResponse struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - + state protoimpl.MessageState `protogen:"open.v1"` // The capacity of the volume in bytes. This field is OPTIONAL. CapacityBytes int64 `protobuf:"varint,1,opt,name=capacity_bytes,json=capacityBytes,proto3" json:"capacity_bytes,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } func (x *NodeExpandVolumeResponse) Reset() { *x = NodeExpandVolumeResponse{} - if protoimpl.UnsafeEnabled { - mi := &file_csi_proto_msgTypes[63] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_csi_proto_msgTypes[71] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *NodeExpandVolumeResponse) String() string { @@ -5181,8 +5658,8 @@ func (x *NodeExpandVolumeResponse) String() string { func (*NodeExpandVolumeResponse) ProtoMessage() {} func (x *NodeExpandVolumeResponse) ProtoReflect() protoreflect.Message { - mi := &file_csi_proto_msgTypes[63] - if protoimpl.UnsafeEnabled && x != nil { + mi := &file_csi_proto_msgTypes[71] + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -5194,7 +5671,7 @@ func (x *NodeExpandVolumeResponse) ProtoReflect() protoreflect.Message { // Deprecated: Use NodeExpandVolumeResponse.ProtoReflect.Descriptor instead. func (*NodeExpandVolumeResponse) Descriptor() ([]byte, []int) { - return file_csi_proto_rawDescGZIP(), []int{63} + return file_csi_proto_rawDescGZIP(), []int{71} } func (x *NodeExpandVolumeResponse) GetCapacityBytes() int64 { @@ -5205,18 +5682,16 @@ func (x *NodeExpandVolumeResponse) GetCapacityBytes() int64 { } type GroupControllerGetCapabilitiesRequest struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache + state protoimpl.MessageState `protogen:"open.v1"` unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } func (x *GroupControllerGetCapabilitiesRequest) Reset() { *x = GroupControllerGetCapabilitiesRequest{} - if protoimpl.UnsafeEnabled { - mi := &file_csi_proto_msgTypes[64] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_csi_proto_msgTypes[72] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *GroupControllerGetCapabilitiesRequest) String() string { @@ -5226,8 +5701,8 @@ func (x *GroupControllerGetCapabilitiesRequest) String() string { func (*GroupControllerGetCapabilitiesRequest) ProtoMessage() {} func (x *GroupControllerGetCapabilitiesRequest) ProtoReflect() protoreflect.Message { - mi := &file_csi_proto_msgTypes[64] - if protoimpl.UnsafeEnabled && x != nil { + mi := &file_csi_proto_msgTypes[72] + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -5239,26 +5714,23 @@ func (x *GroupControllerGetCapabilitiesRequest) ProtoReflect() protoreflect.Mess // Deprecated: Use GroupControllerGetCapabilitiesRequest.ProtoReflect.Descriptor instead. func (*GroupControllerGetCapabilitiesRequest) Descriptor() ([]byte, []int) { - return file_csi_proto_rawDescGZIP(), []int{64} + return file_csi_proto_rawDescGZIP(), []int{72} } type GroupControllerGetCapabilitiesResponse struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - + state protoimpl.MessageState `protogen:"open.v1"` // All the capabilities that the group controller service supports. // This field is OPTIONAL. - Capabilities []*GroupControllerServiceCapability `protobuf:"bytes,1,rep,name=capabilities,proto3" json:"capabilities,omitempty"` + Capabilities []*GroupControllerServiceCapability `protobuf:"bytes,1,rep,name=capabilities,proto3" json:"capabilities,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } func (x *GroupControllerGetCapabilitiesResponse) Reset() { *x = GroupControllerGetCapabilitiesResponse{} - if protoimpl.UnsafeEnabled { - mi := &file_csi_proto_msgTypes[65] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_csi_proto_msgTypes[73] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *GroupControllerGetCapabilitiesResponse) String() string { @@ -5268,8 +5740,8 @@ func (x *GroupControllerGetCapabilitiesResponse) String() string { func (*GroupControllerGetCapabilitiesResponse) ProtoMessage() {} func (x *GroupControllerGetCapabilitiesResponse) ProtoReflect() protoreflect.Message { - mi := &file_csi_proto_msgTypes[65] - if protoimpl.UnsafeEnabled && x != nil { + mi := &file_csi_proto_msgTypes[73] + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -5281,7 +5753,7 @@ func (x *GroupControllerGetCapabilitiesResponse) ProtoReflect() protoreflect.Mes // Deprecated: Use GroupControllerGetCapabilitiesResponse.ProtoReflect.Descriptor instead. func (*GroupControllerGetCapabilitiesResponse) Descriptor() ([]byte, []int) { - return file_csi_proto_rawDescGZIP(), []int{65} + return file_csi_proto_rawDescGZIP(), []int{73} } func (x *GroupControllerGetCapabilitiesResponse) GetCapabilities() []*GroupControllerServiceCapability { @@ -5293,23 +5765,20 @@ func (x *GroupControllerGetCapabilitiesResponse) GetCapabilities() []*GroupContr // Specifies a capability of the group controller service. type GroupControllerServiceCapability struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - - // Types that are assignable to Type: + state protoimpl.MessageState `protogen:"open.v1"` + // Types that are valid to be assigned to Type: // // *GroupControllerServiceCapability_Rpc - Type isGroupControllerServiceCapability_Type `protobuf_oneof:"type"` + Type isGroupControllerServiceCapability_Type `protobuf_oneof:"type"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } func (x *GroupControllerServiceCapability) Reset() { *x = GroupControllerServiceCapability{} - if protoimpl.UnsafeEnabled { - mi := &file_csi_proto_msgTypes[66] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_csi_proto_msgTypes[74] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *GroupControllerServiceCapability) String() string { @@ -5319,8 +5788,8 @@ func (x *GroupControllerServiceCapability) String() string { func (*GroupControllerServiceCapability) ProtoMessage() {} func (x *GroupControllerServiceCapability) ProtoReflect() protoreflect.Message { - mi := &file_csi_proto_msgTypes[66] - if protoimpl.UnsafeEnabled && x != nil { + mi := &file_csi_proto_msgTypes[74] + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -5332,19 +5801,21 @@ func (x *GroupControllerServiceCapability) ProtoReflect() protoreflect.Message { // Deprecated: Use GroupControllerServiceCapability.ProtoReflect.Descriptor instead. func (*GroupControllerServiceCapability) Descriptor() ([]byte, []int) { - return file_csi_proto_rawDescGZIP(), []int{66} + return file_csi_proto_rawDescGZIP(), []int{74} } -func (m *GroupControllerServiceCapability) GetType() isGroupControllerServiceCapability_Type { - if m != nil { - return m.Type +func (x *GroupControllerServiceCapability) GetType() isGroupControllerServiceCapability_Type { + if x != nil { + return x.Type } return nil } func (x *GroupControllerServiceCapability) GetRpc() *GroupControllerServiceCapability_RPC { - if x, ok := x.GetType().(*GroupControllerServiceCapability_Rpc); ok { - return x.Rpc + if x != nil { + if x, ok := x.Type.(*GroupControllerServiceCapability_Rpc); ok { + return x.Rpc + } } return nil } @@ -5361,10 +5832,7 @@ type GroupControllerServiceCapability_Rpc struct { func (*GroupControllerServiceCapability_Rpc) isGroupControllerServiceCapability_Type() {} type CreateVolumeGroupSnapshotRequest struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - + state protoimpl.MessageState `protogen:"open.v1"` // The suggested name for the group snapshot. This field is REQUIRED // for idempotency. // Any Unicode string that conforms to the length limit is allowed @@ -5381,20 +5849,20 @@ type CreateVolumeGroupSnapshotRequest struct { // section on how to use this field. // The secrets provided in this field SHOULD be the same for // all group snapshot operations on the same group snapshot. - Secrets map[string]string `protobuf:"bytes,3,rep,name=secrets,proto3" json:"secrets,omitempty" protobuf_key:"bytes,1,opt,name=key,proto3" protobuf_val:"bytes,2,opt,name=value,proto3"` + Secrets map[string]string `protobuf:"bytes,3,rep,name=secrets,proto3" json:"secrets,omitempty" protobuf_key:"bytes,1,opt,name=key" protobuf_val:"bytes,2,opt,name=value"` // Plugin specific parameters passed in as opaque key-value pairs. // This field is OPTIONAL. The Plugin is responsible for parsing and // validating these parameters. COs will treat these as opaque. - Parameters map[string]string `protobuf:"bytes,4,rep,name=parameters,proto3" json:"parameters,omitempty" protobuf_key:"bytes,1,opt,name=key,proto3" protobuf_val:"bytes,2,opt,name=value,proto3"` + Parameters map[string]string `protobuf:"bytes,4,rep,name=parameters,proto3" json:"parameters,omitempty" protobuf_key:"bytes,1,opt,name=key" protobuf_val:"bytes,2,opt,name=value"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } func (x *CreateVolumeGroupSnapshotRequest) Reset() { *x = CreateVolumeGroupSnapshotRequest{} - if protoimpl.UnsafeEnabled { - mi := &file_csi_proto_msgTypes[67] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_csi_proto_msgTypes[75] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *CreateVolumeGroupSnapshotRequest) String() string { @@ -5404,8 +5872,8 @@ func (x *CreateVolumeGroupSnapshotRequest) String() string { func (*CreateVolumeGroupSnapshotRequest) ProtoMessage() {} func (x *CreateVolumeGroupSnapshotRequest) ProtoReflect() protoreflect.Message { - mi := &file_csi_proto_msgTypes[67] - if protoimpl.UnsafeEnabled && x != nil { + mi := &file_csi_proto_msgTypes[75] + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -5417,7 +5885,7 @@ func (x *CreateVolumeGroupSnapshotRequest) ProtoReflect() protoreflect.Message { // Deprecated: Use CreateVolumeGroupSnapshotRequest.ProtoReflect.Descriptor instead. func (*CreateVolumeGroupSnapshotRequest) Descriptor() ([]byte, []int) { - return file_csi_proto_rawDescGZIP(), []int{67} + return file_csi_proto_rawDescGZIP(), []int{75} } func (x *CreateVolumeGroupSnapshotRequest) GetName() string { @@ -5449,22 +5917,19 @@ func (x *CreateVolumeGroupSnapshotRequest) GetParameters() map[string]string { } type CreateVolumeGroupSnapshotResponse struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - + state protoimpl.MessageState `protogen:"open.v1"` // Contains all attributes of the newly created group snapshot. // This field is REQUIRED. GroupSnapshot *VolumeGroupSnapshot `protobuf:"bytes,1,opt,name=group_snapshot,json=groupSnapshot,proto3" json:"group_snapshot,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } func (x *CreateVolumeGroupSnapshotResponse) Reset() { *x = CreateVolumeGroupSnapshotResponse{} - if protoimpl.UnsafeEnabled { - mi := &file_csi_proto_msgTypes[68] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_csi_proto_msgTypes[76] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *CreateVolumeGroupSnapshotResponse) String() string { @@ -5474,8 +5939,8 @@ func (x *CreateVolumeGroupSnapshotResponse) String() string { func (*CreateVolumeGroupSnapshotResponse) ProtoMessage() {} func (x *CreateVolumeGroupSnapshotResponse) ProtoReflect() protoreflect.Message { - mi := &file_csi_proto_msgTypes[68] - if protoimpl.UnsafeEnabled && x != nil { + mi := &file_csi_proto_msgTypes[76] + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -5487,7 +5952,7 @@ func (x *CreateVolumeGroupSnapshotResponse) ProtoReflect() protoreflect.Message // Deprecated: Use CreateVolumeGroupSnapshotResponse.ProtoReflect.Descriptor instead. func (*CreateVolumeGroupSnapshotResponse) Descriptor() ([]byte, []int) { - return file_csi_proto_rawDescGZIP(), []int{68} + return file_csi_proto_rawDescGZIP(), []int{76} } func (x *CreateVolumeGroupSnapshotResponse) GetGroupSnapshot() *VolumeGroupSnapshot { @@ -5498,10 +5963,7 @@ func (x *CreateVolumeGroupSnapshotResponse) GetGroupSnapshot() *VolumeGroupSnaps } type VolumeGroupSnapshot struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - + state protoimpl.MessageState `protogen:"open.v1"` // The identifier for this group snapshot, generated by the plugin. // This field MUST contain enough information to uniquely identify // this specific snapshot vs all other group snapshots supported by @@ -5527,16 +5989,16 @@ type VolumeGroupSnapshot struct { // have ready_to_use set to true, the SP SHOULD set this field to // true. // This field is REQUIRED. - ReadyToUse bool `protobuf:"varint,4,opt,name=ready_to_use,json=readyToUse,proto3" json:"ready_to_use,omitempty"` + ReadyToUse bool `protobuf:"varint,4,opt,name=ready_to_use,json=readyToUse,proto3" json:"ready_to_use,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } func (x *VolumeGroupSnapshot) Reset() { *x = VolumeGroupSnapshot{} - if protoimpl.UnsafeEnabled { - mi := &file_csi_proto_msgTypes[69] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_csi_proto_msgTypes[77] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *VolumeGroupSnapshot) String() string { @@ -5546,8 +6008,8 @@ func (x *VolumeGroupSnapshot) String() string { func (*VolumeGroupSnapshot) ProtoMessage() {} func (x *VolumeGroupSnapshot) ProtoReflect() protoreflect.Message { - mi := &file_csi_proto_msgTypes[69] - if protoimpl.UnsafeEnabled && x != nil { + mi := &file_csi_proto_msgTypes[77] + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -5559,7 +6021,7 @@ func (x *VolumeGroupSnapshot) ProtoReflect() protoreflect.Message { // Deprecated: Use VolumeGroupSnapshot.ProtoReflect.Descriptor instead. func (*VolumeGroupSnapshot) Descriptor() ([]byte, []int) { - return file_csi_proto_rawDescGZIP(), []int{69} + return file_csi_proto_rawDescGZIP(), []int{77} } func (x *VolumeGroupSnapshot) GetGroupSnapshotId() string { @@ -5591,10 +6053,7 @@ func (x *VolumeGroupSnapshot) GetReadyToUse() bool { } type DeleteVolumeGroupSnapshotRequest struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - + state protoimpl.MessageState `protogen:"open.v1"` // The ID of the group snapshot to be deleted. // This field is REQUIRED. GroupSnapshotId string `protobuf:"bytes,1,opt,name=group_snapshot_id,json=groupSnapshotId,proto3" json:"group_snapshot_id,omitempty"` @@ -5614,16 +6073,16 @@ type DeleteVolumeGroupSnapshotRequest struct { // section on how to use this field. // The secrets provided in this field SHOULD be the same for // all group snapshot operations on the same group snapshot. - Secrets map[string]string `protobuf:"bytes,3,rep,name=secrets,proto3" json:"secrets,omitempty" protobuf_key:"bytes,1,opt,name=key,proto3" protobuf_val:"bytes,2,opt,name=value,proto3"` + Secrets map[string]string `protobuf:"bytes,3,rep,name=secrets,proto3" json:"secrets,omitempty" protobuf_key:"bytes,1,opt,name=key" protobuf_val:"bytes,2,opt,name=value"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } func (x *DeleteVolumeGroupSnapshotRequest) Reset() { *x = DeleteVolumeGroupSnapshotRequest{} - if protoimpl.UnsafeEnabled { - mi := &file_csi_proto_msgTypes[70] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_csi_proto_msgTypes[78] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *DeleteVolumeGroupSnapshotRequest) String() string { @@ -5633,8 +6092,8 @@ func (x *DeleteVolumeGroupSnapshotRequest) String() string { func (*DeleteVolumeGroupSnapshotRequest) ProtoMessage() {} func (x *DeleteVolumeGroupSnapshotRequest) ProtoReflect() protoreflect.Message { - mi := &file_csi_proto_msgTypes[70] - if protoimpl.UnsafeEnabled && x != nil { + mi := &file_csi_proto_msgTypes[78] + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -5646,7 +6105,7 @@ func (x *DeleteVolumeGroupSnapshotRequest) ProtoReflect() protoreflect.Message { // Deprecated: Use DeleteVolumeGroupSnapshotRequest.ProtoReflect.Descriptor instead. func (*DeleteVolumeGroupSnapshotRequest) Descriptor() ([]byte, []int) { - return file_csi_proto_rawDescGZIP(), []int{70} + return file_csi_proto_rawDescGZIP(), []int{78} } func (x *DeleteVolumeGroupSnapshotRequest) GetGroupSnapshotId() string { @@ -5671,18 +6130,16 @@ func (x *DeleteVolumeGroupSnapshotRequest) GetSecrets() map[string]string { } type DeleteVolumeGroupSnapshotResponse struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache + state protoimpl.MessageState `protogen:"open.v1"` unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } func (x *DeleteVolumeGroupSnapshotResponse) Reset() { *x = DeleteVolumeGroupSnapshotResponse{} - if protoimpl.UnsafeEnabled { - mi := &file_csi_proto_msgTypes[71] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_csi_proto_msgTypes[79] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *DeleteVolumeGroupSnapshotResponse) String() string { @@ -5692,8 +6149,8 @@ func (x *DeleteVolumeGroupSnapshotResponse) String() string { func (*DeleteVolumeGroupSnapshotResponse) ProtoMessage() {} func (x *DeleteVolumeGroupSnapshotResponse) ProtoReflect() protoreflect.Message { - mi := &file_csi_proto_msgTypes[71] - if protoimpl.UnsafeEnabled && x != nil { + mi := &file_csi_proto_msgTypes[79] + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -5705,14 +6162,11 @@ func (x *DeleteVolumeGroupSnapshotResponse) ProtoReflect() protoreflect.Message // Deprecated: Use DeleteVolumeGroupSnapshotResponse.ProtoReflect.Descriptor instead. func (*DeleteVolumeGroupSnapshotResponse) Descriptor() ([]byte, []int) { - return file_csi_proto_rawDescGZIP(), []int{71} + return file_csi_proto_rawDescGZIP(), []int{79} } type GetVolumeGroupSnapshotRequest struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - + state protoimpl.MessageState `protogen:"open.v1"` // The ID of the group snapshot to fetch current group snapshot // information for. // This field is REQUIRED. @@ -5733,16 +6187,16 @@ type GetVolumeGroupSnapshotRequest struct { // section on how to use this field. // The secrets provided in this field SHOULD be the same for // all group snapshot operations on the same group snapshot. - Secrets map[string]string `protobuf:"bytes,3,rep,name=secrets,proto3" json:"secrets,omitempty" protobuf_key:"bytes,1,opt,name=key,proto3" protobuf_val:"bytes,2,opt,name=value,proto3"` + Secrets map[string]string `protobuf:"bytes,3,rep,name=secrets,proto3" json:"secrets,omitempty" protobuf_key:"bytes,1,opt,name=key" protobuf_val:"bytes,2,opt,name=value"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } func (x *GetVolumeGroupSnapshotRequest) Reset() { *x = GetVolumeGroupSnapshotRequest{} - if protoimpl.UnsafeEnabled { - mi := &file_csi_proto_msgTypes[72] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_csi_proto_msgTypes[80] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *GetVolumeGroupSnapshotRequest) String() string { @@ -5752,8 +6206,8 @@ func (x *GetVolumeGroupSnapshotRequest) String() string { func (*GetVolumeGroupSnapshotRequest) ProtoMessage() {} func (x *GetVolumeGroupSnapshotRequest) ProtoReflect() protoreflect.Message { - mi := &file_csi_proto_msgTypes[72] - if protoimpl.UnsafeEnabled && x != nil { + mi := &file_csi_proto_msgTypes[80] + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -5765,7 +6219,7 @@ func (x *GetVolumeGroupSnapshotRequest) ProtoReflect() protoreflect.Message { // Deprecated: Use GetVolumeGroupSnapshotRequest.ProtoReflect.Descriptor instead. func (*GetVolumeGroupSnapshotRequest) Descriptor() ([]byte, []int) { - return file_csi_proto_rawDescGZIP(), []int{72} + return file_csi_proto_rawDescGZIP(), []int{80} } func (x *GetVolumeGroupSnapshotRequest) GetGroupSnapshotId() string { @@ -5790,21 +6244,18 @@ func (x *GetVolumeGroupSnapshotRequest) GetSecrets() map[string]string { } type GetVolumeGroupSnapshotResponse struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - + state protoimpl.MessageState `protogen:"open.v1"` // This field is REQUIRED GroupSnapshot *VolumeGroupSnapshot `protobuf:"bytes,1,opt,name=group_snapshot,json=groupSnapshot,proto3" json:"group_snapshot,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } func (x *GetVolumeGroupSnapshotResponse) Reset() { *x = GetVolumeGroupSnapshotResponse{} - if protoimpl.UnsafeEnabled { - mi := &file_csi_proto_msgTypes[73] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_csi_proto_msgTypes[81] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *GetVolumeGroupSnapshotResponse) String() string { @@ -5814,8 +6265,8 @@ func (x *GetVolumeGroupSnapshotResponse) String() string { func (*GetVolumeGroupSnapshotResponse) ProtoMessage() {} func (x *GetVolumeGroupSnapshotResponse) ProtoReflect() protoreflect.Message { - mi := &file_csi_proto_msgTypes[73] - if protoimpl.UnsafeEnabled && x != nil { + mi := &file_csi_proto_msgTypes[81] + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -5827,7 +6278,7 @@ func (x *GetVolumeGroupSnapshotResponse) ProtoReflect() protoreflect.Message { // Deprecated: Use GetVolumeGroupSnapshotResponse.ProtoReflect.Descriptor instead. func (*GetVolumeGroupSnapshotResponse) Descriptor() ([]byte, []int) { - return file_csi_proto_rawDescGZIP(), []int{73} + return file_csi_proto_rawDescGZIP(), []int{81} } func (x *GetVolumeGroupSnapshotResponse) GetGroupSnapshot() *VolumeGroupSnapshot { @@ -5839,10 +6290,7 @@ func (x *GetVolumeGroupSnapshotResponse) GetGroupSnapshot() *VolumeGroupSnapshot // BlockMetadata specifies a data range. type BlockMetadata struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - + state protoimpl.MessageState `protogen:"open.v1"` // This is the zero based byte position in the volume or snapshot, // measured from the start of the object. // This field is REQUIRED. @@ -5850,16 +6298,16 @@ type BlockMetadata struct { // This is the size of the data range. // size_bytes MUST be greater than zero. // This field is REQUIRED. - SizeBytes int64 `protobuf:"varint,2,opt,name=size_bytes,json=sizeBytes,proto3" json:"size_bytes,omitempty"` + SizeBytes int64 `protobuf:"varint,2,opt,name=size_bytes,json=sizeBytes,proto3" json:"size_bytes,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } func (x *BlockMetadata) Reset() { *x = BlockMetadata{} - if protoimpl.UnsafeEnabled { - mi := &file_csi_proto_msgTypes[74] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_csi_proto_msgTypes[82] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *BlockMetadata) String() string { @@ -5869,8 +6317,8 @@ func (x *BlockMetadata) String() string { func (*BlockMetadata) ProtoMessage() {} func (x *BlockMetadata) ProtoReflect() protoreflect.Message { - mi := &file_csi_proto_msgTypes[74] - if protoimpl.UnsafeEnabled && x != nil { + mi := &file_csi_proto_msgTypes[82] + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -5882,7 +6330,7 @@ func (x *BlockMetadata) ProtoReflect() protoreflect.Message { // Deprecated: Use BlockMetadata.ProtoReflect.Descriptor instead. func (*BlockMetadata) Descriptor() ([]byte, []int) { - return file_csi_proto_rawDescGZIP(), []int{74} + return file_csi_proto_rawDescGZIP(), []int{82} } func (x *BlockMetadata) GetByteOffset() int64 { @@ -5904,10 +6352,7 @@ func (x *BlockMetadata) GetSizeBytes() int64 { // data ranges that have valid data as they were the target of some // previous write operation on the volume. type GetMetadataAllocatedRequest struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - + state protoimpl.MessageState `protogen:"open.v1"` // This is the identifier of the snapshot. // This field is REQUIRED. SnapshotId string `protobuf:"bytes,1,opt,name=snapshot_id,json=snapshotId,proto3" json:"snapshot_id,omitempty"` @@ -5935,16 +6380,16 @@ type GetMetadataAllocatedRequest struct { // Secrets required by plugin to complete the request. // This field is OPTIONAL. Refer to the `Secrets Requirements` // section on how to use this field. - Secrets map[string]string `protobuf:"bytes,4,rep,name=secrets,proto3" json:"secrets,omitempty" protobuf_key:"bytes,1,opt,name=key,proto3" protobuf_val:"bytes,2,opt,name=value,proto3"` + Secrets map[string]string `protobuf:"bytes,4,rep,name=secrets,proto3" json:"secrets,omitempty" protobuf_key:"bytes,1,opt,name=key" protobuf_val:"bytes,2,opt,name=value"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } func (x *GetMetadataAllocatedRequest) Reset() { *x = GetMetadataAllocatedRequest{} - if protoimpl.UnsafeEnabled { - mi := &file_csi_proto_msgTypes[75] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_csi_proto_msgTypes[83] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *GetMetadataAllocatedRequest) String() string { @@ -5954,8 +6399,8 @@ func (x *GetMetadataAllocatedRequest) String() string { func (*GetMetadataAllocatedRequest) ProtoMessage() {} func (x *GetMetadataAllocatedRequest) ProtoReflect() protoreflect.Message { - mi := &file_csi_proto_msgTypes[75] - if protoimpl.UnsafeEnabled && x != nil { + mi := &file_csi_proto_msgTypes[83] + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -5967,7 +6412,7 @@ func (x *GetMetadataAllocatedRequest) ProtoReflect() protoreflect.Message { // Deprecated: Use GetMetadataAllocatedRequest.ProtoReflect.Descriptor instead. func (*GetMetadataAllocatedRequest) Descriptor() ([]byte, []int) { - return file_csi_proto_rawDescGZIP(), []int{75} + return file_csi_proto_rawDescGZIP(), []int{83} } func (x *GetMetadataAllocatedRequest) GetSnapshotId() string { @@ -6002,10 +6447,7 @@ func (x *GetMetadataAllocatedRequest) GetSecrets() map[string]string { // Cumulatively, they provide information on the allocated data // ranges in the snapshot. type GetMetadataAllocatedResponse struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - + state protoimpl.MessageState `protogen:"open.v1"` // This specifies the style used in the BlockMetadata sequence. // This value must be the same in all such messages returned by // the stream. @@ -6032,15 +6474,15 @@ type GetMetadataAllocatedResponse struct { // different GetMetadataAllocatedResponse messages in the gRPC stream. // This field is OPTIONAL. BlockMetadata []*BlockMetadata `protobuf:"bytes,3,rep,name=block_metadata,json=blockMetadata,proto3" json:"block_metadata,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } func (x *GetMetadataAllocatedResponse) Reset() { *x = GetMetadataAllocatedResponse{} - if protoimpl.UnsafeEnabled { - mi := &file_csi_proto_msgTypes[76] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_csi_proto_msgTypes[84] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *GetMetadataAllocatedResponse) String() string { @@ -6050,8 +6492,8 @@ func (x *GetMetadataAllocatedResponse) String() string { func (*GetMetadataAllocatedResponse) ProtoMessage() {} func (x *GetMetadataAllocatedResponse) ProtoReflect() protoreflect.Message { - mi := &file_csi_proto_msgTypes[76] - if protoimpl.UnsafeEnabled && x != nil { + mi := &file_csi_proto_msgTypes[84] + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -6063,7 +6505,7 @@ func (x *GetMetadataAllocatedResponse) ProtoReflect() protoreflect.Message { // Deprecated: Use GetMetadataAllocatedResponse.ProtoReflect.Descriptor instead. func (*GetMetadataAllocatedResponse) Descriptor() ([]byte, []int) { - return file_csi_proto_rawDescGZIP(), []int{76} + return file_csi_proto_rawDescGZIP(), []int{84} } func (x *GetMetadataAllocatedResponse) GetBlockMetadataType() BlockMetadataType { @@ -6090,10 +6532,7 @@ func (x *GetMetadataAllocatedResponse) GetBlockMetadata() []*BlockMetadata { // The GetMetadataDeltaRequest message is used to solicit metadata on // the data ranges that have changed between two snapshots. type GetMetadataDeltaRequest struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - + state protoimpl.MessageState `protogen:"open.v1"` // This is the identifier of the snapshot against which changes // are to be computed. // This field is REQUIRED. @@ -6126,16 +6565,16 @@ type GetMetadataDeltaRequest struct { // Secrets required by plugin to complete the request. // This field is OPTIONAL. Refer to the `Secrets Requirements` // section on how to use this field. - Secrets map[string]string `protobuf:"bytes,5,rep,name=secrets,proto3" json:"secrets,omitempty" protobuf_key:"bytes,1,opt,name=key,proto3" protobuf_val:"bytes,2,opt,name=value,proto3"` + Secrets map[string]string `protobuf:"bytes,5,rep,name=secrets,proto3" json:"secrets,omitempty" protobuf_key:"bytes,1,opt,name=key" protobuf_val:"bytes,2,opt,name=value"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } func (x *GetMetadataDeltaRequest) Reset() { *x = GetMetadataDeltaRequest{} - if protoimpl.UnsafeEnabled { - mi := &file_csi_proto_msgTypes[77] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_csi_proto_msgTypes[85] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *GetMetadataDeltaRequest) String() string { @@ -6145,8 +6584,8 @@ func (x *GetMetadataDeltaRequest) String() string { func (*GetMetadataDeltaRequest) ProtoMessage() {} func (x *GetMetadataDeltaRequest) ProtoReflect() protoreflect.Message { - mi := &file_csi_proto_msgTypes[77] - if protoimpl.UnsafeEnabled && x != nil { + mi := &file_csi_proto_msgTypes[85] + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -6158,7 +6597,7 @@ func (x *GetMetadataDeltaRequest) ProtoReflect() protoreflect.Message { // Deprecated: Use GetMetadataDeltaRequest.ProtoReflect.Descriptor instead. func (*GetMetadataDeltaRequest) Descriptor() ([]byte, []int) { - return file_csi_proto_rawDescGZIP(), []int{77} + return file_csi_proto_rawDescGZIP(), []int{85} } func (x *GetMetadataDeltaRequest) GetBaseSnapshotId() string { @@ -6201,10 +6640,7 @@ func (x *GetMetadataDeltaRequest) GetSecrets() map[string]string { // have changed between the base and target snapshots specified // in the GetMetadataDeltaRequest message. type GetMetadataDeltaResponse struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - + state protoimpl.MessageState `protogen:"open.v1"` // This specifies the style used in the BlockMetadata sequence. // This value must be the same in all such messages returned by // the stream. @@ -6231,15 +6667,15 @@ type GetMetadataDeltaResponse struct { // different GetMetadataDeltaResponse messages in the gRPC stream. // This field is OPTIONAL. BlockMetadata []*BlockMetadata `protobuf:"bytes,3,rep,name=block_metadata,json=blockMetadata,proto3" json:"block_metadata,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } func (x *GetMetadataDeltaResponse) Reset() { *x = GetMetadataDeltaResponse{} - if protoimpl.UnsafeEnabled { - mi := &file_csi_proto_msgTypes[78] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_csi_proto_msgTypes[86] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *GetMetadataDeltaResponse) String() string { @@ -6249,8 +6685,8 @@ func (x *GetMetadataDeltaResponse) String() string { func (*GetMetadataDeltaResponse) ProtoMessage() {} func (x *GetMetadataDeltaResponse) ProtoReflect() protoreflect.Message { - mi := &file_csi_proto_msgTypes[78] - if protoimpl.UnsafeEnabled && x != nil { + mi := &file_csi_proto_msgTypes[86] + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -6262,7 +6698,7 @@ func (x *GetMetadataDeltaResponse) ProtoReflect() protoreflect.Message { // Deprecated: Use GetMetadataDeltaResponse.ProtoReflect.Descriptor instead. func (*GetMetadataDeltaResponse) Descriptor() ([]byte, []int) { - return file_csi_proto_rawDescGZIP(), []int{78} + return file_csi_proto_rawDescGZIP(), []int{86} } func (x *GetMetadataDeltaResponse) GetBlockMetadataType() BlockMetadataType { @@ -6287,20 +6723,17 @@ func (x *GetMetadataDeltaResponse) GetBlockMetadata() []*BlockMetadata { } type PluginCapability_Service struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache + state protoimpl.MessageState `protogen:"open.v1"` + Type PluginCapability_Service_Type `protobuf:"varint,1,opt,name=type,proto3,enum=csi.v1.PluginCapability_Service_Type" json:"type,omitempty"` unknownFields protoimpl.UnknownFields - - Type PluginCapability_Service_Type `protobuf:"varint,1,opt,name=type,proto3,enum=csi.v1.PluginCapability_Service_Type" json:"type,omitempty"` + sizeCache protoimpl.SizeCache } func (x *PluginCapability_Service) Reset() { *x = PluginCapability_Service{} - if protoimpl.UnsafeEnabled { - mi := &file_csi_proto_msgTypes[80] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_csi_proto_msgTypes[88] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *PluginCapability_Service) String() string { @@ -6310,8 +6743,8 @@ func (x *PluginCapability_Service) String() string { func (*PluginCapability_Service) ProtoMessage() {} func (x *PluginCapability_Service) ProtoReflect() protoreflect.Message { - mi := &file_csi_proto_msgTypes[80] - if protoimpl.UnsafeEnabled && x != nil { + mi := &file_csi_proto_msgTypes[88] + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -6334,20 +6767,17 @@ func (x *PluginCapability_Service) GetType() PluginCapability_Service_Type { } type PluginCapability_VolumeExpansion struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache + state protoimpl.MessageState `protogen:"open.v1"` + Type PluginCapability_VolumeExpansion_Type `protobuf:"varint,1,opt,name=type,proto3,enum=csi.v1.PluginCapability_VolumeExpansion_Type" json:"type,omitempty"` unknownFields protoimpl.UnknownFields - - Type PluginCapability_VolumeExpansion_Type `protobuf:"varint,1,opt,name=type,proto3,enum=csi.v1.PluginCapability_VolumeExpansion_Type" json:"type,omitempty"` + sizeCache protoimpl.SizeCache } func (x *PluginCapability_VolumeExpansion) Reset() { *x = PluginCapability_VolumeExpansion{} - if protoimpl.UnsafeEnabled { - mi := &file_csi_proto_msgTypes[81] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_csi_proto_msgTypes[89] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *PluginCapability_VolumeExpansion) String() string { @@ -6357,8 +6787,8 @@ func (x *PluginCapability_VolumeExpansion) String() string { func (*PluginCapability_VolumeExpansion) ProtoMessage() {} func (x *PluginCapability_VolumeExpansion) ProtoReflect() protoreflect.Message { - mi := &file_csi_proto_msgTypes[81] - if protoimpl.UnsafeEnabled && x != nil { + mi := &file_csi_proto_msgTypes[89] + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -6381,24 +6811,21 @@ func (x *PluginCapability_VolumeExpansion) GetType() PluginCapability_VolumeExpa } type VolumeContentSource_SnapshotSource struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - + state protoimpl.MessageState `protogen:"open.v1"` // Contains identity information for the existing source snapshot. // This field is REQUIRED. Plugin is REQUIRED to support creating // volume from snapshot if it supports the capability // CREATE_DELETE_SNAPSHOT. - SnapshotId string `protobuf:"bytes,1,opt,name=snapshot_id,json=snapshotId,proto3" json:"snapshot_id,omitempty"` + SnapshotId string `protobuf:"bytes,1,opt,name=snapshot_id,json=snapshotId,proto3" json:"snapshot_id,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } func (x *VolumeContentSource_SnapshotSource) Reset() { *x = VolumeContentSource_SnapshotSource{} - if protoimpl.UnsafeEnabled { - mi := &file_csi_proto_msgTypes[85] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_csi_proto_msgTypes[93] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *VolumeContentSource_SnapshotSource) String() string { @@ -6408,8 +6835,8 @@ func (x *VolumeContentSource_SnapshotSource) String() string { func (*VolumeContentSource_SnapshotSource) ProtoMessage() {} func (x *VolumeContentSource_SnapshotSource) ProtoReflect() protoreflect.Message { - mi := &file_csi_proto_msgTypes[85] - if protoimpl.UnsafeEnabled && x != nil { + mi := &file_csi_proto_msgTypes[93] + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -6432,23 +6859,20 @@ func (x *VolumeContentSource_SnapshotSource) GetSnapshotId() string { } type VolumeContentSource_VolumeSource struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - + state protoimpl.MessageState `protogen:"open.v1"` // Contains identity information for the existing source volume. // This field is REQUIRED. Plugins reporting CLONE_VOLUME // capability MUST support creating a volume from another volume. - VolumeId string `protobuf:"bytes,1,opt,name=volume_id,json=volumeId,proto3" json:"volume_id,omitempty"` + VolumeId string `protobuf:"bytes,1,opt,name=volume_id,json=volumeId,proto3" json:"volume_id,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } func (x *VolumeContentSource_VolumeSource) Reset() { *x = VolumeContentSource_VolumeSource{} - if protoimpl.UnsafeEnabled { - mi := &file_csi_proto_msgTypes[86] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_csi_proto_msgTypes[94] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *VolumeContentSource_VolumeSource) String() string { @@ -6458,8 +6882,8 @@ func (x *VolumeContentSource_VolumeSource) String() string { func (*VolumeContentSource_VolumeSource) ProtoMessage() {} func (x *VolumeContentSource_VolumeSource) ProtoReflect() protoreflect.Message { - mi := &file_csi_proto_msgTypes[86] - if protoimpl.UnsafeEnabled && x != nil { + mi := &file_csi_proto_msgTypes[94] + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -6483,18 +6907,16 @@ func (x *VolumeContentSource_VolumeSource) GetVolumeId() string { // Indicate that the volume will be accessed via the block device API. type VolumeCapability_BlockVolume struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache + state protoimpl.MessageState `protogen:"open.v1"` unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } func (x *VolumeCapability_BlockVolume) Reset() { *x = VolumeCapability_BlockVolume{} - if protoimpl.UnsafeEnabled { - mi := &file_csi_proto_msgTypes[87] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_csi_proto_msgTypes[95] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *VolumeCapability_BlockVolume) String() string { @@ -6504,8 +6926,8 @@ func (x *VolumeCapability_BlockVolume) String() string { func (*VolumeCapability_BlockVolume) ProtoMessage() {} func (x *VolumeCapability_BlockVolume) ProtoReflect() protoreflect.Message { - mi := &file_csi_proto_msgTypes[87] - if protoimpl.UnsafeEnabled && x != nil { + mi := &file_csi_proto_msgTypes[95] + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -6522,10 +6944,7 @@ func (*VolumeCapability_BlockVolume) Descriptor() ([]byte, []int) { // Indicate that the volume will be accessed via the filesystem API. type VolumeCapability_MountVolume struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - + state protoimpl.MessageState `protogen:"open.v1"` // The filesystem type. This field is OPTIONAL. // An empty string is equal to an unspecified field value. FsType string `protobuf:"bytes,1,opt,name=fs_type,json=fsType,proto3" json:"fs_type,omitempty"` @@ -6547,15 +6966,15 @@ type VolumeCapability_MountVolume struct { // both readable and writable by said mount group identifier. // This is an OPTIONAL field. VolumeMountGroup string `protobuf:"bytes,3,opt,name=volume_mount_group,json=volumeMountGroup,proto3" json:"volume_mount_group,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } func (x *VolumeCapability_MountVolume) Reset() { *x = VolumeCapability_MountVolume{} - if protoimpl.UnsafeEnabled { - mi := &file_csi_proto_msgTypes[88] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_csi_proto_msgTypes[96] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *VolumeCapability_MountVolume) String() string { @@ -6565,8 +6984,8 @@ func (x *VolumeCapability_MountVolume) String() string { func (*VolumeCapability_MountVolume) ProtoMessage() {} func (x *VolumeCapability_MountVolume) ProtoReflect() protoreflect.Message { - mi := &file_csi_proto_msgTypes[88] - if protoimpl.UnsafeEnabled && x != nil { + mi := &file_csi_proto_msgTypes[96] + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -6604,21 +7023,18 @@ func (x *VolumeCapability_MountVolume) GetVolumeMountGroup() string { // Specify how a volume can be accessed. type VolumeCapability_AccessMode struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - + state protoimpl.MessageState `protogen:"open.v1"` // This field is REQUIRED. - Mode VolumeCapability_AccessMode_Mode `protobuf:"varint,1,opt,name=mode,proto3,enum=csi.v1.VolumeCapability_AccessMode_Mode" json:"mode,omitempty"` + Mode VolumeCapability_AccessMode_Mode `protobuf:"varint,1,opt,name=mode,proto3,enum=csi.v1.VolumeCapability_AccessMode_Mode" json:"mode,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } func (x *VolumeCapability_AccessMode) Reset() { *x = VolumeCapability_AccessMode{} - if protoimpl.UnsafeEnabled { - mi := &file_csi_proto_msgTypes[89] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_csi_proto_msgTypes[97] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *VolumeCapability_AccessMode) String() string { @@ -6628,8 +7044,8 @@ func (x *VolumeCapability_AccessMode) String() string { func (*VolumeCapability_AccessMode) ProtoMessage() {} func (x *VolumeCapability_AccessMode) ProtoReflect() protoreflect.Message { - mi := &file_csi_proto_msgTypes[89] - if protoimpl.UnsafeEnabled && x != nil { + mi := &file_csi_proto_msgTypes[97] + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -6652,31 +7068,28 @@ func (x *VolumeCapability_AccessMode) GetMode() VolumeCapability_AccessMode_Mode } type ValidateVolumeCapabilitiesResponse_Confirmed struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - + state protoimpl.MessageState `protogen:"open.v1"` // Volume context validated by the plugin. // This field is OPTIONAL. - VolumeContext map[string]string `protobuf:"bytes,1,rep,name=volume_context,json=volumeContext,proto3" json:"volume_context,omitempty" protobuf_key:"bytes,1,opt,name=key,proto3" protobuf_val:"bytes,2,opt,name=value,proto3"` + VolumeContext map[string]string `protobuf:"bytes,1,rep,name=volume_context,json=volumeContext,proto3" json:"volume_context,omitempty" protobuf_key:"bytes,1,opt,name=key" protobuf_val:"bytes,2,opt,name=value"` // Volume capabilities supported by the plugin. // This field is REQUIRED. VolumeCapabilities []*VolumeCapability `protobuf:"bytes,2,rep,name=volume_capabilities,json=volumeCapabilities,proto3" json:"volume_capabilities,omitempty"` // The volume creation parameters validated by the plugin. // This field is OPTIONAL. - Parameters map[string]string `protobuf:"bytes,3,rep,name=parameters,proto3" json:"parameters,omitempty" protobuf_key:"bytes,1,opt,name=key,proto3" protobuf_val:"bytes,2,opt,name=value,proto3"` + Parameters map[string]string `protobuf:"bytes,3,rep,name=parameters,proto3" json:"parameters,omitempty" protobuf_key:"bytes,1,opt,name=key" protobuf_val:"bytes,2,opt,name=value"` // The volume creation mutable_parameters validated by the plugin. // This field is OPTIONAL. - MutableParameters map[string]string `protobuf:"bytes,4,rep,name=mutable_parameters,json=mutableParameters,proto3" json:"mutable_parameters,omitempty" protobuf_key:"bytes,1,opt,name=key,proto3" protobuf_val:"bytes,2,opt,name=value,proto3"` + MutableParameters map[string]string `protobuf:"bytes,4,rep,name=mutable_parameters,json=mutableParameters,proto3" json:"mutable_parameters,omitempty" protobuf_key:"bytes,1,opt,name=key" protobuf_val:"bytes,2,opt,name=value"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } func (x *ValidateVolumeCapabilitiesResponse_Confirmed) Reset() { *x = ValidateVolumeCapabilitiesResponse_Confirmed{} - if protoimpl.UnsafeEnabled { - mi := &file_csi_proto_msgTypes[101] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_csi_proto_msgTypes[109] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *ValidateVolumeCapabilitiesResponse_Confirmed) String() string { @@ -6686,8 +7099,8 @@ func (x *ValidateVolumeCapabilitiesResponse_Confirmed) String() string { func (*ValidateVolumeCapabilitiesResponse_Confirmed) ProtoMessage() {} func (x *ValidateVolumeCapabilitiesResponse_Confirmed) ProtoReflect() protoreflect.Message { - mi := &file_csi_proto_msgTypes[101] - if protoimpl.UnsafeEnabled && x != nil { + mi := &file_csi_proto_msgTypes[109] + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -6731,10 +7144,7 @@ func (x *ValidateVolumeCapabilitiesResponse_Confirmed) GetMutableParameters() ma } type ListVolumesResponse_VolumeStatus struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - + state protoimpl.MessageState `protogen:"open.v1"` // A list of all `node_id` of nodes that the volume in this entry // is controller published on. // This field is OPTIONAL. If it is not specified and the SP has @@ -6746,20 +7156,15 @@ type ListVolumesResponse_VolumeStatus struct { // published_node_ids MAY include nodes not published to or // reported by the SP. The CO MUST be resilient to that. PublishedNodeIds []string `protobuf:"bytes,1,rep,name=published_node_ids,json=publishedNodeIds,proto3" json:"published_node_ids,omitempty"` - // Information about the current condition of the volume. - // This field is OPTIONAL. - // This field MUST be specified if the - // VOLUME_CONDITION controller capability is supported. - VolumeCondition *VolumeCondition `protobuf:"bytes,2,opt,name=volume_condition,json=volumeCondition,proto3" json:"volume_condition,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } func (x *ListVolumesResponse_VolumeStatus) Reset() { *x = ListVolumesResponse_VolumeStatus{} - if protoimpl.UnsafeEnabled { - mi := &file_csi_proto_msgTypes[105] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_csi_proto_msgTypes[113] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *ListVolumesResponse_VolumeStatus) String() string { @@ -6769,8 +7174,8 @@ func (x *ListVolumesResponse_VolumeStatus) String() string { func (*ListVolumesResponse_VolumeStatus) ProtoMessage() {} func (x *ListVolumesResponse_VolumeStatus) ProtoReflect() protoreflect.Message { - mi := &file_csi_proto_msgTypes[105] - if protoimpl.UnsafeEnabled && x != nil { + mi := &file_csi_proto_msgTypes[113] + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -6792,33 +7197,23 @@ func (x *ListVolumesResponse_VolumeStatus) GetPublishedNodeIds() []string { return nil } -func (x *ListVolumesResponse_VolumeStatus) GetVolumeCondition() *VolumeCondition { - if x != nil { - return x.VolumeCondition - } - return nil -} - type ListVolumesResponse_Entry struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - + state protoimpl.MessageState `protogen:"open.v1"` // This field is REQUIRED Volume *Volume `protobuf:"bytes,1,opt,name=volume,proto3" json:"volume,omitempty"` // This field is OPTIONAL. This field MUST be specified if the // LIST_VOLUMES_PUBLISHED_NODES controller capability is // supported. - Status *ListVolumesResponse_VolumeStatus `protobuf:"bytes,2,opt,name=status,proto3" json:"status,omitempty"` + Status *ListVolumesResponse_VolumeStatus `protobuf:"bytes,2,opt,name=status,proto3" json:"status,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } func (x *ListVolumesResponse_Entry) Reset() { *x = ListVolumesResponse_Entry{} - if protoimpl.UnsafeEnabled { - mi := &file_csi_proto_msgTypes[106] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_csi_proto_msgTypes[114] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *ListVolumesResponse_Entry) String() string { @@ -6828,8 +7223,8 @@ func (x *ListVolumesResponse_Entry) String() string { func (*ListVolumesResponse_Entry) ProtoMessage() {} func (x *ListVolumesResponse_Entry) ProtoReflect() protoreflect.Message { - mi := &file_csi_proto_msgTypes[106] - if protoimpl.UnsafeEnabled && x != nil { + mi := &file_csi_proto_msgTypes[114] + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -6858,11 +7253,79 @@ func (x *ListVolumesResponse_Entry) GetStatus() *ListVolumesResponse_VolumeStatu return nil } -type ControllerGetVolumeResponse_VolumeStatus struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache +type VolumeHealth_VolumeHealthEntry struct { + state protoimpl.MessageState `protogen:"open.v1"` + // One or more health status values associated with the volume. + // Adverse health conditions should only be removed from reporting + // when the corresponding health problem is no longer happening. + // This field is REQUIRED. + Status VolumeHealthErrorType `protobuf:"varint,1,opt,name=status,proto3,enum=csi.v1.VolumeHealthErrorType" json:"status,omitempty"` + // A brief CamelCase string that describes the condition and is + // suitable for machine parsing and concise CLI display. + // The Plugin MUST NOT return multiple VolumeHealthEntry messages + // for the same volume with the same (status, reason) combination. + // This field is REQUIRED. + Reason string `protobuf:"bytes,2,opt,name=reason,proto3" json:"reason,omitempty"` + // A user friendly description of the volume health condition. + // This field is OPTIONAL. + Message string `protobuf:"bytes,3,opt,name=message,proto3" json:"message,omitempty"` unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache +} + +func (x *VolumeHealth_VolumeHealthEntry) Reset() { + *x = VolumeHealth_VolumeHealthEntry{} + mi := &file_csi_proto_msgTypes[116] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *VolumeHealth_VolumeHealthEntry) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*VolumeHealth_VolumeHealthEntry) ProtoMessage() {} + +func (x *VolumeHealth_VolumeHealthEntry) ProtoReflect() protoreflect.Message { + mi := &file_csi_proto_msgTypes[116] + if x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use VolumeHealth_VolumeHealthEntry.ProtoReflect.Descriptor instead. +func (*VolumeHealth_VolumeHealthEntry) Descriptor() ([]byte, []int) { + return file_csi_proto_rawDescGZIP(), []int{27, 0} +} + +func (x *VolumeHealth_VolumeHealthEntry) GetStatus() VolumeHealthErrorType { + if x != nil { + return x.Status + } + return VolumeHealthErrorType_UNKNOWN_VOLUME_HEALTH_TYPE +} +func (x *VolumeHealth_VolumeHealthEntry) GetReason() string { + if x != nil { + return x.Reason + } + return "" +} + +func (x *VolumeHealth_VolumeHealthEntry) GetMessage() string { + if x != nil { + return x.Message + } + return "" +} + +type ControllerGetVolumeResponse_VolumeStatus struct { + state protoimpl.MessageState `protogen:"open.v1"` // A list of all the `node_id` of nodes that this volume is // controller published on. // This field is OPTIONAL. @@ -6871,20 +7334,15 @@ type ControllerGetVolumeResponse_VolumeStatus struct { // published_node_ids MAY include nodes not published to or // reported by the SP. The CO MUST be resilient to that. PublishedNodeIds []string `protobuf:"bytes,1,rep,name=published_node_ids,json=publishedNodeIds,proto3" json:"published_node_ids,omitempty"` - // Information about the current condition of the volume. - // This field is OPTIONAL. - // This field MUST be specified if the - // VOLUME_CONDITION controller capability is supported. - VolumeCondition *VolumeCondition `protobuf:"bytes,2,opt,name=volume_condition,json=volumeCondition,proto3" json:"volume_condition,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } func (x *ControllerGetVolumeResponse_VolumeStatus) Reset() { *x = ControllerGetVolumeResponse_VolumeStatus{} - if protoimpl.UnsafeEnabled { - mi := &file_csi_proto_msgTypes[107] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_csi_proto_msgTypes[118] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *ControllerGetVolumeResponse_VolumeStatus) String() string { @@ -6894,8 +7352,8 @@ func (x *ControllerGetVolumeResponse_VolumeStatus) String() string { func (*ControllerGetVolumeResponse_VolumeStatus) ProtoMessage() {} func (x *ControllerGetVolumeResponse_VolumeStatus) ProtoReflect() protoreflect.Message { - mi := &file_csi_proto_msgTypes[107] - if protoimpl.UnsafeEnabled && x != nil { + mi := &file_csi_proto_msgTypes[118] + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -6907,7 +7365,7 @@ func (x *ControllerGetVolumeResponse_VolumeStatus) ProtoReflect() protoreflect.M // Deprecated: Use ControllerGetVolumeResponse_VolumeStatus.ProtoReflect.Descriptor instead. func (*ControllerGetVolumeResponse_VolumeStatus) Descriptor() ([]byte, []int) { - return file_csi_proto_rawDescGZIP(), []int{26, 0} + return file_csi_proto_rawDescGZIP(), []int{31, 0} } func (x *ControllerGetVolumeResponse_VolumeStatus) GetPublishedNodeIds() []string { @@ -6917,28 +7375,18 @@ func (x *ControllerGetVolumeResponse_VolumeStatus) GetPublishedNodeIds() []strin return nil } -func (x *ControllerGetVolumeResponse_VolumeStatus) GetVolumeCondition() *VolumeCondition { - if x != nil { - return x.VolumeCondition - } - return nil -} - type ControllerServiceCapability_RPC struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache + state protoimpl.MessageState `protogen:"open.v1"` + Type ControllerServiceCapability_RPC_Type `protobuf:"varint,1,opt,name=type,proto3,enum=csi.v1.ControllerServiceCapability_RPC_Type" json:"type,omitempty"` unknownFields protoimpl.UnknownFields - - Type ControllerServiceCapability_RPC_Type `protobuf:"varint,1,opt,name=type,proto3,enum=csi.v1.ControllerServiceCapability_RPC_Type" json:"type,omitempty"` + sizeCache protoimpl.SizeCache } func (x *ControllerServiceCapability_RPC) Reset() { *x = ControllerServiceCapability_RPC{} - if protoimpl.UnsafeEnabled { - mi := &file_csi_proto_msgTypes[111] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_csi_proto_msgTypes[122] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *ControllerServiceCapability_RPC) String() string { @@ -6948,8 +7396,8 @@ func (x *ControllerServiceCapability_RPC) String() string { func (*ControllerServiceCapability_RPC) ProtoMessage() {} func (x *ControllerServiceCapability_RPC) ProtoReflect() protoreflect.Message { - mi := &file_csi_proto_msgTypes[111] - if protoimpl.UnsafeEnabled && x != nil { + mi := &file_csi_proto_msgTypes[122] + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -6961,7 +7409,7 @@ func (x *ControllerServiceCapability_RPC) ProtoReflect() protoreflect.Message { // Deprecated: Use ControllerServiceCapability_RPC.ProtoReflect.Descriptor instead. func (*ControllerServiceCapability_RPC) Descriptor() ([]byte, []int) { - return file_csi_proto_rawDescGZIP(), []int{33, 0} + return file_csi_proto_rawDescGZIP(), []int{38, 0} } func (x *ControllerServiceCapability_RPC) GetType() ControllerServiceCapability_RPC_Type { @@ -6972,20 +7420,17 @@ func (x *ControllerServiceCapability_RPC) GetType() ControllerServiceCapability_ } type ListSnapshotsResponse_Entry struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache + state protoimpl.MessageState `protogen:"open.v1"` + Snapshot *Snapshot `protobuf:"bytes,1,opt,name=snapshot,proto3" json:"snapshot,omitempty"` unknownFields protoimpl.UnknownFields - - Snapshot *Snapshot `protobuf:"bytes,1,opt,name=snapshot,proto3" json:"snapshot,omitempty"` + sizeCache protoimpl.SizeCache } func (x *ListSnapshotsResponse_Entry) Reset() { *x = ListSnapshotsResponse_Entry{} - if protoimpl.UnsafeEnabled { - mi := &file_csi_proto_msgTypes[116] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_csi_proto_msgTypes[127] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *ListSnapshotsResponse_Entry) String() string { @@ -6995,8 +7440,8 @@ func (x *ListSnapshotsResponse_Entry) String() string { func (*ListSnapshotsResponse_Entry) ProtoMessage() {} func (x *ListSnapshotsResponse_Entry) ProtoReflect() protoreflect.Message { - mi := &file_csi_proto_msgTypes[116] - if protoimpl.UnsafeEnabled && x != nil { + mi := &file_csi_proto_msgTypes[127] + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -7008,7 +7453,7 @@ func (x *ListSnapshotsResponse_Entry) ProtoReflect() protoreflect.Message { // Deprecated: Use ListSnapshotsResponse_Entry.ProtoReflect.Descriptor instead. func (*ListSnapshotsResponse_Entry) Descriptor() ([]byte, []int) { - return file_csi_proto_rawDescGZIP(), []int{40, 0} + return file_csi_proto_rawDescGZIP(), []int{45, 0} } func (x *ListSnapshotsResponse_Entry) GetSnapshot() *Snapshot { @@ -7018,21 +7463,97 @@ func (x *ListSnapshotsResponse_Entry) GetSnapshot() *Snapshot { return nil } +type NodeGetStorageHealthResponse_StorageBackendHealth struct { + state protoimpl.MessageState `protogen:"open.v1"` + // Health status for this storage backend. + // This field is REQUIRED. + Status StorageHealthErrorType `protobuf:"varint,1,opt,name=status,proto3,enum=csi.v1.StorageHealthErrorType" json:"status,omitempty"` + // A brief CamelCase string that describes the condition and is + // suitable for machine parsing and concise CLI display. + // The Plugin MUST NOT return multiple StorageBackendHealth messages + // with the same (status, reason, volume_capability) combination. + // This field is REQUIRED. + Reason string `protobuf:"bytes,2,opt,name=reason,proto3" json:"reason,omitempty"` + // A user friendly description of the storage health condition. + // This field is OPTIONAL. + Message string `protobuf:"bytes,3,opt,name=message,proto3" json:"message,omitempty"` + // Volume capability affected by this storage health condition. + // This field is OPTIONAL. + VolumeCapability *VolumeCapability `protobuf:"bytes,4,opt,name=volume_capability,json=volumeCapability,proto3" json:"volume_capability,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache +} + +func (x *NodeGetStorageHealthResponse_StorageBackendHealth) Reset() { + *x = NodeGetStorageHealthResponse_StorageBackendHealth{} + mi := &file_csi_proto_msgTypes[137] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *NodeGetStorageHealthResponse_StorageBackendHealth) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*NodeGetStorageHealthResponse_StorageBackendHealth) ProtoMessage() {} + +func (x *NodeGetStorageHealthResponse_StorageBackendHealth) ProtoReflect() protoreflect.Message { + mi := &file_csi_proto_msgTypes[137] + if x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use NodeGetStorageHealthResponse_StorageBackendHealth.ProtoReflect.Descriptor instead. +func (*NodeGetStorageHealthResponse_StorageBackendHealth) Descriptor() ([]byte, []int) { + return file_csi_proto_rawDescGZIP(), []int{64, 0} +} + +func (x *NodeGetStorageHealthResponse_StorageBackendHealth) GetStatus() StorageHealthErrorType { + if x != nil { + return x.Status + } + return StorageHealthErrorType_UNKNOWN_STORAGE_HEALTH_ERROR_TYPE +} + +func (x *NodeGetStorageHealthResponse_StorageBackendHealth) GetReason() string { + if x != nil { + return x.Reason + } + return "" +} + +func (x *NodeGetStorageHealthResponse_StorageBackendHealth) GetMessage() string { + if x != nil { + return x.Message + } + return "" +} + +func (x *NodeGetStorageHealthResponse_StorageBackendHealth) GetVolumeCapability() *VolumeCapability { + if x != nil { + return x.VolumeCapability + } + return nil +} + type NodeServiceCapability_RPC struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache + state protoimpl.MessageState `protogen:"open.v1"` + Type NodeServiceCapability_RPC_Type `protobuf:"varint,1,opt,name=type,proto3,enum=csi.v1.NodeServiceCapability_RPC_Type" json:"type,omitempty"` unknownFields protoimpl.UnknownFields - - Type NodeServiceCapability_RPC_Type `protobuf:"varint,1,opt,name=type,proto3,enum=csi.v1.NodeServiceCapability_RPC_Type" json:"type,omitempty"` + sizeCache protoimpl.SizeCache } func (x *NodeServiceCapability_RPC) Reset() { *x = NodeServiceCapability_RPC{} - if protoimpl.UnsafeEnabled { - mi := &file_csi_proto_msgTypes[125] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_csi_proto_msgTypes[138] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *NodeServiceCapability_RPC) String() string { @@ -7042,8 +7563,8 @@ func (x *NodeServiceCapability_RPC) String() string { func (*NodeServiceCapability_RPC) ProtoMessage() {} func (x *NodeServiceCapability_RPC) ProtoReflect() protoreflect.Message { - mi := &file_csi_proto_msgTypes[125] - if protoimpl.UnsafeEnabled && x != nil { + mi := &file_csi_proto_msgTypes[138] + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -7055,7 +7576,7 @@ func (x *NodeServiceCapability_RPC) ProtoReflect() protoreflect.Message { // Deprecated: Use NodeServiceCapability_RPC.ProtoReflect.Descriptor instead. func (*NodeServiceCapability_RPC) Descriptor() ([]byte, []int) { - return file_csi_proto_rawDescGZIP(), []int{59, 0} + return file_csi_proto_rawDescGZIP(), []int{67, 0} } func (x *NodeServiceCapability_RPC) GetType() NodeServiceCapability_RPC_Type { @@ -7066,20 +7587,17 @@ func (x *NodeServiceCapability_RPC) GetType() NodeServiceCapability_RPC_Type { } type GroupControllerServiceCapability_RPC struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache + state protoimpl.MessageState `protogen:"open.v1"` + Type GroupControllerServiceCapability_RPC_Type `protobuf:"varint,1,opt,name=type,proto3,enum=csi.v1.GroupControllerServiceCapability_RPC_Type" json:"type,omitempty"` unknownFields protoimpl.UnknownFields - - Type GroupControllerServiceCapability_RPC_Type `protobuf:"varint,1,opt,name=type,proto3,enum=csi.v1.GroupControllerServiceCapability_RPC_Type" json:"type,omitempty"` + sizeCache protoimpl.SizeCache } func (x *GroupControllerServiceCapability_RPC) Reset() { *x = GroupControllerServiceCapability_RPC{} - if protoimpl.UnsafeEnabled { - mi := &file_csi_proto_msgTypes[127] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_csi_proto_msgTypes[140] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *GroupControllerServiceCapability_RPC) String() string { @@ -7089,8 +7607,8 @@ func (x *GroupControllerServiceCapability_RPC) String() string { func (*GroupControllerServiceCapability_RPC) ProtoMessage() {} func (x *GroupControllerServiceCapability_RPC) ProtoReflect() protoreflect.Message { - mi := &file_csi_proto_msgTypes[127] - if protoimpl.UnsafeEnabled && x != nil { + mi := &file_csi_proto_msgTypes[140] + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -7102,7 +7620,7 @@ func (x *GroupControllerServiceCapability_RPC) ProtoReflect() protoreflect.Messa // Deprecated: Use GroupControllerServiceCapability_RPC.ProtoReflect.Descriptor instead. func (*GroupControllerServiceCapability_RPC) Descriptor() ([]byte, []int) { - return file_csi_proto_rawDescGZIP(), []int{66, 0} + return file_csi_proto_rawDescGZIP(), []int{74, 0} } func (x *GroupControllerServiceCapability_RPC) GetType() GroupControllerServiceCapability_RPC_Type { @@ -7238,1668 +7756,1012 @@ var ( var File_csi_proto protoreflect.FileDescriptor -var file_csi_proto_rawDesc = []byte{ - 0x0a, 0x09, 0x63, 0x73, 0x69, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x12, 0x06, 0x63, 0x73, 0x69, - 0x2e, 0x76, 0x31, 0x1a, 0x20, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2f, 0x70, 0x72, 0x6f, 0x74, - 0x6f, 0x62, 0x75, 0x66, 0x2f, 0x64, 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x6f, 0x72, 0x2e, - 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x1f, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2f, 0x70, 0x72, - 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2f, 0x74, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, - 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x1e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2f, 0x70, - 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2f, 0x77, 0x72, 0x61, 0x70, 0x70, 0x65, 0x72, 0x73, - 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x22, 0x16, 0x0a, 0x14, 0x47, 0x65, 0x74, 0x50, 0x6c, 0x75, - 0x67, 0x69, 0x6e, 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x22, 0xd8, - 0x01, 0x0a, 0x15, 0x47, 0x65, 0x74, 0x50, 0x6c, 0x75, 0x67, 0x69, 0x6e, 0x49, 0x6e, 0x66, 0x6f, - 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, - 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x25, 0x0a, 0x0e, - 0x76, 0x65, 0x6e, 0x64, 0x6f, 0x72, 0x5f, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x18, 0x02, - 0x20, 0x01, 0x28, 0x09, 0x52, 0x0d, 0x76, 0x65, 0x6e, 0x64, 0x6f, 0x72, 0x56, 0x65, 0x72, 0x73, - 0x69, 0x6f, 0x6e, 0x12, 0x47, 0x0a, 0x08, 0x6d, 0x61, 0x6e, 0x69, 0x66, 0x65, 0x73, 0x74, 0x18, - 0x03, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x2b, 0x2e, 0x63, 0x73, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x47, - 0x65, 0x74, 0x50, 0x6c, 0x75, 0x67, 0x69, 0x6e, 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x65, 0x73, 0x70, - 0x6f, 0x6e, 0x73, 0x65, 0x2e, 0x4d, 0x61, 0x6e, 0x69, 0x66, 0x65, 0x73, 0x74, 0x45, 0x6e, 0x74, - 0x72, 0x79, 0x52, 0x08, 0x6d, 0x61, 0x6e, 0x69, 0x66, 0x65, 0x73, 0x74, 0x1a, 0x3b, 0x0a, 0x0d, - 0x4d, 0x61, 0x6e, 0x69, 0x66, 0x65, 0x73, 0x74, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, 0x10, 0x0a, - 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, - 0x14, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, - 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, 0x22, 0x1e, 0x0a, 0x1c, 0x47, 0x65, 0x74, - 0x50, 0x6c, 0x75, 0x67, 0x69, 0x6e, 0x43, 0x61, 0x70, 0x61, 0x62, 0x69, 0x6c, 0x69, 0x74, 0x69, - 0x65, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x22, 0x5d, 0x0a, 0x1d, 0x47, 0x65, 0x74, - 0x50, 0x6c, 0x75, 0x67, 0x69, 0x6e, 0x43, 0x61, 0x70, 0x61, 0x62, 0x69, 0x6c, 0x69, 0x74, 0x69, - 0x65, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x3c, 0x0a, 0x0c, 0x63, 0x61, - 0x70, 0x61, 0x62, 0x69, 0x6c, 0x69, 0x74, 0x69, 0x65, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, - 0x32, 0x18, 0x2e, 0x63, 0x73, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x50, 0x6c, 0x75, 0x67, 0x69, 0x6e, - 0x43, 0x61, 0x70, 0x61, 0x62, 0x69, 0x6c, 0x69, 0x74, 0x79, 0x52, 0x0c, 0x63, 0x61, 0x70, 0x61, - 0x62, 0x69, 0x6c, 0x69, 0x74, 0x69, 0x65, 0x73, 0x22, 0x91, 0x04, 0x0a, 0x10, 0x50, 0x6c, 0x75, - 0x67, 0x69, 0x6e, 0x43, 0x61, 0x70, 0x61, 0x62, 0x69, 0x6c, 0x69, 0x74, 0x79, 0x12, 0x3c, 0x0a, - 0x07, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x20, - 0x2e, 0x63, 0x73, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x50, 0x6c, 0x75, 0x67, 0x69, 0x6e, 0x43, 0x61, - 0x70, 0x61, 0x62, 0x69, 0x6c, 0x69, 0x74, 0x79, 0x2e, 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, - 0x48, 0x00, 0x52, 0x07, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x12, 0x55, 0x0a, 0x10, 0x76, - 0x6f, 0x6c, 0x75, 0x6d, 0x65, 0x5f, 0x65, 0x78, 0x70, 0x61, 0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x18, - 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x28, 0x2e, 0x63, 0x73, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x50, - 0x6c, 0x75, 0x67, 0x69, 0x6e, 0x43, 0x61, 0x70, 0x61, 0x62, 0x69, 0x6c, 0x69, 0x74, 0x79, 0x2e, - 0x56, 0x6f, 0x6c, 0x75, 0x6d, 0x65, 0x45, 0x78, 0x70, 0x61, 0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x48, - 0x00, 0x52, 0x0f, 0x76, 0x6f, 0x6c, 0x75, 0x6d, 0x65, 0x45, 0x78, 0x70, 0x61, 0x6e, 0x73, 0x69, - 0x6f, 0x6e, 0x1a, 0xda, 0x01, 0x0a, 0x07, 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x12, 0x39, - 0x0a, 0x04, 0x74, 0x79, 0x70, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x25, 0x2e, 0x63, - 0x73, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x50, 0x6c, 0x75, 0x67, 0x69, 0x6e, 0x43, 0x61, 0x70, 0x61, - 0x62, 0x69, 0x6c, 0x69, 0x74, 0x79, 0x2e, 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x54, - 0x79, 0x70, 0x65, 0x52, 0x04, 0x74, 0x79, 0x70, 0x65, 0x22, 0x93, 0x01, 0x0a, 0x04, 0x54, 0x79, - 0x70, 0x65, 0x12, 0x0b, 0x0a, 0x07, 0x55, 0x4e, 0x4b, 0x4e, 0x4f, 0x57, 0x4e, 0x10, 0x00, 0x12, - 0x16, 0x0a, 0x12, 0x43, 0x4f, 0x4e, 0x54, 0x52, 0x4f, 0x4c, 0x4c, 0x45, 0x52, 0x5f, 0x53, 0x45, - 0x52, 0x56, 0x49, 0x43, 0x45, 0x10, 0x01, 0x12, 0x24, 0x0a, 0x20, 0x56, 0x4f, 0x4c, 0x55, 0x4d, - 0x45, 0x5f, 0x41, 0x43, 0x43, 0x45, 0x53, 0x53, 0x49, 0x42, 0x49, 0x4c, 0x49, 0x54, 0x59, 0x5f, - 0x43, 0x4f, 0x4e, 0x53, 0x54, 0x52, 0x41, 0x49, 0x4e, 0x54, 0x53, 0x10, 0x02, 0x12, 0x1c, 0x0a, - 0x18, 0x47, 0x52, 0x4f, 0x55, 0x50, 0x5f, 0x43, 0x4f, 0x4e, 0x54, 0x52, 0x4f, 0x4c, 0x4c, 0x45, - 0x52, 0x5f, 0x53, 0x45, 0x52, 0x56, 0x49, 0x43, 0x45, 0x10, 0x03, 0x12, 0x22, 0x0a, 0x19, 0x53, - 0x4e, 0x41, 0x50, 0x53, 0x48, 0x4f, 0x54, 0x5f, 0x4d, 0x45, 0x54, 0x41, 0x44, 0x41, 0x54, 0x41, - 0x5f, 0x53, 0x45, 0x52, 0x56, 0x49, 0x43, 0x45, 0x10, 0x04, 0x1a, 0x03, 0xa0, 0x42, 0x01, 0x1a, - 0x82, 0x01, 0x0a, 0x0f, 0x56, 0x6f, 0x6c, 0x75, 0x6d, 0x65, 0x45, 0x78, 0x70, 0x61, 0x6e, 0x73, - 0x69, 0x6f, 0x6e, 0x12, 0x41, 0x0a, 0x04, 0x74, 0x79, 0x70, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, - 0x0e, 0x32, 0x2d, 0x2e, 0x63, 0x73, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x50, 0x6c, 0x75, 0x67, 0x69, - 0x6e, 0x43, 0x61, 0x70, 0x61, 0x62, 0x69, 0x6c, 0x69, 0x74, 0x79, 0x2e, 0x56, 0x6f, 0x6c, 0x75, - 0x6d, 0x65, 0x45, 0x78, 0x70, 0x61, 0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x2e, 0x54, 0x79, 0x70, 0x65, - 0x52, 0x04, 0x74, 0x79, 0x70, 0x65, 0x22, 0x2c, 0x0a, 0x04, 0x54, 0x79, 0x70, 0x65, 0x12, 0x0b, - 0x0a, 0x07, 0x55, 0x4e, 0x4b, 0x4e, 0x4f, 0x57, 0x4e, 0x10, 0x00, 0x12, 0x0a, 0x0a, 0x06, 0x4f, - 0x4e, 0x4c, 0x49, 0x4e, 0x45, 0x10, 0x01, 0x12, 0x0b, 0x0a, 0x07, 0x4f, 0x46, 0x46, 0x4c, 0x49, - 0x4e, 0x45, 0x10, 0x02, 0x42, 0x06, 0x0a, 0x04, 0x74, 0x79, 0x70, 0x65, 0x22, 0x0e, 0x0a, 0x0c, - 0x50, 0x72, 0x6f, 0x62, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x22, 0x41, 0x0a, 0x0d, - 0x50, 0x72, 0x6f, 0x62, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x30, 0x0a, - 0x05, 0x72, 0x65, 0x61, 0x64, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, - 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x42, - 0x6f, 0x6f, 0x6c, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x52, 0x05, 0x72, 0x65, 0x61, 0x64, 0x79, 0x22, - 0x99, 0x06, 0x0a, 0x13, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x56, 0x6f, 0x6c, 0x75, 0x6d, 0x65, - 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, - 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x3c, 0x0a, 0x0e, 0x63, - 0x61, 0x70, 0x61, 0x63, 0x69, 0x74, 0x79, 0x5f, 0x72, 0x61, 0x6e, 0x67, 0x65, 0x18, 0x02, 0x20, - 0x01, 0x28, 0x0b, 0x32, 0x15, 0x2e, 0x63, 0x73, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x43, 0x61, 0x70, - 0x61, 0x63, 0x69, 0x74, 0x79, 0x52, 0x61, 0x6e, 0x67, 0x65, 0x52, 0x0d, 0x63, 0x61, 0x70, 0x61, - 0x63, 0x69, 0x74, 0x79, 0x52, 0x61, 0x6e, 0x67, 0x65, 0x12, 0x49, 0x0a, 0x13, 0x76, 0x6f, 0x6c, - 0x75, 0x6d, 0x65, 0x5f, 0x63, 0x61, 0x70, 0x61, 0x62, 0x69, 0x6c, 0x69, 0x74, 0x69, 0x65, 0x73, - 0x18, 0x03, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x18, 0x2e, 0x63, 0x73, 0x69, 0x2e, 0x76, 0x31, 0x2e, - 0x56, 0x6f, 0x6c, 0x75, 0x6d, 0x65, 0x43, 0x61, 0x70, 0x61, 0x62, 0x69, 0x6c, 0x69, 0x74, 0x79, - 0x52, 0x12, 0x76, 0x6f, 0x6c, 0x75, 0x6d, 0x65, 0x43, 0x61, 0x70, 0x61, 0x62, 0x69, 0x6c, 0x69, - 0x74, 0x69, 0x65, 0x73, 0x12, 0x4b, 0x0a, 0x0a, 0x70, 0x61, 0x72, 0x61, 0x6d, 0x65, 0x74, 0x65, - 0x72, 0x73, 0x18, 0x04, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x2b, 0x2e, 0x63, 0x73, 0x69, 0x2e, 0x76, - 0x31, 0x2e, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x56, 0x6f, 0x6c, 0x75, 0x6d, 0x65, 0x52, 0x65, - 0x71, 0x75, 0x65, 0x73, 0x74, 0x2e, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x65, 0x74, 0x65, 0x72, 0x73, - 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x0a, 0x70, 0x61, 0x72, 0x61, 0x6d, 0x65, 0x74, 0x65, 0x72, - 0x73, 0x12, 0x47, 0x0a, 0x07, 0x73, 0x65, 0x63, 0x72, 0x65, 0x74, 0x73, 0x18, 0x05, 0x20, 0x03, - 0x28, 0x0b, 0x32, 0x28, 0x2e, 0x63, 0x73, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x43, 0x72, 0x65, 0x61, - 0x74, 0x65, 0x56, 0x6f, 0x6c, 0x75, 0x6d, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x2e, - 0x53, 0x65, 0x63, 0x72, 0x65, 0x74, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x42, 0x03, 0x98, 0x42, - 0x01, 0x52, 0x07, 0x73, 0x65, 0x63, 0x72, 0x65, 0x74, 0x73, 0x12, 0x4f, 0x0a, 0x15, 0x76, 0x6f, - 0x6c, 0x75, 0x6d, 0x65, 0x5f, 0x63, 0x6f, 0x6e, 0x74, 0x65, 0x6e, 0x74, 0x5f, 0x73, 0x6f, 0x75, - 0x72, 0x63, 0x65, 0x18, 0x06, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1b, 0x2e, 0x63, 0x73, 0x69, 0x2e, - 0x76, 0x31, 0x2e, 0x56, 0x6f, 0x6c, 0x75, 0x6d, 0x65, 0x43, 0x6f, 0x6e, 0x74, 0x65, 0x6e, 0x74, - 0x53, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x52, 0x13, 0x76, 0x6f, 0x6c, 0x75, 0x6d, 0x65, 0x43, 0x6f, - 0x6e, 0x74, 0x65, 0x6e, 0x74, 0x53, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x12, 0x5a, 0x0a, 0x1a, 0x61, - 0x63, 0x63, 0x65, 0x73, 0x73, 0x69, 0x62, 0x69, 0x6c, 0x69, 0x74, 0x79, 0x5f, 0x72, 0x65, 0x71, - 0x75, 0x69, 0x72, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x73, 0x18, 0x07, 0x20, 0x01, 0x28, 0x0b, 0x32, - 0x1b, 0x2e, 0x63, 0x73, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x54, 0x6f, 0x70, 0x6f, 0x6c, 0x6f, 0x67, - 0x79, 0x52, 0x65, 0x71, 0x75, 0x69, 0x72, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x52, 0x19, 0x61, 0x63, - 0x63, 0x65, 0x73, 0x73, 0x69, 0x62, 0x69, 0x6c, 0x69, 0x74, 0x79, 0x52, 0x65, 0x71, 0x75, 0x69, - 0x72, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x73, 0x12, 0x61, 0x0a, 0x12, 0x6d, 0x75, 0x74, 0x61, 0x62, - 0x6c, 0x65, 0x5f, 0x70, 0x61, 0x72, 0x61, 0x6d, 0x65, 0x74, 0x65, 0x72, 0x73, 0x18, 0x08, 0x20, - 0x03, 0x28, 0x0b, 0x32, 0x32, 0x2e, 0x63, 0x73, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x43, 0x72, 0x65, - 0x61, 0x74, 0x65, 0x56, 0x6f, 0x6c, 0x75, 0x6d, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, - 0x2e, 0x4d, 0x75, 0x74, 0x61, 0x62, 0x6c, 0x65, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x65, 0x74, 0x65, - 0x72, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x11, 0x6d, 0x75, 0x74, 0x61, 0x62, 0x6c, 0x65, - 0x50, 0x61, 0x72, 0x61, 0x6d, 0x65, 0x74, 0x65, 0x72, 0x73, 0x1a, 0x3d, 0x0a, 0x0f, 0x50, 0x61, - 0x72, 0x61, 0x6d, 0x65, 0x74, 0x65, 0x72, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, 0x10, 0x0a, - 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, - 0x14, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, - 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, 0x1a, 0x3a, 0x0a, 0x0c, 0x53, 0x65, 0x63, - 0x72, 0x65, 0x74, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, - 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x14, 0x0a, 0x05, 0x76, - 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, - 0x65, 0x3a, 0x02, 0x38, 0x01, 0x1a, 0x44, 0x0a, 0x16, 0x4d, 0x75, 0x74, 0x61, 0x62, 0x6c, 0x65, - 0x50, 0x61, 0x72, 0x61, 0x6d, 0x65, 0x74, 0x65, 0x72, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, - 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x6b, 0x65, - 0x79, 0x12, 0x14, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, - 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, 0x22, 0x8b, 0x02, 0x0a, 0x13, - 0x56, 0x6f, 0x6c, 0x75, 0x6d, 0x65, 0x43, 0x6f, 0x6e, 0x74, 0x65, 0x6e, 0x74, 0x53, 0x6f, 0x75, - 0x72, 0x63, 0x65, 0x12, 0x48, 0x0a, 0x08, 0x73, 0x6e, 0x61, 0x70, 0x73, 0x68, 0x6f, 0x74, 0x18, - 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2a, 0x2e, 0x63, 0x73, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x56, - 0x6f, 0x6c, 0x75, 0x6d, 0x65, 0x43, 0x6f, 0x6e, 0x74, 0x65, 0x6e, 0x74, 0x53, 0x6f, 0x75, 0x72, - 0x63, 0x65, 0x2e, 0x53, 0x6e, 0x61, 0x70, 0x73, 0x68, 0x6f, 0x74, 0x53, 0x6f, 0x75, 0x72, 0x63, - 0x65, 0x48, 0x00, 0x52, 0x08, 0x73, 0x6e, 0x61, 0x70, 0x73, 0x68, 0x6f, 0x74, 0x12, 0x42, 0x0a, - 0x06, 0x76, 0x6f, 0x6c, 0x75, 0x6d, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x28, 0x2e, - 0x63, 0x73, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x56, 0x6f, 0x6c, 0x75, 0x6d, 0x65, 0x43, 0x6f, 0x6e, - 0x74, 0x65, 0x6e, 0x74, 0x53, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x2e, 0x56, 0x6f, 0x6c, 0x75, 0x6d, - 0x65, 0x53, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x48, 0x00, 0x52, 0x06, 0x76, 0x6f, 0x6c, 0x75, 0x6d, - 0x65, 0x1a, 0x31, 0x0a, 0x0e, 0x53, 0x6e, 0x61, 0x70, 0x73, 0x68, 0x6f, 0x74, 0x53, 0x6f, 0x75, - 0x72, 0x63, 0x65, 0x12, 0x1f, 0x0a, 0x0b, 0x73, 0x6e, 0x61, 0x70, 0x73, 0x68, 0x6f, 0x74, 0x5f, - 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, 0x73, 0x6e, 0x61, 0x70, 0x73, 0x68, - 0x6f, 0x74, 0x49, 0x64, 0x1a, 0x2b, 0x0a, 0x0c, 0x56, 0x6f, 0x6c, 0x75, 0x6d, 0x65, 0x53, 0x6f, - 0x75, 0x72, 0x63, 0x65, 0x12, 0x1b, 0x0a, 0x09, 0x76, 0x6f, 0x6c, 0x75, 0x6d, 0x65, 0x5f, 0x69, - 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x76, 0x6f, 0x6c, 0x75, 0x6d, 0x65, 0x49, - 0x64, 0x42, 0x06, 0x0a, 0x04, 0x74, 0x79, 0x70, 0x65, 0x22, 0x3e, 0x0a, 0x14, 0x43, 0x72, 0x65, - 0x61, 0x74, 0x65, 0x56, 0x6f, 0x6c, 0x75, 0x6d, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, - 0x65, 0x12, 0x26, 0x0a, 0x06, 0x76, 0x6f, 0x6c, 0x75, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, - 0x0b, 0x32, 0x0e, 0x2e, 0x63, 0x73, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x56, 0x6f, 0x6c, 0x75, 0x6d, - 0x65, 0x52, 0x06, 0x76, 0x6f, 0x6c, 0x75, 0x6d, 0x65, 0x22, 0x9f, 0x05, 0x0a, 0x10, 0x56, 0x6f, - 0x6c, 0x75, 0x6d, 0x65, 0x43, 0x61, 0x70, 0x61, 0x62, 0x69, 0x6c, 0x69, 0x74, 0x79, 0x12, 0x3c, - 0x0a, 0x05, 0x62, 0x6c, 0x6f, 0x63, 0x6b, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x24, 0x2e, - 0x63, 0x73, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x56, 0x6f, 0x6c, 0x75, 0x6d, 0x65, 0x43, 0x61, 0x70, - 0x61, 0x62, 0x69, 0x6c, 0x69, 0x74, 0x79, 0x2e, 0x42, 0x6c, 0x6f, 0x63, 0x6b, 0x56, 0x6f, 0x6c, - 0x75, 0x6d, 0x65, 0x48, 0x00, 0x52, 0x05, 0x62, 0x6c, 0x6f, 0x63, 0x6b, 0x12, 0x3c, 0x0a, 0x05, - 0x6d, 0x6f, 0x75, 0x6e, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x24, 0x2e, 0x63, 0x73, - 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x56, 0x6f, 0x6c, 0x75, 0x6d, 0x65, 0x43, 0x61, 0x70, 0x61, 0x62, - 0x69, 0x6c, 0x69, 0x74, 0x79, 0x2e, 0x4d, 0x6f, 0x75, 0x6e, 0x74, 0x56, 0x6f, 0x6c, 0x75, 0x6d, - 0x65, 0x48, 0x00, 0x52, 0x05, 0x6d, 0x6f, 0x75, 0x6e, 0x74, 0x12, 0x44, 0x0a, 0x0b, 0x61, 0x63, - 0x63, 0x65, 0x73, 0x73, 0x5f, 0x6d, 0x6f, 0x64, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, - 0x23, 0x2e, 0x63, 0x73, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x56, 0x6f, 0x6c, 0x75, 0x6d, 0x65, 0x43, - 0x61, 0x70, 0x61, 0x62, 0x69, 0x6c, 0x69, 0x74, 0x79, 0x2e, 0x41, 0x63, 0x63, 0x65, 0x73, 0x73, - 0x4d, 0x6f, 0x64, 0x65, 0x52, 0x0a, 0x61, 0x63, 0x63, 0x65, 0x73, 0x73, 0x4d, 0x6f, 0x64, 0x65, - 0x1a, 0x0d, 0x0a, 0x0b, 0x42, 0x6c, 0x6f, 0x63, 0x6b, 0x56, 0x6f, 0x6c, 0x75, 0x6d, 0x65, 0x1a, - 0x75, 0x0a, 0x0b, 0x4d, 0x6f, 0x75, 0x6e, 0x74, 0x56, 0x6f, 0x6c, 0x75, 0x6d, 0x65, 0x12, 0x17, - 0x0a, 0x07, 0x66, 0x73, 0x5f, 0x74, 0x79, 0x70, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, - 0x06, 0x66, 0x73, 0x54, 0x79, 0x70, 0x65, 0x12, 0x1f, 0x0a, 0x0b, 0x6d, 0x6f, 0x75, 0x6e, 0x74, - 0x5f, 0x66, 0x6c, 0x61, 0x67, 0x73, 0x18, 0x02, 0x20, 0x03, 0x28, 0x09, 0x52, 0x0a, 0x6d, 0x6f, - 0x75, 0x6e, 0x74, 0x46, 0x6c, 0x61, 0x67, 0x73, 0x12, 0x2c, 0x0a, 0x12, 0x76, 0x6f, 0x6c, 0x75, - 0x6d, 0x65, 0x5f, 0x6d, 0x6f, 0x75, 0x6e, 0x74, 0x5f, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x18, 0x03, - 0x20, 0x01, 0x28, 0x09, 0x52, 0x10, 0x76, 0x6f, 0x6c, 0x75, 0x6d, 0x65, 0x4d, 0x6f, 0x75, 0x6e, - 0x74, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x1a, 0xb3, 0x02, 0x0a, 0x0a, 0x41, 0x63, 0x63, 0x65, 0x73, - 0x73, 0x4d, 0x6f, 0x64, 0x65, 0x12, 0x3c, 0x0a, 0x04, 0x6d, 0x6f, 0x64, 0x65, 0x18, 0x01, 0x20, - 0x01, 0x28, 0x0e, 0x32, 0x28, 0x2e, 0x63, 0x73, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x56, 0x6f, 0x6c, - 0x75, 0x6d, 0x65, 0x43, 0x61, 0x70, 0x61, 0x62, 0x69, 0x6c, 0x69, 0x74, 0x79, 0x2e, 0x41, 0x63, - 0x63, 0x65, 0x73, 0x73, 0x4d, 0x6f, 0x64, 0x65, 0x2e, 0x4d, 0x6f, 0x64, 0x65, 0x52, 0x04, 0x6d, - 0x6f, 0x64, 0x65, 0x22, 0xe6, 0x01, 0x0a, 0x04, 0x4d, 0x6f, 0x64, 0x65, 0x12, 0x0b, 0x0a, 0x07, - 0x55, 0x4e, 0x4b, 0x4e, 0x4f, 0x57, 0x4e, 0x10, 0x00, 0x12, 0x16, 0x0a, 0x12, 0x53, 0x49, 0x4e, - 0x47, 0x4c, 0x45, 0x5f, 0x4e, 0x4f, 0x44, 0x45, 0x5f, 0x57, 0x52, 0x49, 0x54, 0x45, 0x52, 0x10, - 0x01, 0x12, 0x1b, 0x0a, 0x17, 0x53, 0x49, 0x4e, 0x47, 0x4c, 0x45, 0x5f, 0x4e, 0x4f, 0x44, 0x45, - 0x5f, 0x52, 0x45, 0x41, 0x44, 0x45, 0x52, 0x5f, 0x4f, 0x4e, 0x4c, 0x59, 0x10, 0x02, 0x12, 0x1a, - 0x0a, 0x16, 0x4d, 0x55, 0x4c, 0x54, 0x49, 0x5f, 0x4e, 0x4f, 0x44, 0x45, 0x5f, 0x52, 0x45, 0x41, - 0x44, 0x45, 0x52, 0x5f, 0x4f, 0x4e, 0x4c, 0x59, 0x10, 0x03, 0x12, 0x1c, 0x0a, 0x18, 0x4d, 0x55, - 0x4c, 0x54, 0x49, 0x5f, 0x4e, 0x4f, 0x44, 0x45, 0x5f, 0x53, 0x49, 0x4e, 0x47, 0x4c, 0x45, 0x5f, - 0x57, 0x52, 0x49, 0x54, 0x45, 0x52, 0x10, 0x04, 0x12, 0x1b, 0x0a, 0x17, 0x4d, 0x55, 0x4c, 0x54, - 0x49, 0x5f, 0x4e, 0x4f, 0x44, 0x45, 0x5f, 0x4d, 0x55, 0x4c, 0x54, 0x49, 0x5f, 0x57, 0x52, 0x49, - 0x54, 0x45, 0x52, 0x10, 0x05, 0x12, 0x22, 0x0a, 0x19, 0x53, 0x49, 0x4e, 0x47, 0x4c, 0x45, 0x5f, - 0x4e, 0x4f, 0x44, 0x45, 0x5f, 0x53, 0x49, 0x4e, 0x47, 0x4c, 0x45, 0x5f, 0x57, 0x52, 0x49, 0x54, - 0x45, 0x52, 0x10, 0x06, 0x1a, 0x03, 0xa0, 0x42, 0x01, 0x12, 0x21, 0x0a, 0x18, 0x53, 0x49, 0x4e, - 0x47, 0x4c, 0x45, 0x5f, 0x4e, 0x4f, 0x44, 0x45, 0x5f, 0x4d, 0x55, 0x4c, 0x54, 0x49, 0x5f, 0x57, - 0x52, 0x49, 0x54, 0x45, 0x52, 0x10, 0x07, 0x1a, 0x03, 0xa0, 0x42, 0x01, 0x42, 0x0d, 0x0a, 0x0b, - 0x61, 0x63, 0x63, 0x65, 0x73, 0x73, 0x5f, 0x74, 0x79, 0x70, 0x65, 0x22, 0x57, 0x0a, 0x0d, 0x43, - 0x61, 0x70, 0x61, 0x63, 0x69, 0x74, 0x79, 0x52, 0x61, 0x6e, 0x67, 0x65, 0x12, 0x25, 0x0a, 0x0e, - 0x72, 0x65, 0x71, 0x75, 0x69, 0x72, 0x65, 0x64, 0x5f, 0x62, 0x79, 0x74, 0x65, 0x73, 0x18, 0x01, - 0x20, 0x01, 0x28, 0x03, 0x52, 0x0d, 0x72, 0x65, 0x71, 0x75, 0x69, 0x72, 0x65, 0x64, 0x42, 0x79, - 0x74, 0x65, 0x73, 0x12, 0x1f, 0x0a, 0x0b, 0x6c, 0x69, 0x6d, 0x69, 0x74, 0x5f, 0x62, 0x79, 0x74, - 0x65, 0x73, 0x18, 0x02, 0x20, 0x01, 0x28, 0x03, 0x52, 0x0a, 0x6c, 0x69, 0x6d, 0x69, 0x74, 0x42, - 0x79, 0x74, 0x65, 0x73, 0x22, 0xdf, 0x02, 0x0a, 0x06, 0x56, 0x6f, 0x6c, 0x75, 0x6d, 0x65, 0x12, - 0x25, 0x0a, 0x0e, 0x63, 0x61, 0x70, 0x61, 0x63, 0x69, 0x74, 0x79, 0x5f, 0x62, 0x79, 0x74, 0x65, - 0x73, 0x18, 0x01, 0x20, 0x01, 0x28, 0x03, 0x52, 0x0d, 0x63, 0x61, 0x70, 0x61, 0x63, 0x69, 0x74, - 0x79, 0x42, 0x79, 0x74, 0x65, 0x73, 0x12, 0x1b, 0x0a, 0x09, 0x76, 0x6f, 0x6c, 0x75, 0x6d, 0x65, - 0x5f, 0x69, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x76, 0x6f, 0x6c, 0x75, 0x6d, - 0x65, 0x49, 0x64, 0x12, 0x48, 0x0a, 0x0e, 0x76, 0x6f, 0x6c, 0x75, 0x6d, 0x65, 0x5f, 0x63, 0x6f, - 0x6e, 0x74, 0x65, 0x78, 0x74, 0x18, 0x03, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x21, 0x2e, 0x63, 0x73, - 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x56, 0x6f, 0x6c, 0x75, 0x6d, 0x65, 0x2e, 0x56, 0x6f, 0x6c, 0x75, - 0x6d, 0x65, 0x43, 0x6f, 0x6e, 0x74, 0x65, 0x78, 0x74, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x0d, - 0x76, 0x6f, 0x6c, 0x75, 0x6d, 0x65, 0x43, 0x6f, 0x6e, 0x74, 0x65, 0x78, 0x74, 0x12, 0x42, 0x0a, - 0x0e, 0x63, 0x6f, 0x6e, 0x74, 0x65, 0x6e, 0x74, 0x5f, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x18, - 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1b, 0x2e, 0x63, 0x73, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x56, - 0x6f, 0x6c, 0x75, 0x6d, 0x65, 0x43, 0x6f, 0x6e, 0x74, 0x65, 0x6e, 0x74, 0x53, 0x6f, 0x75, 0x72, - 0x63, 0x65, 0x52, 0x0d, 0x63, 0x6f, 0x6e, 0x74, 0x65, 0x6e, 0x74, 0x53, 0x6f, 0x75, 0x72, 0x63, - 0x65, 0x12, 0x41, 0x0a, 0x13, 0x61, 0x63, 0x63, 0x65, 0x73, 0x73, 0x69, 0x62, 0x6c, 0x65, 0x5f, - 0x74, 0x6f, 0x70, 0x6f, 0x6c, 0x6f, 0x67, 0x79, 0x18, 0x05, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x10, - 0x2e, 0x63, 0x73, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x54, 0x6f, 0x70, 0x6f, 0x6c, 0x6f, 0x67, 0x79, - 0x52, 0x12, 0x61, 0x63, 0x63, 0x65, 0x73, 0x73, 0x69, 0x62, 0x6c, 0x65, 0x54, 0x6f, 0x70, 0x6f, - 0x6c, 0x6f, 0x67, 0x79, 0x1a, 0x40, 0x0a, 0x12, 0x56, 0x6f, 0x6c, 0x75, 0x6d, 0x65, 0x43, 0x6f, - 0x6e, 0x74, 0x65, 0x78, 0x74, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, - 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x14, 0x0a, 0x05, - 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x76, 0x61, 0x6c, - 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, 0x22, 0x75, 0x0a, 0x13, 0x54, 0x6f, 0x70, 0x6f, 0x6c, 0x6f, - 0x67, 0x79, 0x52, 0x65, 0x71, 0x75, 0x69, 0x72, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x12, 0x2e, 0x0a, - 0x09, 0x72, 0x65, 0x71, 0x75, 0x69, 0x73, 0x69, 0x74, 0x65, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, - 0x32, 0x10, 0x2e, 0x63, 0x73, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x54, 0x6f, 0x70, 0x6f, 0x6c, 0x6f, - 0x67, 0x79, 0x52, 0x09, 0x72, 0x65, 0x71, 0x75, 0x69, 0x73, 0x69, 0x74, 0x65, 0x12, 0x2e, 0x0a, - 0x09, 0x70, 0x72, 0x65, 0x66, 0x65, 0x72, 0x72, 0x65, 0x64, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, - 0x32, 0x10, 0x2e, 0x63, 0x73, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x54, 0x6f, 0x70, 0x6f, 0x6c, 0x6f, - 0x67, 0x79, 0x52, 0x09, 0x70, 0x72, 0x65, 0x66, 0x65, 0x72, 0x72, 0x65, 0x64, 0x22, 0x83, 0x01, - 0x0a, 0x08, 0x54, 0x6f, 0x70, 0x6f, 0x6c, 0x6f, 0x67, 0x79, 0x12, 0x3a, 0x0a, 0x08, 0x73, 0x65, - 0x67, 0x6d, 0x65, 0x6e, 0x74, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1e, 0x2e, 0x63, - 0x73, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x54, 0x6f, 0x70, 0x6f, 0x6c, 0x6f, 0x67, 0x79, 0x2e, 0x53, - 0x65, 0x67, 0x6d, 0x65, 0x6e, 0x74, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x08, 0x73, 0x65, - 0x67, 0x6d, 0x65, 0x6e, 0x74, 0x73, 0x1a, 0x3b, 0x0a, 0x0d, 0x53, 0x65, 0x67, 0x6d, 0x65, 0x6e, - 0x74, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, - 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x14, 0x0a, 0x05, 0x76, 0x61, 0x6c, - 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, - 0x02, 0x38, 0x01, 0x22, 0xb7, 0x01, 0x0a, 0x13, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x56, 0x6f, - 0x6c, 0x75, 0x6d, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x1b, 0x0a, 0x09, 0x76, - 0x6f, 0x6c, 0x75, 0x6d, 0x65, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, - 0x76, 0x6f, 0x6c, 0x75, 0x6d, 0x65, 0x49, 0x64, 0x12, 0x47, 0x0a, 0x07, 0x73, 0x65, 0x63, 0x72, - 0x65, 0x74, 0x73, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x28, 0x2e, 0x63, 0x73, 0x69, 0x2e, - 0x76, 0x31, 0x2e, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x56, 0x6f, 0x6c, 0x75, 0x6d, 0x65, 0x52, - 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x2e, 0x53, 0x65, 0x63, 0x72, 0x65, 0x74, 0x73, 0x45, 0x6e, - 0x74, 0x72, 0x79, 0x42, 0x03, 0x98, 0x42, 0x01, 0x52, 0x07, 0x73, 0x65, 0x63, 0x72, 0x65, 0x74, - 0x73, 0x1a, 0x3a, 0x0a, 0x0c, 0x53, 0x65, 0x63, 0x72, 0x65, 0x74, 0x73, 0x45, 0x6e, 0x74, 0x72, - 0x79, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, - 0x6b, 0x65, 0x79, 0x12, 0x14, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, - 0x28, 0x09, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, 0x22, 0x16, 0x0a, - 0x14, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x56, 0x6f, 0x6c, 0x75, 0x6d, 0x65, 0x52, 0x65, 0x73, - 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0xed, 0x03, 0x0a, 0x1e, 0x43, 0x6f, 0x6e, 0x74, 0x72, 0x6f, - 0x6c, 0x6c, 0x65, 0x72, 0x50, 0x75, 0x62, 0x6c, 0x69, 0x73, 0x68, 0x56, 0x6f, 0x6c, 0x75, 0x6d, - 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x1b, 0x0a, 0x09, 0x76, 0x6f, 0x6c, 0x75, - 0x6d, 0x65, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x76, 0x6f, 0x6c, - 0x75, 0x6d, 0x65, 0x49, 0x64, 0x12, 0x17, 0x0a, 0x07, 0x6e, 0x6f, 0x64, 0x65, 0x5f, 0x69, 0x64, - 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x6e, 0x6f, 0x64, 0x65, 0x49, 0x64, 0x12, 0x45, - 0x0a, 0x11, 0x76, 0x6f, 0x6c, 0x75, 0x6d, 0x65, 0x5f, 0x63, 0x61, 0x70, 0x61, 0x62, 0x69, 0x6c, - 0x69, 0x74, 0x79, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x18, 0x2e, 0x63, 0x73, 0x69, 0x2e, - 0x76, 0x31, 0x2e, 0x56, 0x6f, 0x6c, 0x75, 0x6d, 0x65, 0x43, 0x61, 0x70, 0x61, 0x62, 0x69, 0x6c, - 0x69, 0x74, 0x79, 0x52, 0x10, 0x76, 0x6f, 0x6c, 0x75, 0x6d, 0x65, 0x43, 0x61, 0x70, 0x61, 0x62, - 0x69, 0x6c, 0x69, 0x74, 0x79, 0x12, 0x1a, 0x0a, 0x08, 0x72, 0x65, 0x61, 0x64, 0x6f, 0x6e, 0x6c, - 0x79, 0x18, 0x04, 0x20, 0x01, 0x28, 0x08, 0x52, 0x08, 0x72, 0x65, 0x61, 0x64, 0x6f, 0x6e, 0x6c, - 0x79, 0x12, 0x52, 0x0a, 0x07, 0x73, 0x65, 0x63, 0x72, 0x65, 0x74, 0x73, 0x18, 0x05, 0x20, 0x03, - 0x28, 0x0b, 0x32, 0x33, 0x2e, 0x63, 0x73, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x43, 0x6f, 0x6e, 0x74, - 0x72, 0x6f, 0x6c, 0x6c, 0x65, 0x72, 0x50, 0x75, 0x62, 0x6c, 0x69, 0x73, 0x68, 0x56, 0x6f, 0x6c, - 0x75, 0x6d, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x2e, 0x53, 0x65, 0x63, 0x72, 0x65, - 0x74, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x42, 0x03, 0x98, 0x42, 0x01, 0x52, 0x07, 0x73, 0x65, - 0x63, 0x72, 0x65, 0x74, 0x73, 0x12, 0x60, 0x0a, 0x0e, 0x76, 0x6f, 0x6c, 0x75, 0x6d, 0x65, 0x5f, - 0x63, 0x6f, 0x6e, 0x74, 0x65, 0x78, 0x74, 0x18, 0x06, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x39, 0x2e, - 0x63, 0x73, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x43, 0x6f, 0x6e, 0x74, 0x72, 0x6f, 0x6c, 0x6c, 0x65, - 0x72, 0x50, 0x75, 0x62, 0x6c, 0x69, 0x73, 0x68, 0x56, 0x6f, 0x6c, 0x75, 0x6d, 0x65, 0x52, 0x65, - 0x71, 0x75, 0x65, 0x73, 0x74, 0x2e, 0x56, 0x6f, 0x6c, 0x75, 0x6d, 0x65, 0x43, 0x6f, 0x6e, 0x74, - 0x65, 0x78, 0x74, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x0d, 0x76, 0x6f, 0x6c, 0x75, 0x6d, 0x65, - 0x43, 0x6f, 0x6e, 0x74, 0x65, 0x78, 0x74, 0x1a, 0x3a, 0x0a, 0x0c, 0x53, 0x65, 0x63, 0x72, 0x65, - 0x74, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, - 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x14, 0x0a, 0x05, 0x76, 0x61, 0x6c, - 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, - 0x02, 0x38, 0x01, 0x1a, 0x40, 0x0a, 0x12, 0x56, 0x6f, 0x6c, 0x75, 0x6d, 0x65, 0x43, 0x6f, 0x6e, - 0x74, 0x65, 0x78, 0x74, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, - 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x14, 0x0a, 0x05, 0x76, - 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, - 0x65, 0x3a, 0x02, 0x38, 0x01, 0x22, 0xca, 0x01, 0x0a, 0x1f, 0x43, 0x6f, 0x6e, 0x74, 0x72, 0x6f, - 0x6c, 0x6c, 0x65, 0x72, 0x50, 0x75, 0x62, 0x6c, 0x69, 0x73, 0x68, 0x56, 0x6f, 0x6c, 0x75, 0x6d, - 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x64, 0x0a, 0x0f, 0x70, 0x75, 0x62, - 0x6c, 0x69, 0x73, 0x68, 0x5f, 0x63, 0x6f, 0x6e, 0x74, 0x65, 0x78, 0x74, 0x18, 0x01, 0x20, 0x03, - 0x28, 0x0b, 0x32, 0x3b, 0x2e, 0x63, 0x73, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x43, 0x6f, 0x6e, 0x74, - 0x72, 0x6f, 0x6c, 0x6c, 0x65, 0x72, 0x50, 0x75, 0x62, 0x6c, 0x69, 0x73, 0x68, 0x56, 0x6f, 0x6c, - 0x75, 0x6d, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x2e, 0x50, 0x75, 0x62, 0x6c, - 0x69, 0x73, 0x68, 0x43, 0x6f, 0x6e, 0x74, 0x65, 0x78, 0x74, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, - 0x0e, 0x70, 0x75, 0x62, 0x6c, 0x69, 0x73, 0x68, 0x43, 0x6f, 0x6e, 0x74, 0x65, 0x78, 0x74, 0x1a, - 0x41, 0x0a, 0x13, 0x50, 0x75, 0x62, 0x6c, 0x69, 0x73, 0x68, 0x43, 0x6f, 0x6e, 0x74, 0x65, 0x78, - 0x74, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, - 0x01, 0x28, 0x09, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x14, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, - 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, - 0x38, 0x01, 0x22, 0xea, 0x01, 0x0a, 0x20, 0x43, 0x6f, 0x6e, 0x74, 0x72, 0x6f, 0x6c, 0x6c, 0x65, - 0x72, 0x55, 0x6e, 0x70, 0x75, 0x62, 0x6c, 0x69, 0x73, 0x68, 0x56, 0x6f, 0x6c, 0x75, 0x6d, 0x65, - 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x1b, 0x0a, 0x09, 0x76, 0x6f, 0x6c, 0x75, 0x6d, - 0x65, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x76, 0x6f, 0x6c, 0x75, - 0x6d, 0x65, 0x49, 0x64, 0x12, 0x17, 0x0a, 0x07, 0x6e, 0x6f, 0x64, 0x65, 0x5f, 0x69, 0x64, 0x18, - 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x6e, 0x6f, 0x64, 0x65, 0x49, 0x64, 0x12, 0x54, 0x0a, - 0x07, 0x73, 0x65, 0x63, 0x72, 0x65, 0x74, 0x73, 0x18, 0x03, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x35, - 0x2e, 0x63, 0x73, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x43, 0x6f, 0x6e, 0x74, 0x72, 0x6f, 0x6c, 0x6c, - 0x65, 0x72, 0x55, 0x6e, 0x70, 0x75, 0x62, 0x6c, 0x69, 0x73, 0x68, 0x56, 0x6f, 0x6c, 0x75, 0x6d, - 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x2e, 0x53, 0x65, 0x63, 0x72, 0x65, 0x74, 0x73, - 0x45, 0x6e, 0x74, 0x72, 0x79, 0x42, 0x03, 0x98, 0x42, 0x01, 0x52, 0x07, 0x73, 0x65, 0x63, 0x72, - 0x65, 0x74, 0x73, 0x1a, 0x3a, 0x0a, 0x0c, 0x53, 0x65, 0x63, 0x72, 0x65, 0x74, 0x73, 0x45, 0x6e, - 0x74, 0x72, 0x79, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, - 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x14, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, - 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, 0x22, - 0x23, 0x0a, 0x21, 0x43, 0x6f, 0x6e, 0x74, 0x72, 0x6f, 0x6c, 0x6c, 0x65, 0x72, 0x55, 0x6e, 0x70, - 0x75, 0x62, 0x6c, 0x69, 0x73, 0x68, 0x56, 0x6f, 0x6c, 0x75, 0x6d, 0x65, 0x52, 0x65, 0x73, 0x70, - 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x96, 0x06, 0x0a, 0x21, 0x56, 0x61, 0x6c, 0x69, 0x64, 0x61, 0x74, - 0x65, 0x56, 0x6f, 0x6c, 0x75, 0x6d, 0x65, 0x43, 0x61, 0x70, 0x61, 0x62, 0x69, 0x6c, 0x69, 0x74, - 0x69, 0x65, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x1b, 0x0a, 0x09, 0x76, 0x6f, - 0x6c, 0x75, 0x6d, 0x65, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x76, - 0x6f, 0x6c, 0x75, 0x6d, 0x65, 0x49, 0x64, 0x12, 0x63, 0x0a, 0x0e, 0x76, 0x6f, 0x6c, 0x75, 0x6d, - 0x65, 0x5f, 0x63, 0x6f, 0x6e, 0x74, 0x65, 0x78, 0x74, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, - 0x3c, 0x2e, 0x63, 0x73, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x56, 0x61, 0x6c, 0x69, 0x64, 0x61, 0x74, - 0x65, 0x56, 0x6f, 0x6c, 0x75, 0x6d, 0x65, 0x43, 0x61, 0x70, 0x61, 0x62, 0x69, 0x6c, 0x69, 0x74, - 0x69, 0x65, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x2e, 0x56, 0x6f, 0x6c, 0x75, 0x6d, - 0x65, 0x43, 0x6f, 0x6e, 0x74, 0x65, 0x78, 0x74, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x0d, 0x76, - 0x6f, 0x6c, 0x75, 0x6d, 0x65, 0x43, 0x6f, 0x6e, 0x74, 0x65, 0x78, 0x74, 0x12, 0x49, 0x0a, 0x13, - 0x76, 0x6f, 0x6c, 0x75, 0x6d, 0x65, 0x5f, 0x63, 0x61, 0x70, 0x61, 0x62, 0x69, 0x6c, 0x69, 0x74, - 0x69, 0x65, 0x73, 0x18, 0x03, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x18, 0x2e, 0x63, 0x73, 0x69, 0x2e, - 0x76, 0x31, 0x2e, 0x56, 0x6f, 0x6c, 0x75, 0x6d, 0x65, 0x43, 0x61, 0x70, 0x61, 0x62, 0x69, 0x6c, - 0x69, 0x74, 0x79, 0x52, 0x12, 0x76, 0x6f, 0x6c, 0x75, 0x6d, 0x65, 0x43, 0x61, 0x70, 0x61, 0x62, - 0x69, 0x6c, 0x69, 0x74, 0x69, 0x65, 0x73, 0x12, 0x59, 0x0a, 0x0a, 0x70, 0x61, 0x72, 0x61, 0x6d, - 0x65, 0x74, 0x65, 0x72, 0x73, 0x18, 0x04, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x39, 0x2e, 0x63, 0x73, - 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x56, 0x61, 0x6c, 0x69, 0x64, 0x61, 0x74, 0x65, 0x56, 0x6f, 0x6c, - 0x75, 0x6d, 0x65, 0x43, 0x61, 0x70, 0x61, 0x62, 0x69, 0x6c, 0x69, 0x74, 0x69, 0x65, 0x73, 0x52, - 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x2e, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x65, 0x74, 0x65, 0x72, - 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x0a, 0x70, 0x61, 0x72, 0x61, 0x6d, 0x65, 0x74, 0x65, - 0x72, 0x73, 0x12, 0x55, 0x0a, 0x07, 0x73, 0x65, 0x63, 0x72, 0x65, 0x74, 0x73, 0x18, 0x05, 0x20, - 0x03, 0x28, 0x0b, 0x32, 0x36, 0x2e, 0x63, 0x73, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x56, 0x61, 0x6c, - 0x69, 0x64, 0x61, 0x74, 0x65, 0x56, 0x6f, 0x6c, 0x75, 0x6d, 0x65, 0x43, 0x61, 0x70, 0x61, 0x62, - 0x69, 0x6c, 0x69, 0x74, 0x69, 0x65, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x2e, 0x53, - 0x65, 0x63, 0x72, 0x65, 0x74, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x42, 0x03, 0x98, 0x42, 0x01, - 0x52, 0x07, 0x73, 0x65, 0x63, 0x72, 0x65, 0x74, 0x73, 0x12, 0x6f, 0x0a, 0x12, 0x6d, 0x75, 0x74, - 0x61, 0x62, 0x6c, 0x65, 0x5f, 0x70, 0x61, 0x72, 0x61, 0x6d, 0x65, 0x74, 0x65, 0x72, 0x73, 0x18, - 0x06, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x40, 0x2e, 0x63, 0x73, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x56, - 0x61, 0x6c, 0x69, 0x64, 0x61, 0x74, 0x65, 0x56, 0x6f, 0x6c, 0x75, 0x6d, 0x65, 0x43, 0x61, 0x70, - 0x61, 0x62, 0x69, 0x6c, 0x69, 0x74, 0x69, 0x65, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, - 0x2e, 0x4d, 0x75, 0x74, 0x61, 0x62, 0x6c, 0x65, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x65, 0x74, 0x65, - 0x72, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x11, 0x6d, 0x75, 0x74, 0x61, 0x62, 0x6c, 0x65, - 0x50, 0x61, 0x72, 0x61, 0x6d, 0x65, 0x74, 0x65, 0x72, 0x73, 0x1a, 0x40, 0x0a, 0x12, 0x56, 0x6f, - 0x6c, 0x75, 0x6d, 0x65, 0x43, 0x6f, 0x6e, 0x74, 0x65, 0x78, 0x74, 0x45, 0x6e, 0x74, 0x72, 0x79, - 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x6b, - 0x65, 0x79, 0x12, 0x14, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, - 0x09, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, 0x1a, 0x3d, 0x0a, 0x0f, - 0x50, 0x61, 0x72, 0x61, 0x6d, 0x65, 0x74, 0x65, 0x72, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, - 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x6b, 0x65, - 0x79, 0x12, 0x14, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, - 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, 0x1a, 0x3a, 0x0a, 0x0c, 0x53, - 0x65, 0x63, 0x72, 0x65, 0x74, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, 0x10, 0x0a, 0x03, 0x6b, - 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x14, 0x0a, - 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x76, 0x61, - 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, 0x1a, 0x44, 0x0a, 0x16, 0x4d, 0x75, 0x74, 0x61, 0x62, - 0x6c, 0x65, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x65, 0x74, 0x65, 0x72, 0x73, 0x45, 0x6e, 0x74, 0x72, - 0x79, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, - 0x6b, 0x65, 0x79, 0x12, 0x14, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, - 0x28, 0x09, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, 0x22, 0x84, 0x06, - 0x0a, 0x22, 0x56, 0x61, 0x6c, 0x69, 0x64, 0x61, 0x74, 0x65, 0x56, 0x6f, 0x6c, 0x75, 0x6d, 0x65, - 0x43, 0x61, 0x70, 0x61, 0x62, 0x69, 0x6c, 0x69, 0x74, 0x69, 0x65, 0x73, 0x52, 0x65, 0x73, 0x70, - 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x52, 0x0a, 0x09, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x72, 0x6d, 0x65, - 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x34, 0x2e, 0x63, 0x73, 0x69, 0x2e, 0x76, 0x31, - 0x2e, 0x56, 0x61, 0x6c, 0x69, 0x64, 0x61, 0x74, 0x65, 0x56, 0x6f, 0x6c, 0x75, 0x6d, 0x65, 0x43, - 0x61, 0x70, 0x61, 0x62, 0x69, 0x6c, 0x69, 0x74, 0x69, 0x65, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, - 0x6e, 0x73, 0x65, 0x2e, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x72, 0x6d, 0x65, 0x64, 0x52, 0x09, 0x63, - 0x6f, 0x6e, 0x66, 0x69, 0x72, 0x6d, 0x65, 0x64, 0x12, 0x18, 0x0a, 0x07, 0x6d, 0x65, 0x73, 0x73, - 0x61, 0x67, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x6d, 0x65, 0x73, 0x73, 0x61, - 0x67, 0x65, 0x1a, 0xef, 0x04, 0x0a, 0x09, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x72, 0x6d, 0x65, 0x64, - 0x12, 0x6e, 0x0a, 0x0e, 0x76, 0x6f, 0x6c, 0x75, 0x6d, 0x65, 0x5f, 0x63, 0x6f, 0x6e, 0x74, 0x65, - 0x78, 0x74, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x47, 0x2e, 0x63, 0x73, 0x69, 0x2e, 0x76, - 0x31, 0x2e, 0x56, 0x61, 0x6c, 0x69, 0x64, 0x61, 0x74, 0x65, 0x56, 0x6f, 0x6c, 0x75, 0x6d, 0x65, - 0x43, 0x61, 0x70, 0x61, 0x62, 0x69, 0x6c, 0x69, 0x74, 0x69, 0x65, 0x73, 0x52, 0x65, 0x73, 0x70, - 0x6f, 0x6e, 0x73, 0x65, 0x2e, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x72, 0x6d, 0x65, 0x64, 0x2e, 0x56, - 0x6f, 0x6c, 0x75, 0x6d, 0x65, 0x43, 0x6f, 0x6e, 0x74, 0x65, 0x78, 0x74, 0x45, 0x6e, 0x74, 0x72, - 0x79, 0x52, 0x0d, 0x76, 0x6f, 0x6c, 0x75, 0x6d, 0x65, 0x43, 0x6f, 0x6e, 0x74, 0x65, 0x78, 0x74, - 0x12, 0x49, 0x0a, 0x13, 0x76, 0x6f, 0x6c, 0x75, 0x6d, 0x65, 0x5f, 0x63, 0x61, 0x70, 0x61, 0x62, - 0x69, 0x6c, 0x69, 0x74, 0x69, 0x65, 0x73, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x18, 0x2e, - 0x63, 0x73, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x56, 0x6f, 0x6c, 0x75, 0x6d, 0x65, 0x43, 0x61, 0x70, - 0x61, 0x62, 0x69, 0x6c, 0x69, 0x74, 0x79, 0x52, 0x12, 0x76, 0x6f, 0x6c, 0x75, 0x6d, 0x65, 0x43, - 0x61, 0x70, 0x61, 0x62, 0x69, 0x6c, 0x69, 0x74, 0x69, 0x65, 0x73, 0x12, 0x64, 0x0a, 0x0a, 0x70, - 0x61, 0x72, 0x61, 0x6d, 0x65, 0x74, 0x65, 0x72, 0x73, 0x18, 0x03, 0x20, 0x03, 0x28, 0x0b, 0x32, - 0x44, 0x2e, 0x63, 0x73, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x56, 0x61, 0x6c, 0x69, 0x64, 0x61, 0x74, - 0x65, 0x56, 0x6f, 0x6c, 0x75, 0x6d, 0x65, 0x43, 0x61, 0x70, 0x61, 0x62, 0x69, 0x6c, 0x69, 0x74, - 0x69, 0x65, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x2e, 0x43, 0x6f, 0x6e, 0x66, - 0x69, 0x72, 0x6d, 0x65, 0x64, 0x2e, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x65, 0x74, 0x65, 0x72, 0x73, - 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x0a, 0x70, 0x61, 0x72, 0x61, 0x6d, 0x65, 0x74, 0x65, 0x72, - 0x73, 0x12, 0x7a, 0x0a, 0x12, 0x6d, 0x75, 0x74, 0x61, 0x62, 0x6c, 0x65, 0x5f, 0x70, 0x61, 0x72, - 0x61, 0x6d, 0x65, 0x74, 0x65, 0x72, 0x73, 0x18, 0x04, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x4b, 0x2e, - 0x63, 0x73, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x56, 0x61, 0x6c, 0x69, 0x64, 0x61, 0x74, 0x65, 0x56, - 0x6f, 0x6c, 0x75, 0x6d, 0x65, 0x43, 0x61, 0x70, 0x61, 0x62, 0x69, 0x6c, 0x69, 0x74, 0x69, 0x65, - 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x2e, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x72, - 0x6d, 0x65, 0x64, 0x2e, 0x4d, 0x75, 0x74, 0x61, 0x62, 0x6c, 0x65, 0x50, 0x61, 0x72, 0x61, 0x6d, - 0x65, 0x74, 0x65, 0x72, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x11, 0x6d, 0x75, 0x74, 0x61, - 0x62, 0x6c, 0x65, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x65, 0x74, 0x65, 0x72, 0x73, 0x1a, 0x40, 0x0a, - 0x12, 0x56, 0x6f, 0x6c, 0x75, 0x6d, 0x65, 0x43, 0x6f, 0x6e, 0x74, 0x65, 0x78, 0x74, 0x45, 0x6e, - 0x74, 0x72, 0x79, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, - 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x14, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, - 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, 0x1a, - 0x3d, 0x0a, 0x0f, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x65, 0x74, 0x65, 0x72, 0x73, 0x45, 0x6e, 0x74, - 0x72, 0x79, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, - 0x03, 0x6b, 0x65, 0x79, 0x12, 0x14, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, - 0x01, 0x28, 0x09, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, 0x1a, 0x44, - 0x0a, 0x16, 0x4d, 0x75, 0x74, 0x61, 0x62, 0x6c, 0x65, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x65, 0x74, - 0x65, 0x72, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, - 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x14, 0x0a, 0x05, 0x76, 0x61, - 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, - 0x3a, 0x02, 0x38, 0x01, 0x22, 0x5c, 0x0a, 0x12, 0x4c, 0x69, 0x73, 0x74, 0x56, 0x6f, 0x6c, 0x75, - 0x6d, 0x65, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x1f, 0x0a, 0x0b, 0x6d, 0x61, - 0x78, 0x5f, 0x65, 0x6e, 0x74, 0x72, 0x69, 0x65, 0x73, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, - 0x0a, 0x6d, 0x61, 0x78, 0x45, 0x6e, 0x74, 0x72, 0x69, 0x65, 0x73, 0x12, 0x25, 0x0a, 0x0e, 0x73, - 0x74, 0x61, 0x72, 0x74, 0x69, 0x6e, 0x67, 0x5f, 0x74, 0x6f, 0x6b, 0x65, 0x6e, 0x18, 0x02, 0x20, - 0x01, 0x28, 0x09, 0x52, 0x0d, 0x73, 0x74, 0x61, 0x72, 0x74, 0x69, 0x6e, 0x67, 0x54, 0x6f, 0x6b, - 0x65, 0x6e, 0x22, 0xec, 0x02, 0x0a, 0x13, 0x4c, 0x69, 0x73, 0x74, 0x56, 0x6f, 0x6c, 0x75, 0x6d, - 0x65, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x3b, 0x0a, 0x07, 0x65, 0x6e, - 0x74, 0x72, 0x69, 0x65, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x21, 0x2e, 0x63, 0x73, - 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x56, 0x6f, 0x6c, 0x75, 0x6d, 0x65, 0x73, - 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x2e, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x07, - 0x65, 0x6e, 0x74, 0x72, 0x69, 0x65, 0x73, 0x12, 0x1d, 0x0a, 0x0a, 0x6e, 0x65, 0x78, 0x74, 0x5f, - 0x74, 0x6f, 0x6b, 0x65, 0x6e, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x6e, 0x65, 0x78, - 0x74, 0x54, 0x6f, 0x6b, 0x65, 0x6e, 0x1a, 0x85, 0x01, 0x0a, 0x0c, 0x56, 0x6f, 0x6c, 0x75, 0x6d, - 0x65, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x12, 0x2c, 0x0a, 0x12, 0x70, 0x75, 0x62, 0x6c, 0x69, - 0x73, 0x68, 0x65, 0x64, 0x5f, 0x6e, 0x6f, 0x64, 0x65, 0x5f, 0x69, 0x64, 0x73, 0x18, 0x01, 0x20, - 0x03, 0x28, 0x09, 0x52, 0x10, 0x70, 0x75, 0x62, 0x6c, 0x69, 0x73, 0x68, 0x65, 0x64, 0x4e, 0x6f, - 0x64, 0x65, 0x49, 0x64, 0x73, 0x12, 0x47, 0x0a, 0x10, 0x76, 0x6f, 0x6c, 0x75, 0x6d, 0x65, 0x5f, - 0x63, 0x6f, 0x6e, 0x64, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, - 0x17, 0x2e, 0x63, 0x73, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x56, 0x6f, 0x6c, 0x75, 0x6d, 0x65, 0x43, - 0x6f, 0x6e, 0x64, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x42, 0x03, 0xa0, 0x42, 0x01, 0x52, 0x0f, 0x76, - 0x6f, 0x6c, 0x75, 0x6d, 0x65, 0x43, 0x6f, 0x6e, 0x64, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x1a, 0x71, - 0x0a, 0x05, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, 0x26, 0x0a, 0x06, 0x76, 0x6f, 0x6c, 0x75, 0x6d, - 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x0e, 0x2e, 0x63, 0x73, 0x69, 0x2e, 0x76, 0x31, - 0x2e, 0x56, 0x6f, 0x6c, 0x75, 0x6d, 0x65, 0x52, 0x06, 0x76, 0x6f, 0x6c, 0x75, 0x6d, 0x65, 0x12, - 0x40, 0x0a, 0x06, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, - 0x28, 0x2e, 0x63, 0x73, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x56, 0x6f, 0x6c, - 0x75, 0x6d, 0x65, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x2e, 0x56, 0x6f, 0x6c, - 0x75, 0x6d, 0x65, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x52, 0x06, 0x73, 0x74, 0x61, 0x74, 0x75, - 0x73, 0x22, 0x3e, 0x0a, 0x1a, 0x43, 0x6f, 0x6e, 0x74, 0x72, 0x6f, 0x6c, 0x6c, 0x65, 0x72, 0x47, - 0x65, 0x74, 0x56, 0x6f, 0x6c, 0x75, 0x6d, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, - 0x1b, 0x0a, 0x09, 0x76, 0x6f, 0x6c, 0x75, 0x6d, 0x65, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, - 0x28, 0x09, 0x52, 0x08, 0x76, 0x6f, 0x6c, 0x75, 0x6d, 0x65, 0x49, 0x64, 0x3a, 0x03, 0xa0, 0x42, - 0x01, 0x22, 0x97, 0x02, 0x0a, 0x1b, 0x43, 0x6f, 0x6e, 0x74, 0x72, 0x6f, 0x6c, 0x6c, 0x65, 0x72, - 0x47, 0x65, 0x74, 0x56, 0x6f, 0x6c, 0x75, 0x6d, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, - 0x65, 0x12, 0x26, 0x0a, 0x06, 0x76, 0x6f, 0x6c, 0x75, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, - 0x0b, 0x32, 0x0e, 0x2e, 0x63, 0x73, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x56, 0x6f, 0x6c, 0x75, 0x6d, - 0x65, 0x52, 0x06, 0x76, 0x6f, 0x6c, 0x75, 0x6d, 0x65, 0x12, 0x48, 0x0a, 0x06, 0x73, 0x74, 0x61, - 0x74, 0x75, 0x73, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x30, 0x2e, 0x63, 0x73, 0x69, 0x2e, - 0x76, 0x31, 0x2e, 0x43, 0x6f, 0x6e, 0x74, 0x72, 0x6f, 0x6c, 0x6c, 0x65, 0x72, 0x47, 0x65, 0x74, - 0x56, 0x6f, 0x6c, 0x75, 0x6d, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x2e, 0x56, - 0x6f, 0x6c, 0x75, 0x6d, 0x65, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x52, 0x06, 0x73, 0x74, 0x61, - 0x74, 0x75, 0x73, 0x1a, 0x80, 0x01, 0x0a, 0x0c, 0x56, 0x6f, 0x6c, 0x75, 0x6d, 0x65, 0x53, 0x74, - 0x61, 0x74, 0x75, 0x73, 0x12, 0x2c, 0x0a, 0x12, 0x70, 0x75, 0x62, 0x6c, 0x69, 0x73, 0x68, 0x65, - 0x64, 0x5f, 0x6e, 0x6f, 0x64, 0x65, 0x5f, 0x69, 0x64, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x09, - 0x52, 0x10, 0x70, 0x75, 0x62, 0x6c, 0x69, 0x73, 0x68, 0x65, 0x64, 0x4e, 0x6f, 0x64, 0x65, 0x49, - 0x64, 0x73, 0x12, 0x42, 0x0a, 0x10, 0x76, 0x6f, 0x6c, 0x75, 0x6d, 0x65, 0x5f, 0x63, 0x6f, 0x6e, - 0x64, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x17, 0x2e, 0x63, - 0x73, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x56, 0x6f, 0x6c, 0x75, 0x6d, 0x65, 0x43, 0x6f, 0x6e, 0x64, - 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x0f, 0x76, 0x6f, 0x6c, 0x75, 0x6d, 0x65, 0x43, 0x6f, 0x6e, - 0x64, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x3a, 0x03, 0xa0, 0x42, 0x01, 0x22, 0xfe, 0x02, 0x0a, 0x1d, - 0x43, 0x6f, 0x6e, 0x74, 0x72, 0x6f, 0x6c, 0x6c, 0x65, 0x72, 0x4d, 0x6f, 0x64, 0x69, 0x66, 0x79, - 0x56, 0x6f, 0x6c, 0x75, 0x6d, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x1b, 0x0a, - 0x09, 0x76, 0x6f, 0x6c, 0x75, 0x6d, 0x65, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, - 0x52, 0x08, 0x76, 0x6f, 0x6c, 0x75, 0x6d, 0x65, 0x49, 0x64, 0x12, 0x51, 0x0a, 0x07, 0x73, 0x65, - 0x63, 0x72, 0x65, 0x74, 0x73, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x32, 0x2e, 0x63, 0x73, - 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x43, 0x6f, 0x6e, 0x74, 0x72, 0x6f, 0x6c, 0x6c, 0x65, 0x72, 0x4d, - 0x6f, 0x64, 0x69, 0x66, 0x79, 0x56, 0x6f, 0x6c, 0x75, 0x6d, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, - 0x73, 0x74, 0x2e, 0x53, 0x65, 0x63, 0x72, 0x65, 0x74, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x42, - 0x03, 0x98, 0x42, 0x01, 0x52, 0x07, 0x73, 0x65, 0x63, 0x72, 0x65, 0x74, 0x73, 0x12, 0x6b, 0x0a, - 0x12, 0x6d, 0x75, 0x74, 0x61, 0x62, 0x6c, 0x65, 0x5f, 0x70, 0x61, 0x72, 0x61, 0x6d, 0x65, 0x74, - 0x65, 0x72, 0x73, 0x18, 0x03, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x3c, 0x2e, 0x63, 0x73, 0x69, 0x2e, - 0x76, 0x31, 0x2e, 0x43, 0x6f, 0x6e, 0x74, 0x72, 0x6f, 0x6c, 0x6c, 0x65, 0x72, 0x4d, 0x6f, 0x64, - 0x69, 0x66, 0x79, 0x56, 0x6f, 0x6c, 0x75, 0x6d, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, - 0x2e, 0x4d, 0x75, 0x74, 0x61, 0x62, 0x6c, 0x65, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x65, 0x74, 0x65, - 0x72, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x11, 0x6d, 0x75, 0x74, 0x61, 0x62, 0x6c, 0x65, - 0x50, 0x61, 0x72, 0x61, 0x6d, 0x65, 0x74, 0x65, 0x72, 0x73, 0x1a, 0x3a, 0x0a, 0x0c, 0x53, 0x65, - 0x63, 0x72, 0x65, 0x74, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, - 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x14, 0x0a, 0x05, - 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x76, 0x61, 0x6c, - 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, 0x1a, 0x44, 0x0a, 0x16, 0x4d, 0x75, 0x74, 0x61, 0x62, 0x6c, - 0x65, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x65, 0x74, 0x65, 0x72, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, - 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x6b, - 0x65, 0x79, 0x12, 0x14, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, - 0x09, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, 0x22, 0x20, 0x0a, 0x1e, - 0x43, 0x6f, 0x6e, 0x74, 0x72, 0x6f, 0x6c, 0x6c, 0x65, 0x72, 0x4d, 0x6f, 0x64, 0x69, 0x66, 0x79, - 0x56, 0x6f, 0x6c, 0x75, 0x6d, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0xad, - 0x02, 0x0a, 0x12, 0x47, 0x65, 0x74, 0x43, 0x61, 0x70, 0x61, 0x63, 0x69, 0x74, 0x79, 0x52, 0x65, - 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x49, 0x0a, 0x13, 0x76, 0x6f, 0x6c, 0x75, 0x6d, 0x65, 0x5f, - 0x63, 0x61, 0x70, 0x61, 0x62, 0x69, 0x6c, 0x69, 0x74, 0x69, 0x65, 0x73, 0x18, 0x01, 0x20, 0x03, - 0x28, 0x0b, 0x32, 0x18, 0x2e, 0x63, 0x73, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x56, 0x6f, 0x6c, 0x75, - 0x6d, 0x65, 0x43, 0x61, 0x70, 0x61, 0x62, 0x69, 0x6c, 0x69, 0x74, 0x79, 0x52, 0x12, 0x76, 0x6f, - 0x6c, 0x75, 0x6d, 0x65, 0x43, 0x61, 0x70, 0x61, 0x62, 0x69, 0x6c, 0x69, 0x74, 0x69, 0x65, 0x73, - 0x12, 0x4a, 0x0a, 0x0a, 0x70, 0x61, 0x72, 0x61, 0x6d, 0x65, 0x74, 0x65, 0x72, 0x73, 0x18, 0x02, - 0x20, 0x03, 0x28, 0x0b, 0x32, 0x2a, 0x2e, 0x63, 0x73, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x47, 0x65, - 0x74, 0x43, 0x61, 0x70, 0x61, 0x63, 0x69, 0x74, 0x79, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, - 0x2e, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x65, 0x74, 0x65, 0x72, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, - 0x52, 0x0a, 0x70, 0x61, 0x72, 0x61, 0x6d, 0x65, 0x74, 0x65, 0x72, 0x73, 0x12, 0x41, 0x0a, 0x13, - 0x61, 0x63, 0x63, 0x65, 0x73, 0x73, 0x69, 0x62, 0x6c, 0x65, 0x5f, 0x74, 0x6f, 0x70, 0x6f, 0x6c, - 0x6f, 0x67, 0x79, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x10, 0x2e, 0x63, 0x73, 0x69, 0x2e, - 0x76, 0x31, 0x2e, 0x54, 0x6f, 0x70, 0x6f, 0x6c, 0x6f, 0x67, 0x79, 0x52, 0x12, 0x61, 0x63, 0x63, - 0x65, 0x73, 0x73, 0x69, 0x62, 0x6c, 0x65, 0x54, 0x6f, 0x70, 0x6f, 0x6c, 0x6f, 0x67, 0x79, 0x1a, - 0x3d, 0x0a, 0x0f, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x65, 0x74, 0x65, 0x72, 0x73, 0x45, 0x6e, 0x74, - 0x72, 0x79, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, - 0x03, 0x6b, 0x65, 0x79, 0x12, 0x14, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, - 0x01, 0x28, 0x09, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, 0x22, 0xe3, - 0x01, 0x0a, 0x13, 0x47, 0x65, 0x74, 0x43, 0x61, 0x70, 0x61, 0x63, 0x69, 0x74, 0x79, 0x52, 0x65, - 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x2d, 0x0a, 0x12, 0x61, 0x76, 0x61, 0x69, 0x6c, 0x61, - 0x62, 0x6c, 0x65, 0x5f, 0x63, 0x61, 0x70, 0x61, 0x63, 0x69, 0x74, 0x79, 0x18, 0x01, 0x20, 0x01, - 0x28, 0x03, 0x52, 0x11, 0x61, 0x76, 0x61, 0x69, 0x6c, 0x61, 0x62, 0x6c, 0x65, 0x43, 0x61, 0x70, - 0x61, 0x63, 0x69, 0x74, 0x79, 0x12, 0x4b, 0x0a, 0x13, 0x6d, 0x61, 0x78, 0x69, 0x6d, 0x75, 0x6d, - 0x5f, 0x76, 0x6f, 0x6c, 0x75, 0x6d, 0x65, 0x5f, 0x73, 0x69, 0x7a, 0x65, 0x18, 0x02, 0x20, 0x01, - 0x28, 0x0b, 0x32, 0x1b, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, - 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x49, 0x6e, 0x74, 0x36, 0x34, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x52, - 0x11, 0x6d, 0x61, 0x78, 0x69, 0x6d, 0x75, 0x6d, 0x56, 0x6f, 0x6c, 0x75, 0x6d, 0x65, 0x53, 0x69, - 0x7a, 0x65, 0x12, 0x50, 0x0a, 0x13, 0x6d, 0x69, 0x6e, 0x69, 0x6d, 0x75, 0x6d, 0x5f, 0x76, 0x6f, - 0x6c, 0x75, 0x6d, 0x65, 0x5f, 0x73, 0x69, 0x7a, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, - 0x1b, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, - 0x66, 0x2e, 0x49, 0x6e, 0x74, 0x36, 0x34, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x42, 0x03, 0xa0, 0x42, - 0x01, 0x52, 0x11, 0x6d, 0x69, 0x6e, 0x69, 0x6d, 0x75, 0x6d, 0x56, 0x6f, 0x6c, 0x75, 0x6d, 0x65, - 0x53, 0x69, 0x7a, 0x65, 0x22, 0x22, 0x0a, 0x20, 0x43, 0x6f, 0x6e, 0x74, 0x72, 0x6f, 0x6c, 0x6c, - 0x65, 0x72, 0x47, 0x65, 0x74, 0x43, 0x61, 0x70, 0x61, 0x62, 0x69, 0x6c, 0x69, 0x74, 0x69, 0x65, - 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x22, 0x6c, 0x0a, 0x21, 0x43, 0x6f, 0x6e, 0x74, - 0x72, 0x6f, 0x6c, 0x6c, 0x65, 0x72, 0x47, 0x65, 0x74, 0x43, 0x61, 0x70, 0x61, 0x62, 0x69, 0x6c, - 0x69, 0x74, 0x69, 0x65, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x47, 0x0a, - 0x0c, 0x63, 0x61, 0x70, 0x61, 0x62, 0x69, 0x6c, 0x69, 0x74, 0x69, 0x65, 0x73, 0x18, 0x01, 0x20, - 0x03, 0x28, 0x0b, 0x32, 0x23, 0x2e, 0x63, 0x73, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x43, 0x6f, 0x6e, - 0x74, 0x72, 0x6f, 0x6c, 0x6c, 0x65, 0x72, 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x43, 0x61, - 0x70, 0x61, 0x62, 0x69, 0x6c, 0x69, 0x74, 0x79, 0x52, 0x0c, 0x63, 0x61, 0x70, 0x61, 0x62, 0x69, - 0x6c, 0x69, 0x74, 0x69, 0x65, 0x73, 0x22, 0xa8, 0x04, 0x0a, 0x1b, 0x43, 0x6f, 0x6e, 0x74, 0x72, - 0x6f, 0x6c, 0x6c, 0x65, 0x72, 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x43, 0x61, 0x70, 0x61, - 0x62, 0x69, 0x6c, 0x69, 0x74, 0x79, 0x12, 0x3b, 0x0a, 0x03, 0x72, 0x70, 0x63, 0x18, 0x01, 0x20, - 0x01, 0x28, 0x0b, 0x32, 0x27, 0x2e, 0x63, 0x73, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x43, 0x6f, 0x6e, - 0x74, 0x72, 0x6f, 0x6c, 0x6c, 0x65, 0x72, 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x43, 0x61, - 0x70, 0x61, 0x62, 0x69, 0x6c, 0x69, 0x74, 0x79, 0x2e, 0x52, 0x50, 0x43, 0x48, 0x00, 0x52, 0x03, - 0x72, 0x70, 0x63, 0x1a, 0xc3, 0x03, 0x0a, 0x03, 0x52, 0x50, 0x43, 0x12, 0x40, 0x0a, 0x04, 0x74, - 0x79, 0x70, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x2c, 0x2e, 0x63, 0x73, 0x69, 0x2e, - 0x76, 0x31, 0x2e, 0x43, 0x6f, 0x6e, 0x74, 0x72, 0x6f, 0x6c, 0x6c, 0x65, 0x72, 0x53, 0x65, 0x72, - 0x76, 0x69, 0x63, 0x65, 0x43, 0x61, 0x70, 0x61, 0x62, 0x69, 0x6c, 0x69, 0x74, 0x79, 0x2e, 0x52, - 0x50, 0x43, 0x2e, 0x54, 0x79, 0x70, 0x65, 0x52, 0x04, 0x74, 0x79, 0x70, 0x65, 0x22, 0xf9, 0x02, - 0x0a, 0x04, 0x54, 0x79, 0x70, 0x65, 0x12, 0x0b, 0x0a, 0x07, 0x55, 0x4e, 0x4b, 0x4e, 0x4f, 0x57, - 0x4e, 0x10, 0x00, 0x12, 0x18, 0x0a, 0x14, 0x43, 0x52, 0x45, 0x41, 0x54, 0x45, 0x5f, 0x44, 0x45, - 0x4c, 0x45, 0x54, 0x45, 0x5f, 0x56, 0x4f, 0x4c, 0x55, 0x4d, 0x45, 0x10, 0x01, 0x12, 0x1c, 0x0a, - 0x18, 0x50, 0x55, 0x42, 0x4c, 0x49, 0x53, 0x48, 0x5f, 0x55, 0x4e, 0x50, 0x55, 0x42, 0x4c, 0x49, - 0x53, 0x48, 0x5f, 0x56, 0x4f, 0x4c, 0x55, 0x4d, 0x45, 0x10, 0x02, 0x12, 0x10, 0x0a, 0x0c, 0x4c, - 0x49, 0x53, 0x54, 0x5f, 0x56, 0x4f, 0x4c, 0x55, 0x4d, 0x45, 0x53, 0x10, 0x03, 0x12, 0x10, 0x0a, - 0x0c, 0x47, 0x45, 0x54, 0x5f, 0x43, 0x41, 0x50, 0x41, 0x43, 0x49, 0x54, 0x59, 0x10, 0x04, 0x12, - 0x1a, 0x0a, 0x16, 0x43, 0x52, 0x45, 0x41, 0x54, 0x45, 0x5f, 0x44, 0x45, 0x4c, 0x45, 0x54, 0x45, - 0x5f, 0x53, 0x4e, 0x41, 0x50, 0x53, 0x48, 0x4f, 0x54, 0x10, 0x05, 0x12, 0x12, 0x0a, 0x0e, 0x4c, - 0x49, 0x53, 0x54, 0x5f, 0x53, 0x4e, 0x41, 0x50, 0x53, 0x48, 0x4f, 0x54, 0x53, 0x10, 0x06, 0x12, - 0x10, 0x0a, 0x0c, 0x43, 0x4c, 0x4f, 0x4e, 0x45, 0x5f, 0x56, 0x4f, 0x4c, 0x55, 0x4d, 0x45, 0x10, - 0x07, 0x12, 0x14, 0x0a, 0x10, 0x50, 0x55, 0x42, 0x4c, 0x49, 0x53, 0x48, 0x5f, 0x52, 0x45, 0x41, - 0x44, 0x4f, 0x4e, 0x4c, 0x59, 0x10, 0x08, 0x12, 0x11, 0x0a, 0x0d, 0x45, 0x58, 0x50, 0x41, 0x4e, - 0x44, 0x5f, 0x56, 0x4f, 0x4c, 0x55, 0x4d, 0x45, 0x10, 0x09, 0x12, 0x20, 0x0a, 0x1c, 0x4c, 0x49, - 0x53, 0x54, 0x5f, 0x56, 0x4f, 0x4c, 0x55, 0x4d, 0x45, 0x53, 0x5f, 0x50, 0x55, 0x42, 0x4c, 0x49, - 0x53, 0x48, 0x45, 0x44, 0x5f, 0x4e, 0x4f, 0x44, 0x45, 0x53, 0x10, 0x0a, 0x12, 0x19, 0x0a, 0x10, - 0x56, 0x4f, 0x4c, 0x55, 0x4d, 0x45, 0x5f, 0x43, 0x4f, 0x4e, 0x44, 0x49, 0x54, 0x49, 0x4f, 0x4e, - 0x10, 0x0b, 0x1a, 0x03, 0xa0, 0x42, 0x01, 0x12, 0x13, 0x0a, 0x0a, 0x47, 0x45, 0x54, 0x5f, 0x56, - 0x4f, 0x4c, 0x55, 0x4d, 0x45, 0x10, 0x0c, 0x1a, 0x03, 0xa0, 0x42, 0x01, 0x12, 0x21, 0x0a, 0x18, - 0x53, 0x49, 0x4e, 0x47, 0x4c, 0x45, 0x5f, 0x4e, 0x4f, 0x44, 0x45, 0x5f, 0x4d, 0x55, 0x4c, 0x54, - 0x49, 0x5f, 0x57, 0x52, 0x49, 0x54, 0x45, 0x52, 0x10, 0x0d, 0x1a, 0x03, 0xa0, 0x42, 0x01, 0x12, - 0x11, 0x0a, 0x0d, 0x4d, 0x4f, 0x44, 0x49, 0x46, 0x59, 0x5f, 0x56, 0x4f, 0x4c, 0x55, 0x4d, 0x45, - 0x10, 0x0e, 0x12, 0x15, 0x0a, 0x0c, 0x47, 0x45, 0x54, 0x5f, 0x53, 0x4e, 0x41, 0x50, 0x53, 0x48, - 0x4f, 0x54, 0x10, 0x0f, 0x1a, 0x03, 0xa0, 0x42, 0x01, 0x42, 0x06, 0x0a, 0x04, 0x74, 0x79, 0x70, - 0x65, 0x22, 0xea, 0x02, 0x0a, 0x15, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x53, 0x6e, 0x61, 0x70, - 0x73, 0x68, 0x6f, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x28, 0x0a, 0x10, 0x73, - 0x6f, 0x75, 0x72, 0x63, 0x65, 0x5f, 0x76, 0x6f, 0x6c, 0x75, 0x6d, 0x65, 0x5f, 0x69, 0x64, 0x18, - 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0e, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x56, 0x6f, 0x6c, - 0x75, 0x6d, 0x65, 0x49, 0x64, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x02, 0x20, - 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x49, 0x0a, 0x07, 0x73, 0x65, 0x63, - 0x72, 0x65, 0x74, 0x73, 0x18, 0x03, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x2a, 0x2e, 0x63, 0x73, 0x69, - 0x2e, 0x76, 0x31, 0x2e, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x53, 0x6e, 0x61, 0x70, 0x73, 0x68, - 0x6f, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x2e, 0x53, 0x65, 0x63, 0x72, 0x65, 0x74, - 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x42, 0x03, 0x98, 0x42, 0x01, 0x52, 0x07, 0x73, 0x65, 0x63, - 0x72, 0x65, 0x74, 0x73, 0x12, 0x4d, 0x0a, 0x0a, 0x70, 0x61, 0x72, 0x61, 0x6d, 0x65, 0x74, 0x65, - 0x72, 0x73, 0x18, 0x04, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x2d, 0x2e, 0x63, 0x73, 0x69, 0x2e, 0x76, - 0x31, 0x2e, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x53, 0x6e, 0x61, 0x70, 0x73, 0x68, 0x6f, 0x74, - 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x2e, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x65, 0x74, 0x65, - 0x72, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x0a, 0x70, 0x61, 0x72, 0x61, 0x6d, 0x65, 0x74, - 0x65, 0x72, 0x73, 0x1a, 0x3a, 0x0a, 0x0c, 0x53, 0x65, 0x63, 0x72, 0x65, 0x74, 0x73, 0x45, 0x6e, - 0x74, 0x72, 0x79, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, - 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x14, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, - 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, 0x1a, - 0x3d, 0x0a, 0x0f, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x65, 0x74, 0x65, 0x72, 0x73, 0x45, 0x6e, 0x74, - 0x72, 0x79, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, - 0x03, 0x6b, 0x65, 0x79, 0x12, 0x14, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, - 0x01, 0x28, 0x09, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, 0x22, 0x46, - 0x0a, 0x16, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x53, 0x6e, 0x61, 0x70, 0x73, 0x68, 0x6f, 0x74, - 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x2c, 0x0a, 0x08, 0x73, 0x6e, 0x61, 0x70, - 0x73, 0x68, 0x6f, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x10, 0x2e, 0x63, 0x73, 0x69, - 0x2e, 0x76, 0x31, 0x2e, 0x53, 0x6e, 0x61, 0x70, 0x73, 0x68, 0x6f, 0x74, 0x52, 0x08, 0x73, 0x6e, - 0x61, 0x70, 0x73, 0x68, 0x6f, 0x74, 0x22, 0x83, 0x02, 0x0a, 0x08, 0x53, 0x6e, 0x61, 0x70, 0x73, - 0x68, 0x6f, 0x74, 0x12, 0x1d, 0x0a, 0x0a, 0x73, 0x69, 0x7a, 0x65, 0x5f, 0x62, 0x79, 0x74, 0x65, - 0x73, 0x18, 0x01, 0x20, 0x01, 0x28, 0x03, 0x52, 0x09, 0x73, 0x69, 0x7a, 0x65, 0x42, 0x79, 0x74, - 0x65, 0x73, 0x12, 0x1f, 0x0a, 0x0b, 0x73, 0x6e, 0x61, 0x70, 0x73, 0x68, 0x6f, 0x74, 0x5f, 0x69, - 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, 0x73, 0x6e, 0x61, 0x70, 0x73, 0x68, 0x6f, - 0x74, 0x49, 0x64, 0x12, 0x28, 0x0a, 0x10, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x5f, 0x76, 0x6f, - 0x6c, 0x75, 0x6d, 0x65, 0x5f, 0x69, 0x64, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0e, 0x73, - 0x6f, 0x75, 0x72, 0x63, 0x65, 0x56, 0x6f, 0x6c, 0x75, 0x6d, 0x65, 0x49, 0x64, 0x12, 0x3f, 0x0a, - 0x0d, 0x63, 0x72, 0x65, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x74, 0x69, 0x6d, 0x65, 0x18, 0x04, - 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, - 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, - 0x52, 0x0c, 0x63, 0x72, 0x65, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x54, 0x69, 0x6d, 0x65, 0x12, 0x20, - 0x0a, 0x0c, 0x72, 0x65, 0x61, 0x64, 0x79, 0x5f, 0x74, 0x6f, 0x5f, 0x75, 0x73, 0x65, 0x18, 0x05, - 0x20, 0x01, 0x28, 0x08, 0x52, 0x0a, 0x72, 0x65, 0x61, 0x64, 0x79, 0x54, 0x6f, 0x55, 0x73, 0x65, - 0x12, 0x2a, 0x0a, 0x11, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x5f, 0x73, 0x6e, 0x61, 0x70, 0x73, 0x68, - 0x6f, 0x74, 0x5f, 0x69, 0x64, 0x18, 0x06, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0f, 0x67, 0x72, 0x6f, - 0x75, 0x70, 0x53, 0x6e, 0x61, 0x70, 0x73, 0x68, 0x6f, 0x74, 0x49, 0x64, 0x22, 0xbf, 0x01, 0x0a, - 0x15, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x53, 0x6e, 0x61, 0x70, 0x73, 0x68, 0x6f, 0x74, 0x52, - 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x1f, 0x0a, 0x0b, 0x73, 0x6e, 0x61, 0x70, 0x73, 0x68, - 0x6f, 0x74, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, 0x73, 0x6e, 0x61, - 0x70, 0x73, 0x68, 0x6f, 0x74, 0x49, 0x64, 0x12, 0x49, 0x0a, 0x07, 0x73, 0x65, 0x63, 0x72, 0x65, - 0x74, 0x73, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x2a, 0x2e, 0x63, 0x73, 0x69, 0x2e, 0x76, - 0x31, 0x2e, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x53, 0x6e, 0x61, 0x70, 0x73, 0x68, 0x6f, 0x74, - 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x2e, 0x53, 0x65, 0x63, 0x72, 0x65, 0x74, 0x73, 0x45, - 0x6e, 0x74, 0x72, 0x79, 0x42, 0x03, 0x98, 0x42, 0x01, 0x52, 0x07, 0x73, 0x65, 0x63, 0x72, 0x65, - 0x74, 0x73, 0x1a, 0x3a, 0x0a, 0x0c, 0x53, 0x65, 0x63, 0x72, 0x65, 0x74, 0x73, 0x45, 0x6e, 0x74, - 0x72, 0x79, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, - 0x03, 0x6b, 0x65, 0x79, 0x12, 0x14, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, - 0x01, 0x28, 0x09, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, 0x22, 0x18, - 0x0a, 0x16, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x53, 0x6e, 0x61, 0x70, 0x73, 0x68, 0x6f, 0x74, - 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0xaf, 0x02, 0x0a, 0x14, 0x4c, 0x69, 0x73, - 0x74, 0x53, 0x6e, 0x61, 0x70, 0x73, 0x68, 0x6f, 0x74, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, - 0x74, 0x12, 0x1f, 0x0a, 0x0b, 0x6d, 0x61, 0x78, 0x5f, 0x65, 0x6e, 0x74, 0x72, 0x69, 0x65, 0x73, - 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0a, 0x6d, 0x61, 0x78, 0x45, 0x6e, 0x74, 0x72, 0x69, - 0x65, 0x73, 0x12, 0x25, 0x0a, 0x0e, 0x73, 0x74, 0x61, 0x72, 0x74, 0x69, 0x6e, 0x67, 0x5f, 0x74, - 0x6f, 0x6b, 0x65, 0x6e, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0d, 0x73, 0x74, 0x61, 0x72, - 0x74, 0x69, 0x6e, 0x67, 0x54, 0x6f, 0x6b, 0x65, 0x6e, 0x12, 0x28, 0x0a, 0x10, 0x73, 0x6f, 0x75, - 0x72, 0x63, 0x65, 0x5f, 0x76, 0x6f, 0x6c, 0x75, 0x6d, 0x65, 0x5f, 0x69, 0x64, 0x18, 0x03, 0x20, - 0x01, 0x28, 0x09, 0x52, 0x0e, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x56, 0x6f, 0x6c, 0x75, 0x6d, - 0x65, 0x49, 0x64, 0x12, 0x1f, 0x0a, 0x0b, 0x73, 0x6e, 0x61, 0x70, 0x73, 0x68, 0x6f, 0x74, 0x5f, - 0x69, 0x64, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, 0x73, 0x6e, 0x61, 0x70, 0x73, 0x68, - 0x6f, 0x74, 0x49, 0x64, 0x12, 0x48, 0x0a, 0x07, 0x73, 0x65, 0x63, 0x72, 0x65, 0x74, 0x73, 0x18, - 0x05, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x29, 0x2e, 0x63, 0x73, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x4c, - 0x69, 0x73, 0x74, 0x53, 0x6e, 0x61, 0x70, 0x73, 0x68, 0x6f, 0x74, 0x73, 0x52, 0x65, 0x71, 0x75, - 0x65, 0x73, 0x74, 0x2e, 0x53, 0x65, 0x63, 0x72, 0x65, 0x74, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, - 0x42, 0x03, 0x98, 0x42, 0x01, 0x52, 0x07, 0x73, 0x65, 0x63, 0x72, 0x65, 0x74, 0x73, 0x1a, 0x3a, - 0x0a, 0x0c, 0x53, 0x65, 0x63, 0x72, 0x65, 0x74, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, 0x10, - 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x6b, 0x65, 0x79, - 0x12, 0x14, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, - 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, 0x22, 0xac, 0x01, 0x0a, 0x15, 0x4c, - 0x69, 0x73, 0x74, 0x53, 0x6e, 0x61, 0x70, 0x73, 0x68, 0x6f, 0x74, 0x73, 0x52, 0x65, 0x73, 0x70, - 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x3d, 0x0a, 0x07, 0x65, 0x6e, 0x74, 0x72, 0x69, 0x65, 0x73, 0x18, - 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x23, 0x2e, 0x63, 0x73, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x4c, - 0x69, 0x73, 0x74, 0x53, 0x6e, 0x61, 0x70, 0x73, 0x68, 0x6f, 0x74, 0x73, 0x52, 0x65, 0x73, 0x70, - 0x6f, 0x6e, 0x73, 0x65, 0x2e, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x07, 0x65, 0x6e, 0x74, 0x72, - 0x69, 0x65, 0x73, 0x12, 0x1d, 0x0a, 0x0a, 0x6e, 0x65, 0x78, 0x74, 0x5f, 0x74, 0x6f, 0x6b, 0x65, - 0x6e, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x6e, 0x65, 0x78, 0x74, 0x54, 0x6f, 0x6b, - 0x65, 0x6e, 0x1a, 0x35, 0x0a, 0x05, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, 0x2c, 0x0a, 0x08, 0x73, - 0x6e, 0x61, 0x70, 0x73, 0x68, 0x6f, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x10, 0x2e, - 0x63, 0x73, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x53, 0x6e, 0x61, 0x70, 0x73, 0x68, 0x6f, 0x74, 0x52, - 0x08, 0x73, 0x6e, 0x61, 0x70, 0x73, 0x68, 0x6f, 0x74, 0x22, 0xbe, 0x01, 0x0a, 0x12, 0x47, 0x65, - 0x74, 0x53, 0x6e, 0x61, 0x70, 0x73, 0x68, 0x6f, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, - 0x12, 0x1f, 0x0a, 0x0b, 0x73, 0x6e, 0x61, 0x70, 0x73, 0x68, 0x6f, 0x74, 0x5f, 0x69, 0x64, 0x18, - 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, 0x73, 0x6e, 0x61, 0x70, 0x73, 0x68, 0x6f, 0x74, 0x49, - 0x64, 0x12, 0x46, 0x0a, 0x07, 0x73, 0x65, 0x63, 0x72, 0x65, 0x74, 0x73, 0x18, 0x02, 0x20, 0x03, - 0x28, 0x0b, 0x32, 0x27, 0x2e, 0x63, 0x73, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x47, 0x65, 0x74, 0x53, - 0x6e, 0x61, 0x70, 0x73, 0x68, 0x6f, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x2e, 0x53, - 0x65, 0x63, 0x72, 0x65, 0x74, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x42, 0x03, 0x98, 0x42, 0x01, - 0x52, 0x07, 0x73, 0x65, 0x63, 0x72, 0x65, 0x74, 0x73, 0x1a, 0x3a, 0x0a, 0x0c, 0x53, 0x65, 0x63, - 0x72, 0x65, 0x74, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, - 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x14, 0x0a, 0x05, 0x76, - 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, - 0x65, 0x3a, 0x02, 0x38, 0x01, 0x3a, 0x03, 0xa0, 0x42, 0x01, 0x22, 0x48, 0x0a, 0x13, 0x47, 0x65, - 0x74, 0x53, 0x6e, 0x61, 0x70, 0x73, 0x68, 0x6f, 0x74, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, - 0x65, 0x12, 0x2c, 0x0a, 0x08, 0x73, 0x6e, 0x61, 0x70, 0x73, 0x68, 0x6f, 0x74, 0x18, 0x01, 0x20, - 0x01, 0x28, 0x0b, 0x32, 0x10, 0x2e, 0x63, 0x73, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x53, 0x6e, 0x61, - 0x70, 0x73, 0x68, 0x6f, 0x74, 0x52, 0x08, 0x73, 0x6e, 0x61, 0x70, 0x73, 0x68, 0x6f, 0x74, 0x3a, - 0x03, 0xa0, 0x42, 0x01, 0x22, 0xd0, 0x02, 0x0a, 0x1d, 0x43, 0x6f, 0x6e, 0x74, 0x72, 0x6f, 0x6c, - 0x6c, 0x65, 0x72, 0x45, 0x78, 0x70, 0x61, 0x6e, 0x64, 0x56, 0x6f, 0x6c, 0x75, 0x6d, 0x65, 0x52, - 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x1b, 0x0a, 0x09, 0x76, 0x6f, 0x6c, 0x75, 0x6d, 0x65, - 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x76, 0x6f, 0x6c, 0x75, 0x6d, - 0x65, 0x49, 0x64, 0x12, 0x3c, 0x0a, 0x0e, 0x63, 0x61, 0x70, 0x61, 0x63, 0x69, 0x74, 0x79, 0x5f, - 0x72, 0x61, 0x6e, 0x67, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x15, 0x2e, 0x63, 0x73, - 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x43, 0x61, 0x70, 0x61, 0x63, 0x69, 0x74, 0x79, 0x52, 0x61, 0x6e, - 0x67, 0x65, 0x52, 0x0d, 0x63, 0x61, 0x70, 0x61, 0x63, 0x69, 0x74, 0x79, 0x52, 0x61, 0x6e, 0x67, - 0x65, 0x12, 0x51, 0x0a, 0x07, 0x73, 0x65, 0x63, 0x72, 0x65, 0x74, 0x73, 0x18, 0x03, 0x20, 0x03, - 0x28, 0x0b, 0x32, 0x32, 0x2e, 0x63, 0x73, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x43, 0x6f, 0x6e, 0x74, - 0x72, 0x6f, 0x6c, 0x6c, 0x65, 0x72, 0x45, 0x78, 0x70, 0x61, 0x6e, 0x64, 0x56, 0x6f, 0x6c, 0x75, - 0x6d, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x2e, 0x53, 0x65, 0x63, 0x72, 0x65, 0x74, - 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x42, 0x03, 0x98, 0x42, 0x01, 0x52, 0x07, 0x73, 0x65, 0x63, - 0x72, 0x65, 0x74, 0x73, 0x12, 0x45, 0x0a, 0x11, 0x76, 0x6f, 0x6c, 0x75, 0x6d, 0x65, 0x5f, 0x63, - 0x61, 0x70, 0x61, 0x62, 0x69, 0x6c, 0x69, 0x74, 0x79, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, - 0x18, 0x2e, 0x63, 0x73, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x56, 0x6f, 0x6c, 0x75, 0x6d, 0x65, 0x43, - 0x61, 0x70, 0x61, 0x62, 0x69, 0x6c, 0x69, 0x74, 0x79, 0x52, 0x10, 0x76, 0x6f, 0x6c, 0x75, 0x6d, - 0x65, 0x43, 0x61, 0x70, 0x61, 0x62, 0x69, 0x6c, 0x69, 0x74, 0x79, 0x1a, 0x3a, 0x0a, 0x0c, 0x53, - 0x65, 0x63, 0x72, 0x65, 0x74, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, 0x10, 0x0a, 0x03, 0x6b, - 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x14, 0x0a, - 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x76, 0x61, - 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, 0x22, 0x7f, 0x0a, 0x1e, 0x43, 0x6f, 0x6e, 0x74, 0x72, - 0x6f, 0x6c, 0x6c, 0x65, 0x72, 0x45, 0x78, 0x70, 0x61, 0x6e, 0x64, 0x56, 0x6f, 0x6c, 0x75, 0x6d, - 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x25, 0x0a, 0x0e, 0x63, 0x61, 0x70, - 0x61, 0x63, 0x69, 0x74, 0x79, 0x5f, 0x62, 0x79, 0x74, 0x65, 0x73, 0x18, 0x01, 0x20, 0x01, 0x28, - 0x03, 0x52, 0x0d, 0x63, 0x61, 0x70, 0x61, 0x63, 0x69, 0x74, 0x79, 0x42, 0x79, 0x74, 0x65, 0x73, - 0x12, 0x36, 0x0a, 0x17, 0x6e, 0x6f, 0x64, 0x65, 0x5f, 0x65, 0x78, 0x70, 0x61, 0x6e, 0x73, 0x69, - 0x6f, 0x6e, 0x5f, 0x72, 0x65, 0x71, 0x75, 0x69, 0x72, 0x65, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, - 0x08, 0x52, 0x15, 0x6e, 0x6f, 0x64, 0x65, 0x45, 0x78, 0x70, 0x61, 0x6e, 0x73, 0x69, 0x6f, 0x6e, - 0x52, 0x65, 0x71, 0x75, 0x69, 0x72, 0x65, 0x64, 0x22, 0xf0, 0x04, 0x0a, 0x16, 0x4e, 0x6f, 0x64, - 0x65, 0x53, 0x74, 0x61, 0x67, 0x65, 0x56, 0x6f, 0x6c, 0x75, 0x6d, 0x65, 0x52, 0x65, 0x71, 0x75, - 0x65, 0x73, 0x74, 0x12, 0x1b, 0x0a, 0x09, 0x76, 0x6f, 0x6c, 0x75, 0x6d, 0x65, 0x5f, 0x69, 0x64, - 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x76, 0x6f, 0x6c, 0x75, 0x6d, 0x65, 0x49, 0x64, - 0x12, 0x5b, 0x0a, 0x0f, 0x70, 0x75, 0x62, 0x6c, 0x69, 0x73, 0x68, 0x5f, 0x63, 0x6f, 0x6e, 0x74, - 0x65, 0x78, 0x74, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x32, 0x2e, 0x63, 0x73, 0x69, 0x2e, - 0x76, 0x31, 0x2e, 0x4e, 0x6f, 0x64, 0x65, 0x53, 0x74, 0x61, 0x67, 0x65, 0x56, 0x6f, 0x6c, 0x75, - 0x6d, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x2e, 0x50, 0x75, 0x62, 0x6c, 0x69, 0x73, - 0x68, 0x43, 0x6f, 0x6e, 0x74, 0x65, 0x78, 0x74, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x0e, 0x70, - 0x75, 0x62, 0x6c, 0x69, 0x73, 0x68, 0x43, 0x6f, 0x6e, 0x74, 0x65, 0x78, 0x74, 0x12, 0x2e, 0x0a, - 0x13, 0x73, 0x74, 0x61, 0x67, 0x69, 0x6e, 0x67, 0x5f, 0x74, 0x61, 0x72, 0x67, 0x65, 0x74, 0x5f, - 0x70, 0x61, 0x74, 0x68, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x11, 0x73, 0x74, 0x61, 0x67, - 0x69, 0x6e, 0x67, 0x54, 0x61, 0x72, 0x67, 0x65, 0x74, 0x50, 0x61, 0x74, 0x68, 0x12, 0x45, 0x0a, - 0x11, 0x76, 0x6f, 0x6c, 0x75, 0x6d, 0x65, 0x5f, 0x63, 0x61, 0x70, 0x61, 0x62, 0x69, 0x6c, 0x69, - 0x74, 0x79, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x18, 0x2e, 0x63, 0x73, 0x69, 0x2e, 0x76, - 0x31, 0x2e, 0x56, 0x6f, 0x6c, 0x75, 0x6d, 0x65, 0x43, 0x61, 0x70, 0x61, 0x62, 0x69, 0x6c, 0x69, - 0x74, 0x79, 0x52, 0x10, 0x76, 0x6f, 0x6c, 0x75, 0x6d, 0x65, 0x43, 0x61, 0x70, 0x61, 0x62, 0x69, - 0x6c, 0x69, 0x74, 0x79, 0x12, 0x4a, 0x0a, 0x07, 0x73, 0x65, 0x63, 0x72, 0x65, 0x74, 0x73, 0x18, - 0x05, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x2b, 0x2e, 0x63, 0x73, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x4e, - 0x6f, 0x64, 0x65, 0x53, 0x74, 0x61, 0x67, 0x65, 0x56, 0x6f, 0x6c, 0x75, 0x6d, 0x65, 0x52, 0x65, - 0x71, 0x75, 0x65, 0x73, 0x74, 0x2e, 0x53, 0x65, 0x63, 0x72, 0x65, 0x74, 0x73, 0x45, 0x6e, 0x74, - 0x72, 0x79, 0x42, 0x03, 0x98, 0x42, 0x01, 0x52, 0x07, 0x73, 0x65, 0x63, 0x72, 0x65, 0x74, 0x73, - 0x12, 0x58, 0x0a, 0x0e, 0x76, 0x6f, 0x6c, 0x75, 0x6d, 0x65, 0x5f, 0x63, 0x6f, 0x6e, 0x74, 0x65, - 0x78, 0x74, 0x18, 0x06, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x31, 0x2e, 0x63, 0x73, 0x69, 0x2e, 0x76, - 0x31, 0x2e, 0x4e, 0x6f, 0x64, 0x65, 0x53, 0x74, 0x61, 0x67, 0x65, 0x56, 0x6f, 0x6c, 0x75, 0x6d, - 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x2e, 0x56, 0x6f, 0x6c, 0x75, 0x6d, 0x65, 0x43, - 0x6f, 0x6e, 0x74, 0x65, 0x78, 0x74, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x0d, 0x76, 0x6f, 0x6c, - 0x75, 0x6d, 0x65, 0x43, 0x6f, 0x6e, 0x74, 0x65, 0x78, 0x74, 0x1a, 0x41, 0x0a, 0x13, 0x50, 0x75, - 0x62, 0x6c, 0x69, 0x73, 0x68, 0x43, 0x6f, 0x6e, 0x74, 0x65, 0x78, 0x74, 0x45, 0x6e, 0x74, 0x72, - 0x79, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, - 0x6b, 0x65, 0x79, 0x12, 0x14, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, - 0x28, 0x09, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, 0x1a, 0x3a, 0x0a, - 0x0c, 0x53, 0x65, 0x63, 0x72, 0x65, 0x74, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, 0x10, 0x0a, - 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, - 0x14, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, - 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, 0x1a, 0x40, 0x0a, 0x12, 0x56, 0x6f, 0x6c, - 0x75, 0x6d, 0x65, 0x43, 0x6f, 0x6e, 0x74, 0x65, 0x78, 0x74, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, - 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x6b, 0x65, - 0x79, 0x12, 0x14, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, - 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, 0x22, 0x19, 0x0a, 0x17, 0x4e, - 0x6f, 0x64, 0x65, 0x53, 0x74, 0x61, 0x67, 0x65, 0x56, 0x6f, 0x6c, 0x75, 0x6d, 0x65, 0x52, 0x65, - 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x67, 0x0a, 0x18, 0x4e, 0x6f, 0x64, 0x65, 0x55, 0x6e, - 0x73, 0x74, 0x61, 0x67, 0x65, 0x56, 0x6f, 0x6c, 0x75, 0x6d, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, - 0x73, 0x74, 0x12, 0x1b, 0x0a, 0x09, 0x76, 0x6f, 0x6c, 0x75, 0x6d, 0x65, 0x5f, 0x69, 0x64, 0x18, - 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x76, 0x6f, 0x6c, 0x75, 0x6d, 0x65, 0x49, 0x64, 0x12, - 0x2e, 0x0a, 0x13, 0x73, 0x74, 0x61, 0x67, 0x69, 0x6e, 0x67, 0x5f, 0x74, 0x61, 0x72, 0x67, 0x65, - 0x74, 0x5f, 0x70, 0x61, 0x74, 0x68, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x11, 0x73, 0x74, - 0x61, 0x67, 0x69, 0x6e, 0x67, 0x54, 0x61, 0x72, 0x67, 0x65, 0x74, 0x50, 0x61, 0x74, 0x68, 0x22, - 0x1b, 0x0a, 0x19, 0x4e, 0x6f, 0x64, 0x65, 0x55, 0x6e, 0x73, 0x74, 0x61, 0x67, 0x65, 0x56, 0x6f, - 0x6c, 0x75, 0x6d, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0xb5, 0x05, 0x0a, - 0x18, 0x4e, 0x6f, 0x64, 0x65, 0x50, 0x75, 0x62, 0x6c, 0x69, 0x73, 0x68, 0x56, 0x6f, 0x6c, 0x75, - 0x6d, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x1b, 0x0a, 0x09, 0x76, 0x6f, 0x6c, - 0x75, 0x6d, 0x65, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x76, 0x6f, - 0x6c, 0x75, 0x6d, 0x65, 0x49, 0x64, 0x12, 0x5d, 0x0a, 0x0f, 0x70, 0x75, 0x62, 0x6c, 0x69, 0x73, - 0x68, 0x5f, 0x63, 0x6f, 0x6e, 0x74, 0x65, 0x78, 0x74, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, - 0x34, 0x2e, 0x63, 0x73, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x4e, 0x6f, 0x64, 0x65, 0x50, 0x75, 0x62, - 0x6c, 0x69, 0x73, 0x68, 0x56, 0x6f, 0x6c, 0x75, 0x6d, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, - 0x74, 0x2e, 0x50, 0x75, 0x62, 0x6c, 0x69, 0x73, 0x68, 0x43, 0x6f, 0x6e, 0x74, 0x65, 0x78, 0x74, - 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x0e, 0x70, 0x75, 0x62, 0x6c, 0x69, 0x73, 0x68, 0x43, 0x6f, - 0x6e, 0x74, 0x65, 0x78, 0x74, 0x12, 0x2e, 0x0a, 0x13, 0x73, 0x74, 0x61, 0x67, 0x69, 0x6e, 0x67, - 0x5f, 0x74, 0x61, 0x72, 0x67, 0x65, 0x74, 0x5f, 0x70, 0x61, 0x74, 0x68, 0x18, 0x03, 0x20, 0x01, - 0x28, 0x09, 0x52, 0x11, 0x73, 0x74, 0x61, 0x67, 0x69, 0x6e, 0x67, 0x54, 0x61, 0x72, 0x67, 0x65, - 0x74, 0x50, 0x61, 0x74, 0x68, 0x12, 0x1f, 0x0a, 0x0b, 0x74, 0x61, 0x72, 0x67, 0x65, 0x74, 0x5f, - 0x70, 0x61, 0x74, 0x68, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, 0x74, 0x61, 0x72, 0x67, - 0x65, 0x74, 0x50, 0x61, 0x74, 0x68, 0x12, 0x45, 0x0a, 0x11, 0x76, 0x6f, 0x6c, 0x75, 0x6d, 0x65, - 0x5f, 0x63, 0x61, 0x70, 0x61, 0x62, 0x69, 0x6c, 0x69, 0x74, 0x79, 0x18, 0x05, 0x20, 0x01, 0x28, - 0x0b, 0x32, 0x18, 0x2e, 0x63, 0x73, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x56, 0x6f, 0x6c, 0x75, 0x6d, - 0x65, 0x43, 0x61, 0x70, 0x61, 0x62, 0x69, 0x6c, 0x69, 0x74, 0x79, 0x52, 0x10, 0x76, 0x6f, 0x6c, - 0x75, 0x6d, 0x65, 0x43, 0x61, 0x70, 0x61, 0x62, 0x69, 0x6c, 0x69, 0x74, 0x79, 0x12, 0x1a, 0x0a, - 0x08, 0x72, 0x65, 0x61, 0x64, 0x6f, 0x6e, 0x6c, 0x79, 0x18, 0x06, 0x20, 0x01, 0x28, 0x08, 0x52, - 0x08, 0x72, 0x65, 0x61, 0x64, 0x6f, 0x6e, 0x6c, 0x79, 0x12, 0x4c, 0x0a, 0x07, 0x73, 0x65, 0x63, - 0x72, 0x65, 0x74, 0x73, 0x18, 0x07, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x2d, 0x2e, 0x63, 0x73, 0x69, - 0x2e, 0x76, 0x31, 0x2e, 0x4e, 0x6f, 0x64, 0x65, 0x50, 0x75, 0x62, 0x6c, 0x69, 0x73, 0x68, 0x56, - 0x6f, 0x6c, 0x75, 0x6d, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x2e, 0x53, 0x65, 0x63, - 0x72, 0x65, 0x74, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x42, 0x03, 0x98, 0x42, 0x01, 0x52, 0x07, - 0x73, 0x65, 0x63, 0x72, 0x65, 0x74, 0x73, 0x12, 0x5a, 0x0a, 0x0e, 0x76, 0x6f, 0x6c, 0x75, 0x6d, - 0x65, 0x5f, 0x63, 0x6f, 0x6e, 0x74, 0x65, 0x78, 0x74, 0x18, 0x08, 0x20, 0x03, 0x28, 0x0b, 0x32, - 0x33, 0x2e, 0x63, 0x73, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x4e, 0x6f, 0x64, 0x65, 0x50, 0x75, 0x62, - 0x6c, 0x69, 0x73, 0x68, 0x56, 0x6f, 0x6c, 0x75, 0x6d, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, - 0x74, 0x2e, 0x56, 0x6f, 0x6c, 0x75, 0x6d, 0x65, 0x43, 0x6f, 0x6e, 0x74, 0x65, 0x78, 0x74, 0x45, - 0x6e, 0x74, 0x72, 0x79, 0x52, 0x0d, 0x76, 0x6f, 0x6c, 0x75, 0x6d, 0x65, 0x43, 0x6f, 0x6e, 0x74, - 0x65, 0x78, 0x74, 0x1a, 0x41, 0x0a, 0x13, 0x50, 0x75, 0x62, 0x6c, 0x69, 0x73, 0x68, 0x43, 0x6f, - 0x6e, 0x74, 0x65, 0x78, 0x74, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, - 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x14, 0x0a, 0x05, - 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x76, 0x61, 0x6c, - 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, 0x1a, 0x3a, 0x0a, 0x0c, 0x53, 0x65, 0x63, 0x72, 0x65, 0x74, - 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, - 0x01, 0x28, 0x09, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x14, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, - 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, - 0x38, 0x01, 0x1a, 0x40, 0x0a, 0x12, 0x56, 0x6f, 0x6c, 0x75, 0x6d, 0x65, 0x43, 0x6f, 0x6e, 0x74, - 0x65, 0x78, 0x74, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, - 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x14, 0x0a, 0x05, 0x76, 0x61, - 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, - 0x3a, 0x02, 0x38, 0x01, 0x22, 0x1b, 0x0a, 0x19, 0x4e, 0x6f, 0x64, 0x65, 0x50, 0x75, 0x62, 0x6c, - 0x69, 0x73, 0x68, 0x56, 0x6f, 0x6c, 0x75, 0x6d, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, - 0x65, 0x22, 0x5a, 0x0a, 0x1a, 0x4e, 0x6f, 0x64, 0x65, 0x55, 0x6e, 0x70, 0x75, 0x62, 0x6c, 0x69, - 0x73, 0x68, 0x56, 0x6f, 0x6c, 0x75, 0x6d, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, - 0x1b, 0x0a, 0x09, 0x76, 0x6f, 0x6c, 0x75, 0x6d, 0x65, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, - 0x28, 0x09, 0x52, 0x08, 0x76, 0x6f, 0x6c, 0x75, 0x6d, 0x65, 0x49, 0x64, 0x12, 0x1f, 0x0a, 0x0b, - 0x74, 0x61, 0x72, 0x67, 0x65, 0x74, 0x5f, 0x70, 0x61, 0x74, 0x68, 0x18, 0x02, 0x20, 0x01, 0x28, - 0x09, 0x52, 0x0a, 0x74, 0x61, 0x72, 0x67, 0x65, 0x74, 0x50, 0x61, 0x74, 0x68, 0x22, 0x1d, 0x0a, - 0x1b, 0x4e, 0x6f, 0x64, 0x65, 0x55, 0x6e, 0x70, 0x75, 0x62, 0x6c, 0x69, 0x73, 0x68, 0x56, 0x6f, - 0x6c, 0x75, 0x6d, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x89, 0x01, 0x0a, - 0x19, 0x4e, 0x6f, 0x64, 0x65, 0x47, 0x65, 0x74, 0x56, 0x6f, 0x6c, 0x75, 0x6d, 0x65, 0x53, 0x74, - 0x61, 0x74, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x1b, 0x0a, 0x09, 0x76, 0x6f, - 0x6c, 0x75, 0x6d, 0x65, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x76, - 0x6f, 0x6c, 0x75, 0x6d, 0x65, 0x49, 0x64, 0x12, 0x1f, 0x0a, 0x0b, 0x76, 0x6f, 0x6c, 0x75, 0x6d, - 0x65, 0x5f, 0x70, 0x61, 0x74, 0x68, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, 0x76, 0x6f, - 0x6c, 0x75, 0x6d, 0x65, 0x50, 0x61, 0x74, 0x68, 0x12, 0x2e, 0x0a, 0x13, 0x73, 0x74, 0x61, 0x67, - 0x69, 0x6e, 0x67, 0x5f, 0x74, 0x61, 0x72, 0x67, 0x65, 0x74, 0x5f, 0x70, 0x61, 0x74, 0x68, 0x18, - 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x11, 0x73, 0x74, 0x61, 0x67, 0x69, 0x6e, 0x67, 0x54, 0x61, - 0x72, 0x67, 0x65, 0x74, 0x50, 0x61, 0x74, 0x68, 0x22, 0x90, 0x01, 0x0a, 0x1a, 0x4e, 0x6f, 0x64, - 0x65, 0x47, 0x65, 0x74, 0x56, 0x6f, 0x6c, 0x75, 0x6d, 0x65, 0x53, 0x74, 0x61, 0x74, 0x73, 0x52, - 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x29, 0x0a, 0x05, 0x75, 0x73, 0x61, 0x67, 0x65, - 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x13, 0x2e, 0x63, 0x73, 0x69, 0x2e, 0x76, 0x31, 0x2e, - 0x56, 0x6f, 0x6c, 0x75, 0x6d, 0x65, 0x55, 0x73, 0x61, 0x67, 0x65, 0x52, 0x05, 0x75, 0x73, 0x61, - 0x67, 0x65, 0x12, 0x47, 0x0a, 0x10, 0x76, 0x6f, 0x6c, 0x75, 0x6d, 0x65, 0x5f, 0x63, 0x6f, 0x6e, - 0x64, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x17, 0x2e, 0x63, - 0x73, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x56, 0x6f, 0x6c, 0x75, 0x6d, 0x65, 0x43, 0x6f, 0x6e, 0x64, - 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x42, 0x03, 0xa0, 0x42, 0x01, 0x52, 0x0f, 0x76, 0x6f, 0x6c, 0x75, - 0x6d, 0x65, 0x43, 0x6f, 0x6e, 0x64, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x22, 0xaf, 0x01, 0x0a, 0x0b, - 0x56, 0x6f, 0x6c, 0x75, 0x6d, 0x65, 0x55, 0x73, 0x61, 0x67, 0x65, 0x12, 0x1c, 0x0a, 0x09, 0x61, - 0x76, 0x61, 0x69, 0x6c, 0x61, 0x62, 0x6c, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x03, 0x52, 0x09, - 0x61, 0x76, 0x61, 0x69, 0x6c, 0x61, 0x62, 0x6c, 0x65, 0x12, 0x14, 0x0a, 0x05, 0x74, 0x6f, 0x74, - 0x61, 0x6c, 0x18, 0x02, 0x20, 0x01, 0x28, 0x03, 0x52, 0x05, 0x74, 0x6f, 0x74, 0x61, 0x6c, 0x12, - 0x12, 0x0a, 0x04, 0x75, 0x73, 0x65, 0x64, 0x18, 0x03, 0x20, 0x01, 0x28, 0x03, 0x52, 0x04, 0x75, - 0x73, 0x65, 0x64, 0x12, 0x2c, 0x0a, 0x04, 0x75, 0x6e, 0x69, 0x74, 0x18, 0x04, 0x20, 0x01, 0x28, - 0x0e, 0x32, 0x18, 0x2e, 0x63, 0x73, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x56, 0x6f, 0x6c, 0x75, 0x6d, - 0x65, 0x55, 0x73, 0x61, 0x67, 0x65, 0x2e, 0x55, 0x6e, 0x69, 0x74, 0x52, 0x04, 0x75, 0x6e, 0x69, - 0x74, 0x22, 0x2a, 0x0a, 0x04, 0x55, 0x6e, 0x69, 0x74, 0x12, 0x0b, 0x0a, 0x07, 0x55, 0x4e, 0x4b, - 0x4e, 0x4f, 0x57, 0x4e, 0x10, 0x00, 0x12, 0x09, 0x0a, 0x05, 0x42, 0x59, 0x54, 0x45, 0x53, 0x10, - 0x01, 0x12, 0x0a, 0x0a, 0x06, 0x49, 0x4e, 0x4f, 0x44, 0x45, 0x53, 0x10, 0x02, 0x22, 0x4c, 0x0a, - 0x0f, 0x56, 0x6f, 0x6c, 0x75, 0x6d, 0x65, 0x43, 0x6f, 0x6e, 0x64, 0x69, 0x74, 0x69, 0x6f, 0x6e, - 0x12, 0x1a, 0x0a, 0x08, 0x61, 0x62, 0x6e, 0x6f, 0x72, 0x6d, 0x61, 0x6c, 0x18, 0x01, 0x20, 0x01, - 0x28, 0x08, 0x52, 0x08, 0x61, 0x62, 0x6e, 0x6f, 0x72, 0x6d, 0x61, 0x6c, 0x12, 0x18, 0x0a, 0x07, - 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x6d, - 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x3a, 0x03, 0xa0, 0x42, 0x01, 0x22, 0x1c, 0x0a, 0x1a, 0x4e, - 0x6f, 0x64, 0x65, 0x47, 0x65, 0x74, 0x43, 0x61, 0x70, 0x61, 0x62, 0x69, 0x6c, 0x69, 0x74, 0x69, - 0x65, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x22, 0x60, 0x0a, 0x1b, 0x4e, 0x6f, 0x64, - 0x65, 0x47, 0x65, 0x74, 0x43, 0x61, 0x70, 0x61, 0x62, 0x69, 0x6c, 0x69, 0x74, 0x69, 0x65, 0x73, - 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x41, 0x0a, 0x0c, 0x63, 0x61, 0x70, 0x61, - 0x62, 0x69, 0x6c, 0x69, 0x74, 0x69, 0x65, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1d, - 0x2e, 0x63, 0x73, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x4e, 0x6f, 0x64, 0x65, 0x53, 0x65, 0x72, 0x76, - 0x69, 0x63, 0x65, 0x43, 0x61, 0x70, 0x61, 0x62, 0x69, 0x6c, 0x69, 0x74, 0x79, 0x52, 0x0c, 0x63, - 0x61, 0x70, 0x61, 0x62, 0x69, 0x6c, 0x69, 0x74, 0x69, 0x65, 0x73, 0x22, 0xc9, 0x02, 0x0a, 0x15, - 0x4e, 0x6f, 0x64, 0x65, 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x43, 0x61, 0x70, 0x61, 0x62, - 0x69, 0x6c, 0x69, 0x74, 0x79, 0x12, 0x35, 0x0a, 0x03, 0x72, 0x70, 0x63, 0x18, 0x01, 0x20, 0x01, - 0x28, 0x0b, 0x32, 0x21, 0x2e, 0x63, 0x73, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x4e, 0x6f, 0x64, 0x65, - 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x43, 0x61, 0x70, 0x61, 0x62, 0x69, 0x6c, 0x69, 0x74, - 0x79, 0x2e, 0x52, 0x50, 0x43, 0x48, 0x00, 0x52, 0x03, 0x72, 0x70, 0x63, 0x1a, 0xf0, 0x01, 0x0a, - 0x03, 0x52, 0x50, 0x43, 0x12, 0x3a, 0x0a, 0x04, 0x74, 0x79, 0x70, 0x65, 0x18, 0x01, 0x20, 0x01, - 0x28, 0x0e, 0x32, 0x26, 0x2e, 0x63, 0x73, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x4e, 0x6f, 0x64, 0x65, - 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x43, 0x61, 0x70, 0x61, 0x62, 0x69, 0x6c, 0x69, 0x74, - 0x79, 0x2e, 0x52, 0x50, 0x43, 0x2e, 0x54, 0x79, 0x70, 0x65, 0x52, 0x04, 0x74, 0x79, 0x70, 0x65, - 0x22, 0xac, 0x01, 0x0a, 0x04, 0x54, 0x79, 0x70, 0x65, 0x12, 0x0b, 0x0a, 0x07, 0x55, 0x4e, 0x4b, - 0x4e, 0x4f, 0x57, 0x4e, 0x10, 0x00, 0x12, 0x18, 0x0a, 0x14, 0x53, 0x54, 0x41, 0x47, 0x45, 0x5f, - 0x55, 0x4e, 0x53, 0x54, 0x41, 0x47, 0x45, 0x5f, 0x56, 0x4f, 0x4c, 0x55, 0x4d, 0x45, 0x10, 0x01, - 0x12, 0x14, 0x0a, 0x10, 0x47, 0x45, 0x54, 0x5f, 0x56, 0x4f, 0x4c, 0x55, 0x4d, 0x45, 0x5f, 0x53, - 0x54, 0x41, 0x54, 0x53, 0x10, 0x02, 0x12, 0x11, 0x0a, 0x0d, 0x45, 0x58, 0x50, 0x41, 0x4e, 0x44, - 0x5f, 0x56, 0x4f, 0x4c, 0x55, 0x4d, 0x45, 0x10, 0x03, 0x12, 0x19, 0x0a, 0x10, 0x56, 0x4f, 0x4c, - 0x55, 0x4d, 0x45, 0x5f, 0x43, 0x4f, 0x4e, 0x44, 0x49, 0x54, 0x49, 0x4f, 0x4e, 0x10, 0x04, 0x1a, - 0x03, 0xa0, 0x42, 0x01, 0x12, 0x21, 0x0a, 0x18, 0x53, 0x49, 0x4e, 0x47, 0x4c, 0x45, 0x5f, 0x4e, - 0x4f, 0x44, 0x45, 0x5f, 0x4d, 0x55, 0x4c, 0x54, 0x49, 0x5f, 0x57, 0x52, 0x49, 0x54, 0x45, 0x52, - 0x10, 0x05, 0x1a, 0x03, 0xa0, 0x42, 0x01, 0x12, 0x16, 0x0a, 0x12, 0x56, 0x4f, 0x4c, 0x55, 0x4d, - 0x45, 0x5f, 0x4d, 0x4f, 0x55, 0x4e, 0x54, 0x5f, 0x47, 0x52, 0x4f, 0x55, 0x50, 0x10, 0x06, 0x42, - 0x06, 0x0a, 0x04, 0x74, 0x79, 0x70, 0x65, 0x22, 0x14, 0x0a, 0x12, 0x4e, 0x6f, 0x64, 0x65, 0x47, - 0x65, 0x74, 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x22, 0xa2, 0x01, - 0x0a, 0x13, 0x4e, 0x6f, 0x64, 0x65, 0x47, 0x65, 0x74, 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x65, 0x73, - 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x17, 0x0a, 0x07, 0x6e, 0x6f, 0x64, 0x65, 0x5f, 0x69, 0x64, - 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x6e, 0x6f, 0x64, 0x65, 0x49, 0x64, 0x12, 0x2f, - 0x0a, 0x14, 0x6d, 0x61, 0x78, 0x5f, 0x76, 0x6f, 0x6c, 0x75, 0x6d, 0x65, 0x73, 0x5f, 0x70, 0x65, - 0x72, 0x5f, 0x6e, 0x6f, 0x64, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x03, 0x52, 0x11, 0x6d, 0x61, - 0x78, 0x56, 0x6f, 0x6c, 0x75, 0x6d, 0x65, 0x73, 0x50, 0x65, 0x72, 0x4e, 0x6f, 0x64, 0x65, 0x12, - 0x41, 0x0a, 0x13, 0x61, 0x63, 0x63, 0x65, 0x73, 0x73, 0x69, 0x62, 0x6c, 0x65, 0x5f, 0x74, 0x6f, - 0x70, 0x6f, 0x6c, 0x6f, 0x67, 0x79, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x10, 0x2e, 0x63, - 0x73, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x54, 0x6f, 0x70, 0x6f, 0x6c, 0x6f, 0x67, 0x79, 0x52, 0x12, - 0x61, 0x63, 0x63, 0x65, 0x73, 0x73, 0x69, 0x62, 0x6c, 0x65, 0x54, 0x6f, 0x70, 0x6f, 0x6c, 0x6f, - 0x67, 0x79, 0x22, 0x98, 0x03, 0x0a, 0x17, 0x4e, 0x6f, 0x64, 0x65, 0x45, 0x78, 0x70, 0x61, 0x6e, - 0x64, 0x56, 0x6f, 0x6c, 0x75, 0x6d, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x1b, - 0x0a, 0x09, 0x76, 0x6f, 0x6c, 0x75, 0x6d, 0x65, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, - 0x09, 0x52, 0x08, 0x76, 0x6f, 0x6c, 0x75, 0x6d, 0x65, 0x49, 0x64, 0x12, 0x1f, 0x0a, 0x0b, 0x76, - 0x6f, 0x6c, 0x75, 0x6d, 0x65, 0x5f, 0x70, 0x61, 0x74, 0x68, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, - 0x52, 0x0a, 0x76, 0x6f, 0x6c, 0x75, 0x6d, 0x65, 0x50, 0x61, 0x74, 0x68, 0x12, 0x3c, 0x0a, 0x0e, - 0x63, 0x61, 0x70, 0x61, 0x63, 0x69, 0x74, 0x79, 0x5f, 0x72, 0x61, 0x6e, 0x67, 0x65, 0x18, 0x03, - 0x20, 0x01, 0x28, 0x0b, 0x32, 0x15, 0x2e, 0x63, 0x73, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x43, 0x61, - 0x70, 0x61, 0x63, 0x69, 0x74, 0x79, 0x52, 0x61, 0x6e, 0x67, 0x65, 0x52, 0x0d, 0x63, 0x61, 0x70, - 0x61, 0x63, 0x69, 0x74, 0x79, 0x52, 0x61, 0x6e, 0x67, 0x65, 0x12, 0x2e, 0x0a, 0x13, 0x73, 0x74, - 0x61, 0x67, 0x69, 0x6e, 0x67, 0x5f, 0x74, 0x61, 0x72, 0x67, 0x65, 0x74, 0x5f, 0x70, 0x61, 0x74, - 0x68, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x11, 0x73, 0x74, 0x61, 0x67, 0x69, 0x6e, 0x67, - 0x54, 0x61, 0x72, 0x67, 0x65, 0x74, 0x50, 0x61, 0x74, 0x68, 0x12, 0x45, 0x0a, 0x11, 0x76, 0x6f, - 0x6c, 0x75, 0x6d, 0x65, 0x5f, 0x63, 0x61, 0x70, 0x61, 0x62, 0x69, 0x6c, 0x69, 0x74, 0x79, 0x18, - 0x05, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x18, 0x2e, 0x63, 0x73, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x56, - 0x6f, 0x6c, 0x75, 0x6d, 0x65, 0x43, 0x61, 0x70, 0x61, 0x62, 0x69, 0x6c, 0x69, 0x74, 0x79, 0x52, - 0x10, 0x76, 0x6f, 0x6c, 0x75, 0x6d, 0x65, 0x43, 0x61, 0x70, 0x61, 0x62, 0x69, 0x6c, 0x69, 0x74, - 0x79, 0x12, 0x4e, 0x0a, 0x07, 0x73, 0x65, 0x63, 0x72, 0x65, 0x74, 0x73, 0x18, 0x06, 0x20, 0x03, - 0x28, 0x0b, 0x32, 0x2c, 0x2e, 0x63, 0x73, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x4e, 0x6f, 0x64, 0x65, - 0x45, 0x78, 0x70, 0x61, 0x6e, 0x64, 0x56, 0x6f, 0x6c, 0x75, 0x6d, 0x65, 0x52, 0x65, 0x71, 0x75, - 0x65, 0x73, 0x74, 0x2e, 0x53, 0x65, 0x63, 0x72, 0x65, 0x74, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, - 0x42, 0x06, 0x98, 0x42, 0x01, 0xa0, 0x42, 0x01, 0x52, 0x07, 0x73, 0x65, 0x63, 0x72, 0x65, 0x74, - 0x73, 0x1a, 0x3a, 0x0a, 0x0c, 0x53, 0x65, 0x63, 0x72, 0x65, 0x74, 0x73, 0x45, 0x6e, 0x74, 0x72, - 0x79, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, - 0x6b, 0x65, 0x79, 0x12, 0x14, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, - 0x28, 0x09, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, 0x22, 0x41, 0x0a, - 0x18, 0x4e, 0x6f, 0x64, 0x65, 0x45, 0x78, 0x70, 0x61, 0x6e, 0x64, 0x56, 0x6f, 0x6c, 0x75, 0x6d, - 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x25, 0x0a, 0x0e, 0x63, 0x61, 0x70, - 0x61, 0x63, 0x69, 0x74, 0x79, 0x5f, 0x62, 0x79, 0x74, 0x65, 0x73, 0x18, 0x01, 0x20, 0x01, 0x28, - 0x03, 0x52, 0x0d, 0x63, 0x61, 0x70, 0x61, 0x63, 0x69, 0x74, 0x79, 0x42, 0x79, 0x74, 0x65, 0x73, - 0x22, 0x27, 0x0a, 0x25, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x43, 0x6f, 0x6e, 0x74, 0x72, 0x6f, 0x6c, - 0x6c, 0x65, 0x72, 0x47, 0x65, 0x74, 0x43, 0x61, 0x70, 0x61, 0x62, 0x69, 0x6c, 0x69, 0x74, 0x69, - 0x65, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x22, 0x76, 0x0a, 0x26, 0x47, 0x72, 0x6f, - 0x75, 0x70, 0x43, 0x6f, 0x6e, 0x74, 0x72, 0x6f, 0x6c, 0x6c, 0x65, 0x72, 0x47, 0x65, 0x74, 0x43, - 0x61, 0x70, 0x61, 0x62, 0x69, 0x6c, 0x69, 0x74, 0x69, 0x65, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, - 0x6e, 0x73, 0x65, 0x12, 0x4c, 0x0a, 0x0c, 0x63, 0x61, 0x70, 0x61, 0x62, 0x69, 0x6c, 0x69, 0x74, - 0x69, 0x65, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x28, 0x2e, 0x63, 0x73, 0x69, 0x2e, - 0x76, 0x31, 0x2e, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x43, 0x6f, 0x6e, 0x74, 0x72, 0x6f, 0x6c, 0x6c, - 0x65, 0x72, 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x43, 0x61, 0x70, 0x61, 0x62, 0x69, 0x6c, - 0x69, 0x74, 0x79, 0x52, 0x0c, 0x63, 0x61, 0x70, 0x61, 0x62, 0x69, 0x6c, 0x69, 0x74, 0x69, 0x65, - 0x73, 0x22, 0xfd, 0x01, 0x0a, 0x20, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x43, 0x6f, 0x6e, 0x74, 0x72, - 0x6f, 0x6c, 0x6c, 0x65, 0x72, 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x43, 0x61, 0x70, 0x61, - 0x62, 0x69, 0x6c, 0x69, 0x74, 0x79, 0x12, 0x40, 0x0a, 0x03, 0x72, 0x70, 0x63, 0x18, 0x01, 0x20, - 0x01, 0x28, 0x0b, 0x32, 0x2c, 0x2e, 0x63, 0x73, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x47, 0x72, 0x6f, - 0x75, 0x70, 0x43, 0x6f, 0x6e, 0x74, 0x72, 0x6f, 0x6c, 0x6c, 0x65, 0x72, 0x53, 0x65, 0x72, 0x76, - 0x69, 0x63, 0x65, 0x43, 0x61, 0x70, 0x61, 0x62, 0x69, 0x6c, 0x69, 0x74, 0x79, 0x2e, 0x52, 0x50, - 0x43, 0x48, 0x00, 0x52, 0x03, 0x72, 0x70, 0x63, 0x1a, 0x8e, 0x01, 0x0a, 0x03, 0x52, 0x50, 0x43, - 0x12, 0x45, 0x0a, 0x04, 0x74, 0x79, 0x70, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x31, - 0x2e, 0x63, 0x73, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x43, 0x6f, 0x6e, - 0x74, 0x72, 0x6f, 0x6c, 0x6c, 0x65, 0x72, 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x43, 0x61, - 0x70, 0x61, 0x62, 0x69, 0x6c, 0x69, 0x74, 0x79, 0x2e, 0x52, 0x50, 0x43, 0x2e, 0x54, 0x79, 0x70, - 0x65, 0x52, 0x04, 0x74, 0x79, 0x70, 0x65, 0x22, 0x40, 0x0a, 0x04, 0x54, 0x79, 0x70, 0x65, 0x12, - 0x0b, 0x0a, 0x07, 0x55, 0x4e, 0x4b, 0x4e, 0x4f, 0x57, 0x4e, 0x10, 0x00, 0x12, 0x2b, 0x0a, 0x27, - 0x43, 0x52, 0x45, 0x41, 0x54, 0x45, 0x5f, 0x44, 0x45, 0x4c, 0x45, 0x54, 0x45, 0x5f, 0x47, 0x45, - 0x54, 0x5f, 0x56, 0x4f, 0x4c, 0x55, 0x4d, 0x45, 0x5f, 0x47, 0x52, 0x4f, 0x55, 0x50, 0x5f, 0x53, - 0x4e, 0x41, 0x50, 0x53, 0x48, 0x4f, 0x54, 0x10, 0x01, 0x42, 0x06, 0x0a, 0x04, 0x74, 0x79, 0x70, - 0x65, 0x22, 0x8d, 0x03, 0x0a, 0x20, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x56, 0x6f, 0x6c, 0x75, - 0x6d, 0x65, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x53, 0x6e, 0x61, 0x70, 0x73, 0x68, 0x6f, 0x74, 0x52, - 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, - 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x2a, 0x0a, 0x11, 0x73, 0x6f, - 0x75, 0x72, 0x63, 0x65, 0x5f, 0x76, 0x6f, 0x6c, 0x75, 0x6d, 0x65, 0x5f, 0x69, 0x64, 0x73, 0x18, - 0x02, 0x20, 0x03, 0x28, 0x09, 0x52, 0x0f, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x56, 0x6f, 0x6c, - 0x75, 0x6d, 0x65, 0x49, 0x64, 0x73, 0x12, 0x54, 0x0a, 0x07, 0x73, 0x65, 0x63, 0x72, 0x65, 0x74, - 0x73, 0x18, 0x03, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x35, 0x2e, 0x63, 0x73, 0x69, 0x2e, 0x76, 0x31, - 0x2e, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x56, 0x6f, 0x6c, 0x75, 0x6d, 0x65, 0x47, 0x72, 0x6f, - 0x75, 0x70, 0x53, 0x6e, 0x61, 0x70, 0x73, 0x68, 0x6f, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, - 0x74, 0x2e, 0x53, 0x65, 0x63, 0x72, 0x65, 0x74, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x42, 0x03, - 0x98, 0x42, 0x01, 0x52, 0x07, 0x73, 0x65, 0x63, 0x72, 0x65, 0x74, 0x73, 0x12, 0x58, 0x0a, 0x0a, - 0x70, 0x61, 0x72, 0x61, 0x6d, 0x65, 0x74, 0x65, 0x72, 0x73, 0x18, 0x04, 0x20, 0x03, 0x28, 0x0b, - 0x32, 0x38, 0x2e, 0x63, 0x73, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, - 0x56, 0x6f, 0x6c, 0x75, 0x6d, 0x65, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x53, 0x6e, 0x61, 0x70, 0x73, - 0x68, 0x6f, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x2e, 0x50, 0x61, 0x72, 0x61, 0x6d, - 0x65, 0x74, 0x65, 0x72, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x0a, 0x70, 0x61, 0x72, 0x61, - 0x6d, 0x65, 0x74, 0x65, 0x72, 0x73, 0x1a, 0x3a, 0x0a, 0x0c, 0x53, 0x65, 0x63, 0x72, 0x65, 0x74, - 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, - 0x01, 0x28, 0x09, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x14, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, - 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, - 0x38, 0x01, 0x1a, 0x3d, 0x0a, 0x0f, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x65, 0x74, 0x65, 0x72, 0x73, - 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, - 0x28, 0x09, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x14, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, - 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, - 0x01, 0x22, 0x67, 0x0a, 0x21, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x56, 0x6f, 0x6c, 0x75, 0x6d, - 0x65, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x53, 0x6e, 0x61, 0x70, 0x73, 0x68, 0x6f, 0x74, 0x52, 0x65, - 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x42, 0x0a, 0x0e, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x5f, - 0x73, 0x6e, 0x61, 0x70, 0x73, 0x68, 0x6f, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1b, - 0x2e, 0x63, 0x73, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x56, 0x6f, 0x6c, 0x75, 0x6d, 0x65, 0x47, 0x72, - 0x6f, 0x75, 0x70, 0x53, 0x6e, 0x61, 0x70, 0x73, 0x68, 0x6f, 0x74, 0x52, 0x0d, 0x67, 0x72, 0x6f, - 0x75, 0x70, 0x53, 0x6e, 0x61, 0x70, 0x73, 0x68, 0x6f, 0x74, 0x22, 0xd4, 0x01, 0x0a, 0x13, 0x56, - 0x6f, 0x6c, 0x75, 0x6d, 0x65, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x53, 0x6e, 0x61, 0x70, 0x73, 0x68, - 0x6f, 0x74, 0x12, 0x2a, 0x0a, 0x11, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x5f, 0x73, 0x6e, 0x61, 0x70, - 0x73, 0x68, 0x6f, 0x74, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0f, 0x67, - 0x72, 0x6f, 0x75, 0x70, 0x53, 0x6e, 0x61, 0x70, 0x73, 0x68, 0x6f, 0x74, 0x49, 0x64, 0x12, 0x2e, - 0x0a, 0x09, 0x73, 0x6e, 0x61, 0x70, 0x73, 0x68, 0x6f, 0x74, 0x73, 0x18, 0x02, 0x20, 0x03, 0x28, - 0x0b, 0x32, 0x10, 0x2e, 0x63, 0x73, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x53, 0x6e, 0x61, 0x70, 0x73, - 0x68, 0x6f, 0x74, 0x52, 0x09, 0x73, 0x6e, 0x61, 0x70, 0x73, 0x68, 0x6f, 0x74, 0x73, 0x12, 0x3f, - 0x0a, 0x0d, 0x63, 0x72, 0x65, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x74, 0x69, 0x6d, 0x65, 0x18, - 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, - 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, - 0x70, 0x52, 0x0c, 0x63, 0x72, 0x65, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x54, 0x69, 0x6d, 0x65, 0x12, - 0x20, 0x0a, 0x0c, 0x72, 0x65, 0x61, 0x64, 0x79, 0x5f, 0x74, 0x6f, 0x5f, 0x75, 0x73, 0x65, 0x18, - 0x04, 0x20, 0x01, 0x28, 0x08, 0x52, 0x0a, 0x72, 0x65, 0x61, 0x64, 0x79, 0x54, 0x6f, 0x55, 0x73, - 0x65, 0x22, 0x83, 0x02, 0x0a, 0x20, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x56, 0x6f, 0x6c, 0x75, - 0x6d, 0x65, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x53, 0x6e, 0x61, 0x70, 0x73, 0x68, 0x6f, 0x74, 0x52, - 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x2a, 0x0a, 0x11, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x5f, - 0x73, 0x6e, 0x61, 0x70, 0x73, 0x68, 0x6f, 0x74, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, - 0x09, 0x52, 0x0f, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x53, 0x6e, 0x61, 0x70, 0x73, 0x68, 0x6f, 0x74, - 0x49, 0x64, 0x12, 0x21, 0x0a, 0x0c, 0x73, 0x6e, 0x61, 0x70, 0x73, 0x68, 0x6f, 0x74, 0x5f, 0x69, - 0x64, 0x73, 0x18, 0x02, 0x20, 0x03, 0x28, 0x09, 0x52, 0x0b, 0x73, 0x6e, 0x61, 0x70, 0x73, 0x68, - 0x6f, 0x74, 0x49, 0x64, 0x73, 0x12, 0x54, 0x0a, 0x07, 0x73, 0x65, 0x63, 0x72, 0x65, 0x74, 0x73, - 0x18, 0x03, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x35, 0x2e, 0x63, 0x73, 0x69, 0x2e, 0x76, 0x31, 0x2e, - 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x56, 0x6f, 0x6c, 0x75, 0x6d, 0x65, 0x47, 0x72, 0x6f, 0x75, - 0x70, 0x53, 0x6e, 0x61, 0x70, 0x73, 0x68, 0x6f, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, - 0x2e, 0x53, 0x65, 0x63, 0x72, 0x65, 0x74, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x42, 0x03, 0x98, - 0x42, 0x01, 0x52, 0x07, 0x73, 0x65, 0x63, 0x72, 0x65, 0x74, 0x73, 0x1a, 0x3a, 0x0a, 0x0c, 0x53, - 0x65, 0x63, 0x72, 0x65, 0x74, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, 0x10, 0x0a, 0x03, 0x6b, - 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x14, 0x0a, - 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x76, 0x61, - 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, 0x22, 0x23, 0x0a, 0x21, 0x44, 0x65, 0x6c, 0x65, 0x74, - 0x65, 0x56, 0x6f, 0x6c, 0x75, 0x6d, 0x65, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x53, 0x6e, 0x61, 0x70, - 0x73, 0x68, 0x6f, 0x74, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0xfd, 0x01, 0x0a, - 0x1d, 0x47, 0x65, 0x74, 0x56, 0x6f, 0x6c, 0x75, 0x6d, 0x65, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x53, - 0x6e, 0x61, 0x70, 0x73, 0x68, 0x6f, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x2a, - 0x0a, 0x11, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x5f, 0x73, 0x6e, 0x61, 0x70, 0x73, 0x68, 0x6f, 0x74, - 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0f, 0x67, 0x72, 0x6f, 0x75, 0x70, - 0x53, 0x6e, 0x61, 0x70, 0x73, 0x68, 0x6f, 0x74, 0x49, 0x64, 0x12, 0x21, 0x0a, 0x0c, 0x73, 0x6e, - 0x61, 0x70, 0x73, 0x68, 0x6f, 0x74, 0x5f, 0x69, 0x64, 0x73, 0x18, 0x02, 0x20, 0x03, 0x28, 0x09, - 0x52, 0x0b, 0x73, 0x6e, 0x61, 0x70, 0x73, 0x68, 0x6f, 0x74, 0x49, 0x64, 0x73, 0x12, 0x51, 0x0a, - 0x07, 0x73, 0x65, 0x63, 0x72, 0x65, 0x74, 0x73, 0x18, 0x03, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x32, - 0x2e, 0x63, 0x73, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x47, 0x65, 0x74, 0x56, 0x6f, 0x6c, 0x75, 0x6d, - 0x65, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x53, 0x6e, 0x61, 0x70, 0x73, 0x68, 0x6f, 0x74, 0x52, 0x65, - 0x71, 0x75, 0x65, 0x73, 0x74, 0x2e, 0x53, 0x65, 0x63, 0x72, 0x65, 0x74, 0x73, 0x45, 0x6e, 0x74, - 0x72, 0x79, 0x42, 0x03, 0x98, 0x42, 0x01, 0x52, 0x07, 0x73, 0x65, 0x63, 0x72, 0x65, 0x74, 0x73, - 0x1a, 0x3a, 0x0a, 0x0c, 0x53, 0x65, 0x63, 0x72, 0x65, 0x74, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, - 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x6b, - 0x65, 0x79, 0x12, 0x14, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, - 0x09, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, 0x22, 0x64, 0x0a, 0x1e, - 0x47, 0x65, 0x74, 0x56, 0x6f, 0x6c, 0x75, 0x6d, 0x65, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x53, 0x6e, - 0x61, 0x70, 0x73, 0x68, 0x6f, 0x74, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x42, - 0x0a, 0x0e, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x5f, 0x73, 0x6e, 0x61, 0x70, 0x73, 0x68, 0x6f, 0x74, - 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1b, 0x2e, 0x63, 0x73, 0x69, 0x2e, 0x76, 0x31, 0x2e, - 0x56, 0x6f, 0x6c, 0x75, 0x6d, 0x65, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x53, 0x6e, 0x61, 0x70, 0x73, - 0x68, 0x6f, 0x74, 0x52, 0x0d, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x53, 0x6e, 0x61, 0x70, 0x73, 0x68, - 0x6f, 0x74, 0x22, 0x4f, 0x0a, 0x0d, 0x42, 0x6c, 0x6f, 0x63, 0x6b, 0x4d, 0x65, 0x74, 0x61, 0x64, - 0x61, 0x74, 0x61, 0x12, 0x1f, 0x0a, 0x0b, 0x62, 0x79, 0x74, 0x65, 0x5f, 0x6f, 0x66, 0x66, 0x73, - 0x65, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x03, 0x52, 0x0a, 0x62, 0x79, 0x74, 0x65, 0x4f, 0x66, - 0x66, 0x73, 0x65, 0x74, 0x12, 0x1d, 0x0a, 0x0a, 0x73, 0x69, 0x7a, 0x65, 0x5f, 0x62, 0x79, 0x74, - 0x65, 0x73, 0x18, 0x02, 0x20, 0x01, 0x28, 0x03, 0x52, 0x09, 0x73, 0x69, 0x7a, 0x65, 0x42, 0x79, - 0x74, 0x65, 0x73, 0x22, 0x95, 0x02, 0x0a, 0x1b, 0x47, 0x65, 0x74, 0x4d, 0x65, 0x74, 0x61, 0x64, - 0x61, 0x74, 0x61, 0x41, 0x6c, 0x6c, 0x6f, 0x63, 0x61, 0x74, 0x65, 0x64, 0x52, 0x65, 0x71, 0x75, - 0x65, 0x73, 0x74, 0x12, 0x1f, 0x0a, 0x0b, 0x73, 0x6e, 0x61, 0x70, 0x73, 0x68, 0x6f, 0x74, 0x5f, - 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, 0x73, 0x6e, 0x61, 0x70, 0x73, 0x68, - 0x6f, 0x74, 0x49, 0x64, 0x12, 0x27, 0x0a, 0x0f, 0x73, 0x74, 0x61, 0x72, 0x74, 0x69, 0x6e, 0x67, - 0x5f, 0x6f, 0x66, 0x66, 0x73, 0x65, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x03, 0x52, 0x0e, 0x73, - 0x74, 0x61, 0x72, 0x74, 0x69, 0x6e, 0x67, 0x4f, 0x66, 0x66, 0x73, 0x65, 0x74, 0x12, 0x1f, 0x0a, - 0x0b, 0x6d, 0x61, 0x78, 0x5f, 0x72, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x73, 0x18, 0x03, 0x20, 0x01, - 0x28, 0x05, 0x52, 0x0a, 0x6d, 0x61, 0x78, 0x52, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x73, 0x12, 0x4f, - 0x0a, 0x07, 0x73, 0x65, 0x63, 0x72, 0x65, 0x74, 0x73, 0x18, 0x04, 0x20, 0x03, 0x28, 0x0b, 0x32, - 0x30, 0x2e, 0x63, 0x73, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x47, 0x65, 0x74, 0x4d, 0x65, 0x74, 0x61, - 0x64, 0x61, 0x74, 0x61, 0x41, 0x6c, 0x6c, 0x6f, 0x63, 0x61, 0x74, 0x65, 0x64, 0x52, 0x65, 0x71, - 0x75, 0x65, 0x73, 0x74, 0x2e, 0x53, 0x65, 0x63, 0x72, 0x65, 0x74, 0x73, 0x45, 0x6e, 0x74, 0x72, - 0x79, 0x42, 0x03, 0x98, 0x42, 0x01, 0x52, 0x07, 0x73, 0x65, 0x63, 0x72, 0x65, 0x74, 0x73, 0x1a, - 0x3a, 0x0a, 0x0c, 0x53, 0x65, 0x63, 0x72, 0x65, 0x74, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, - 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x6b, 0x65, - 0x79, 0x12, 0x14, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, - 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, 0x22, 0xdb, 0x01, 0x0a, 0x1c, - 0x47, 0x65, 0x74, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x41, 0x6c, 0x6c, 0x6f, 0x63, - 0x61, 0x74, 0x65, 0x64, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x49, 0x0a, 0x13, - 0x62, 0x6c, 0x6f, 0x63, 0x6b, 0x5f, 0x6d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x5f, 0x74, - 0x79, 0x70, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x19, 0x2e, 0x63, 0x73, 0x69, 0x2e, - 0x76, 0x31, 0x2e, 0x42, 0x6c, 0x6f, 0x63, 0x6b, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, - 0x54, 0x79, 0x70, 0x65, 0x52, 0x11, 0x62, 0x6c, 0x6f, 0x63, 0x6b, 0x4d, 0x65, 0x74, 0x61, 0x64, - 0x61, 0x74, 0x61, 0x54, 0x79, 0x70, 0x65, 0x12, 0x32, 0x0a, 0x15, 0x76, 0x6f, 0x6c, 0x75, 0x6d, - 0x65, 0x5f, 0x63, 0x61, 0x70, 0x61, 0x63, 0x69, 0x74, 0x79, 0x5f, 0x62, 0x79, 0x74, 0x65, 0x73, - 0x18, 0x02, 0x20, 0x01, 0x28, 0x03, 0x52, 0x13, 0x76, 0x6f, 0x6c, 0x75, 0x6d, 0x65, 0x43, 0x61, - 0x70, 0x61, 0x63, 0x69, 0x74, 0x79, 0x42, 0x79, 0x74, 0x65, 0x73, 0x12, 0x3c, 0x0a, 0x0e, 0x62, - 0x6c, 0x6f, 0x63, 0x6b, 0x5f, 0x6d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x18, 0x03, 0x20, - 0x03, 0x28, 0x0b, 0x32, 0x15, 0x2e, 0x63, 0x73, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x42, 0x6c, 0x6f, - 0x63, 0x6b, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x52, 0x0d, 0x62, 0x6c, 0x6f, 0x63, - 0x6b, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x22, 0xc4, 0x02, 0x0a, 0x17, 0x47, 0x65, - 0x74, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x44, 0x65, 0x6c, 0x74, 0x61, 0x52, 0x65, - 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x28, 0x0a, 0x10, 0x62, 0x61, 0x73, 0x65, 0x5f, 0x73, 0x6e, - 0x61, 0x70, 0x73, 0x68, 0x6f, 0x74, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, - 0x0e, 0x62, 0x61, 0x73, 0x65, 0x53, 0x6e, 0x61, 0x70, 0x73, 0x68, 0x6f, 0x74, 0x49, 0x64, 0x12, - 0x2c, 0x0a, 0x12, 0x74, 0x61, 0x72, 0x67, 0x65, 0x74, 0x5f, 0x73, 0x6e, 0x61, 0x70, 0x73, 0x68, - 0x6f, 0x74, 0x5f, 0x69, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x10, 0x74, 0x61, 0x72, - 0x67, 0x65, 0x74, 0x53, 0x6e, 0x61, 0x70, 0x73, 0x68, 0x6f, 0x74, 0x49, 0x64, 0x12, 0x27, 0x0a, - 0x0f, 0x73, 0x74, 0x61, 0x72, 0x74, 0x69, 0x6e, 0x67, 0x5f, 0x6f, 0x66, 0x66, 0x73, 0x65, 0x74, - 0x18, 0x03, 0x20, 0x01, 0x28, 0x03, 0x52, 0x0e, 0x73, 0x74, 0x61, 0x72, 0x74, 0x69, 0x6e, 0x67, - 0x4f, 0x66, 0x66, 0x73, 0x65, 0x74, 0x12, 0x1f, 0x0a, 0x0b, 0x6d, 0x61, 0x78, 0x5f, 0x72, 0x65, - 0x73, 0x75, 0x6c, 0x74, 0x73, 0x18, 0x04, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0a, 0x6d, 0x61, 0x78, - 0x52, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x73, 0x12, 0x4b, 0x0a, 0x07, 0x73, 0x65, 0x63, 0x72, 0x65, - 0x74, 0x73, 0x18, 0x05, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x2c, 0x2e, 0x63, 0x73, 0x69, 0x2e, 0x76, - 0x31, 0x2e, 0x47, 0x65, 0x74, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x44, 0x65, 0x6c, - 0x74, 0x61, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x2e, 0x53, 0x65, 0x63, 0x72, 0x65, 0x74, - 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x42, 0x03, 0x98, 0x42, 0x01, 0x52, 0x07, 0x73, 0x65, 0x63, - 0x72, 0x65, 0x74, 0x73, 0x1a, 0x3a, 0x0a, 0x0c, 0x53, 0x65, 0x63, 0x72, 0x65, 0x74, 0x73, 0x45, - 0x6e, 0x74, 0x72, 0x79, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, - 0x09, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x14, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, - 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, - 0x22, 0xd7, 0x01, 0x0a, 0x18, 0x47, 0x65, 0x74, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, - 0x44, 0x65, 0x6c, 0x74, 0x61, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x49, 0x0a, - 0x13, 0x62, 0x6c, 0x6f, 0x63, 0x6b, 0x5f, 0x6d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x5f, - 0x74, 0x79, 0x70, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x19, 0x2e, 0x63, 0x73, 0x69, - 0x2e, 0x76, 0x31, 0x2e, 0x42, 0x6c, 0x6f, 0x63, 0x6b, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, - 0x61, 0x54, 0x79, 0x70, 0x65, 0x52, 0x11, 0x62, 0x6c, 0x6f, 0x63, 0x6b, 0x4d, 0x65, 0x74, 0x61, - 0x64, 0x61, 0x74, 0x61, 0x54, 0x79, 0x70, 0x65, 0x12, 0x32, 0x0a, 0x15, 0x76, 0x6f, 0x6c, 0x75, - 0x6d, 0x65, 0x5f, 0x63, 0x61, 0x70, 0x61, 0x63, 0x69, 0x74, 0x79, 0x5f, 0x62, 0x79, 0x74, 0x65, - 0x73, 0x18, 0x02, 0x20, 0x01, 0x28, 0x03, 0x52, 0x13, 0x76, 0x6f, 0x6c, 0x75, 0x6d, 0x65, 0x43, - 0x61, 0x70, 0x61, 0x63, 0x69, 0x74, 0x79, 0x42, 0x79, 0x74, 0x65, 0x73, 0x12, 0x3c, 0x0a, 0x0e, - 0x62, 0x6c, 0x6f, 0x63, 0x6b, 0x5f, 0x6d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x18, 0x03, - 0x20, 0x03, 0x28, 0x0b, 0x32, 0x15, 0x2e, 0x63, 0x73, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x42, 0x6c, - 0x6f, 0x63, 0x6b, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x52, 0x0d, 0x62, 0x6c, 0x6f, - 0x63, 0x6b, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x2a, 0x47, 0x0a, 0x11, 0x42, 0x6c, - 0x6f, 0x63, 0x6b, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x54, 0x79, 0x70, 0x65, 0x12, - 0x0b, 0x0a, 0x07, 0x55, 0x4e, 0x4b, 0x4e, 0x4f, 0x57, 0x4e, 0x10, 0x00, 0x12, 0x10, 0x0a, 0x0c, - 0x46, 0x49, 0x58, 0x45, 0x44, 0x5f, 0x4c, 0x45, 0x4e, 0x47, 0x54, 0x48, 0x10, 0x01, 0x12, 0x13, - 0x0a, 0x0f, 0x56, 0x41, 0x52, 0x49, 0x41, 0x42, 0x4c, 0x45, 0x5f, 0x4c, 0x45, 0x4e, 0x47, 0x54, - 0x48, 0x10, 0x02, 0x32, 0xfa, 0x01, 0x0a, 0x08, 0x49, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x74, 0x79, - 0x12, 0x4e, 0x0a, 0x0d, 0x47, 0x65, 0x74, 0x50, 0x6c, 0x75, 0x67, 0x69, 0x6e, 0x49, 0x6e, 0x66, - 0x6f, 0x12, 0x1c, 0x2e, 0x63, 0x73, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x47, 0x65, 0x74, 0x50, 0x6c, - 0x75, 0x67, 0x69, 0x6e, 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, - 0x1d, 0x2e, 0x63, 0x73, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x47, 0x65, 0x74, 0x50, 0x6c, 0x75, 0x67, - 0x69, 0x6e, 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, - 0x12, 0x66, 0x0a, 0x15, 0x47, 0x65, 0x74, 0x50, 0x6c, 0x75, 0x67, 0x69, 0x6e, 0x43, 0x61, 0x70, - 0x61, 0x62, 0x69, 0x6c, 0x69, 0x74, 0x69, 0x65, 0x73, 0x12, 0x24, 0x2e, 0x63, 0x73, 0x69, 0x2e, - 0x76, 0x31, 0x2e, 0x47, 0x65, 0x74, 0x50, 0x6c, 0x75, 0x67, 0x69, 0x6e, 0x43, 0x61, 0x70, 0x61, - 0x62, 0x69, 0x6c, 0x69, 0x74, 0x69, 0x65, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, - 0x25, 0x2e, 0x63, 0x73, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x47, 0x65, 0x74, 0x50, 0x6c, 0x75, 0x67, - 0x69, 0x6e, 0x43, 0x61, 0x70, 0x61, 0x62, 0x69, 0x6c, 0x69, 0x74, 0x69, 0x65, 0x73, 0x52, 0x65, - 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, 0x12, 0x36, 0x0a, 0x05, 0x50, 0x72, 0x6f, 0x62, - 0x65, 0x12, 0x14, 0x2e, 0x63, 0x73, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x50, 0x72, 0x6f, 0x62, 0x65, - 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x15, 0x2e, 0x63, 0x73, 0x69, 0x2e, 0x76, 0x31, - 0x2e, 0x50, 0x72, 0x6f, 0x62, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, - 0x32, 0x85, 0x0b, 0x0a, 0x0a, 0x43, 0x6f, 0x6e, 0x74, 0x72, 0x6f, 0x6c, 0x6c, 0x65, 0x72, 0x12, - 0x4b, 0x0a, 0x0c, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x56, 0x6f, 0x6c, 0x75, 0x6d, 0x65, 0x12, - 0x1b, 0x2e, 0x63, 0x73, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x56, - 0x6f, 0x6c, 0x75, 0x6d, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x1c, 0x2e, 0x63, - 0x73, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x56, 0x6f, 0x6c, 0x75, - 0x6d, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, 0x12, 0x4b, 0x0a, 0x0c, - 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x56, 0x6f, 0x6c, 0x75, 0x6d, 0x65, 0x12, 0x1b, 0x2e, 0x63, - 0x73, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x56, 0x6f, 0x6c, 0x75, - 0x6d, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x1c, 0x2e, 0x63, 0x73, 0x69, 0x2e, - 0x76, 0x31, 0x2e, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x56, 0x6f, 0x6c, 0x75, 0x6d, 0x65, 0x52, - 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, 0x12, 0x6c, 0x0a, 0x17, 0x43, 0x6f, 0x6e, - 0x74, 0x72, 0x6f, 0x6c, 0x6c, 0x65, 0x72, 0x50, 0x75, 0x62, 0x6c, 0x69, 0x73, 0x68, 0x56, 0x6f, - 0x6c, 0x75, 0x6d, 0x65, 0x12, 0x26, 0x2e, 0x63, 0x73, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x43, 0x6f, - 0x6e, 0x74, 0x72, 0x6f, 0x6c, 0x6c, 0x65, 0x72, 0x50, 0x75, 0x62, 0x6c, 0x69, 0x73, 0x68, 0x56, - 0x6f, 0x6c, 0x75, 0x6d, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x27, 0x2e, 0x63, - 0x73, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x43, 0x6f, 0x6e, 0x74, 0x72, 0x6f, 0x6c, 0x6c, 0x65, 0x72, - 0x50, 0x75, 0x62, 0x6c, 0x69, 0x73, 0x68, 0x56, 0x6f, 0x6c, 0x75, 0x6d, 0x65, 0x52, 0x65, 0x73, - 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, 0x12, 0x72, 0x0a, 0x19, 0x43, 0x6f, 0x6e, 0x74, 0x72, - 0x6f, 0x6c, 0x6c, 0x65, 0x72, 0x55, 0x6e, 0x70, 0x75, 0x62, 0x6c, 0x69, 0x73, 0x68, 0x56, 0x6f, - 0x6c, 0x75, 0x6d, 0x65, 0x12, 0x28, 0x2e, 0x63, 0x73, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x43, 0x6f, - 0x6e, 0x74, 0x72, 0x6f, 0x6c, 0x6c, 0x65, 0x72, 0x55, 0x6e, 0x70, 0x75, 0x62, 0x6c, 0x69, 0x73, - 0x68, 0x56, 0x6f, 0x6c, 0x75, 0x6d, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x29, - 0x2e, 0x63, 0x73, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x43, 0x6f, 0x6e, 0x74, 0x72, 0x6f, 0x6c, 0x6c, - 0x65, 0x72, 0x55, 0x6e, 0x70, 0x75, 0x62, 0x6c, 0x69, 0x73, 0x68, 0x56, 0x6f, 0x6c, 0x75, 0x6d, - 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, 0x12, 0x75, 0x0a, 0x1a, 0x56, - 0x61, 0x6c, 0x69, 0x64, 0x61, 0x74, 0x65, 0x56, 0x6f, 0x6c, 0x75, 0x6d, 0x65, 0x43, 0x61, 0x70, - 0x61, 0x62, 0x69, 0x6c, 0x69, 0x74, 0x69, 0x65, 0x73, 0x12, 0x29, 0x2e, 0x63, 0x73, 0x69, 0x2e, - 0x76, 0x31, 0x2e, 0x56, 0x61, 0x6c, 0x69, 0x64, 0x61, 0x74, 0x65, 0x56, 0x6f, 0x6c, 0x75, 0x6d, - 0x65, 0x43, 0x61, 0x70, 0x61, 0x62, 0x69, 0x6c, 0x69, 0x74, 0x69, 0x65, 0x73, 0x52, 0x65, 0x71, - 0x75, 0x65, 0x73, 0x74, 0x1a, 0x2a, 0x2e, 0x63, 0x73, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x56, 0x61, - 0x6c, 0x69, 0x64, 0x61, 0x74, 0x65, 0x56, 0x6f, 0x6c, 0x75, 0x6d, 0x65, 0x43, 0x61, 0x70, 0x61, - 0x62, 0x69, 0x6c, 0x69, 0x74, 0x69, 0x65, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, - 0x22, 0x00, 0x12, 0x48, 0x0a, 0x0b, 0x4c, 0x69, 0x73, 0x74, 0x56, 0x6f, 0x6c, 0x75, 0x6d, 0x65, - 0x73, 0x12, 0x1a, 0x2e, 0x63, 0x73, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x56, - 0x6f, 0x6c, 0x75, 0x6d, 0x65, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x1b, 0x2e, - 0x63, 0x73, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x56, 0x6f, 0x6c, 0x75, 0x6d, - 0x65, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, 0x12, 0x48, 0x0a, 0x0b, - 0x47, 0x65, 0x74, 0x43, 0x61, 0x70, 0x61, 0x63, 0x69, 0x74, 0x79, 0x12, 0x1a, 0x2e, 0x63, 0x73, - 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x47, 0x65, 0x74, 0x43, 0x61, 0x70, 0x61, 0x63, 0x69, 0x74, 0x79, - 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x1b, 0x2e, 0x63, 0x73, 0x69, 0x2e, 0x76, 0x31, - 0x2e, 0x47, 0x65, 0x74, 0x43, 0x61, 0x70, 0x61, 0x63, 0x69, 0x74, 0x79, 0x52, 0x65, 0x73, 0x70, - 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, 0x12, 0x72, 0x0a, 0x19, 0x43, 0x6f, 0x6e, 0x74, 0x72, 0x6f, - 0x6c, 0x6c, 0x65, 0x72, 0x47, 0x65, 0x74, 0x43, 0x61, 0x70, 0x61, 0x62, 0x69, 0x6c, 0x69, 0x74, - 0x69, 0x65, 0x73, 0x12, 0x28, 0x2e, 0x63, 0x73, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x43, 0x6f, 0x6e, - 0x74, 0x72, 0x6f, 0x6c, 0x6c, 0x65, 0x72, 0x47, 0x65, 0x74, 0x43, 0x61, 0x70, 0x61, 0x62, 0x69, - 0x6c, 0x69, 0x74, 0x69, 0x65, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x29, 0x2e, - 0x63, 0x73, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x43, 0x6f, 0x6e, 0x74, 0x72, 0x6f, 0x6c, 0x6c, 0x65, - 0x72, 0x47, 0x65, 0x74, 0x43, 0x61, 0x70, 0x61, 0x62, 0x69, 0x6c, 0x69, 0x74, 0x69, 0x65, 0x73, - 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, 0x12, 0x51, 0x0a, 0x0e, 0x43, 0x72, - 0x65, 0x61, 0x74, 0x65, 0x53, 0x6e, 0x61, 0x70, 0x73, 0x68, 0x6f, 0x74, 0x12, 0x1d, 0x2e, 0x63, - 0x73, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x53, 0x6e, 0x61, 0x70, - 0x73, 0x68, 0x6f, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x1e, 0x2e, 0x63, 0x73, - 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x53, 0x6e, 0x61, 0x70, 0x73, - 0x68, 0x6f, 0x74, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, 0x12, 0x51, 0x0a, - 0x0e, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x53, 0x6e, 0x61, 0x70, 0x73, 0x68, 0x6f, 0x74, 0x12, - 0x1d, 0x2e, 0x63, 0x73, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x53, - 0x6e, 0x61, 0x70, 0x73, 0x68, 0x6f, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x1e, - 0x2e, 0x63, 0x73, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x53, 0x6e, - 0x61, 0x70, 0x73, 0x68, 0x6f, 0x74, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, - 0x12, 0x4e, 0x0a, 0x0d, 0x4c, 0x69, 0x73, 0x74, 0x53, 0x6e, 0x61, 0x70, 0x73, 0x68, 0x6f, 0x74, - 0x73, 0x12, 0x1c, 0x2e, 0x63, 0x73, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x53, - 0x6e, 0x61, 0x70, 0x73, 0x68, 0x6f, 0x74, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, - 0x1d, 0x2e, 0x63, 0x73, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x53, 0x6e, 0x61, - 0x70, 0x73, 0x68, 0x6f, 0x74, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, - 0x12, 0x4b, 0x0a, 0x0b, 0x47, 0x65, 0x74, 0x53, 0x6e, 0x61, 0x70, 0x73, 0x68, 0x6f, 0x74, 0x12, - 0x1a, 0x2e, 0x63, 0x73, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x47, 0x65, 0x74, 0x53, 0x6e, 0x61, 0x70, - 0x73, 0x68, 0x6f, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x1b, 0x2e, 0x63, 0x73, - 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x47, 0x65, 0x74, 0x53, 0x6e, 0x61, 0x70, 0x73, 0x68, 0x6f, 0x74, - 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x03, 0xa0, 0x42, 0x01, 0x12, 0x69, 0x0a, - 0x16, 0x43, 0x6f, 0x6e, 0x74, 0x72, 0x6f, 0x6c, 0x6c, 0x65, 0x72, 0x45, 0x78, 0x70, 0x61, 0x6e, - 0x64, 0x56, 0x6f, 0x6c, 0x75, 0x6d, 0x65, 0x12, 0x25, 0x2e, 0x63, 0x73, 0x69, 0x2e, 0x76, 0x31, - 0x2e, 0x43, 0x6f, 0x6e, 0x74, 0x72, 0x6f, 0x6c, 0x6c, 0x65, 0x72, 0x45, 0x78, 0x70, 0x61, 0x6e, - 0x64, 0x56, 0x6f, 0x6c, 0x75, 0x6d, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x26, - 0x2e, 0x63, 0x73, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x43, 0x6f, 0x6e, 0x74, 0x72, 0x6f, 0x6c, 0x6c, - 0x65, 0x72, 0x45, 0x78, 0x70, 0x61, 0x6e, 0x64, 0x56, 0x6f, 0x6c, 0x75, 0x6d, 0x65, 0x52, 0x65, - 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, 0x12, 0x63, 0x0a, 0x13, 0x43, 0x6f, 0x6e, 0x74, - 0x72, 0x6f, 0x6c, 0x6c, 0x65, 0x72, 0x47, 0x65, 0x74, 0x56, 0x6f, 0x6c, 0x75, 0x6d, 0x65, 0x12, - 0x22, 0x2e, 0x63, 0x73, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x43, 0x6f, 0x6e, 0x74, 0x72, 0x6f, 0x6c, - 0x6c, 0x65, 0x72, 0x47, 0x65, 0x74, 0x56, 0x6f, 0x6c, 0x75, 0x6d, 0x65, 0x52, 0x65, 0x71, 0x75, - 0x65, 0x73, 0x74, 0x1a, 0x23, 0x2e, 0x63, 0x73, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x43, 0x6f, 0x6e, - 0x74, 0x72, 0x6f, 0x6c, 0x6c, 0x65, 0x72, 0x47, 0x65, 0x74, 0x56, 0x6f, 0x6c, 0x75, 0x6d, 0x65, - 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x03, 0xa0, 0x42, 0x01, 0x12, 0x69, 0x0a, - 0x16, 0x43, 0x6f, 0x6e, 0x74, 0x72, 0x6f, 0x6c, 0x6c, 0x65, 0x72, 0x4d, 0x6f, 0x64, 0x69, 0x66, - 0x79, 0x56, 0x6f, 0x6c, 0x75, 0x6d, 0x65, 0x12, 0x25, 0x2e, 0x63, 0x73, 0x69, 0x2e, 0x76, 0x31, - 0x2e, 0x43, 0x6f, 0x6e, 0x74, 0x72, 0x6f, 0x6c, 0x6c, 0x65, 0x72, 0x4d, 0x6f, 0x64, 0x69, 0x66, - 0x79, 0x56, 0x6f, 0x6c, 0x75, 0x6d, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x26, - 0x2e, 0x63, 0x73, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x43, 0x6f, 0x6e, 0x74, 0x72, 0x6f, 0x6c, 0x6c, - 0x65, 0x72, 0x4d, 0x6f, 0x64, 0x69, 0x66, 0x79, 0x56, 0x6f, 0x6c, 0x75, 0x6d, 0x65, 0x52, 0x65, - 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, 0x32, 0xe8, 0x03, 0x0a, 0x0f, 0x47, 0x72, 0x6f, - 0x75, 0x70, 0x43, 0x6f, 0x6e, 0x74, 0x72, 0x6f, 0x6c, 0x6c, 0x65, 0x72, 0x12, 0x81, 0x01, 0x0a, - 0x1e, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x43, 0x6f, 0x6e, 0x74, 0x72, 0x6f, 0x6c, 0x6c, 0x65, 0x72, - 0x47, 0x65, 0x74, 0x43, 0x61, 0x70, 0x61, 0x62, 0x69, 0x6c, 0x69, 0x74, 0x69, 0x65, 0x73, 0x12, - 0x2d, 0x2e, 0x63, 0x73, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x43, 0x6f, - 0x6e, 0x74, 0x72, 0x6f, 0x6c, 0x6c, 0x65, 0x72, 0x47, 0x65, 0x74, 0x43, 0x61, 0x70, 0x61, 0x62, - 0x69, 0x6c, 0x69, 0x74, 0x69, 0x65, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x2e, - 0x2e, 0x63, 0x73, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x43, 0x6f, 0x6e, - 0x74, 0x72, 0x6f, 0x6c, 0x6c, 0x65, 0x72, 0x47, 0x65, 0x74, 0x43, 0x61, 0x70, 0x61, 0x62, 0x69, - 0x6c, 0x69, 0x74, 0x69, 0x65, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, - 0x12, 0x72, 0x0a, 0x19, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x56, 0x6f, 0x6c, 0x75, 0x6d, 0x65, - 0x47, 0x72, 0x6f, 0x75, 0x70, 0x53, 0x6e, 0x61, 0x70, 0x73, 0x68, 0x6f, 0x74, 0x12, 0x28, 0x2e, - 0x63, 0x73, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x56, 0x6f, 0x6c, - 0x75, 0x6d, 0x65, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x53, 0x6e, 0x61, 0x70, 0x73, 0x68, 0x6f, 0x74, - 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x29, 0x2e, 0x63, 0x73, 0x69, 0x2e, 0x76, 0x31, - 0x2e, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x56, 0x6f, 0x6c, 0x75, 0x6d, 0x65, 0x47, 0x72, 0x6f, - 0x75, 0x70, 0x53, 0x6e, 0x61, 0x70, 0x73, 0x68, 0x6f, 0x74, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, - 0x73, 0x65, 0x22, 0x00, 0x12, 0x72, 0x0a, 0x19, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x56, 0x6f, - 0x6c, 0x75, 0x6d, 0x65, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x53, 0x6e, 0x61, 0x70, 0x73, 0x68, 0x6f, - 0x74, 0x12, 0x28, 0x2e, 0x63, 0x73, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x44, 0x65, 0x6c, 0x65, 0x74, - 0x65, 0x56, 0x6f, 0x6c, 0x75, 0x6d, 0x65, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x53, 0x6e, 0x61, 0x70, - 0x73, 0x68, 0x6f, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x29, 0x2e, 0x63, 0x73, - 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x56, 0x6f, 0x6c, 0x75, 0x6d, - 0x65, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x53, 0x6e, 0x61, 0x70, 0x73, 0x68, 0x6f, 0x74, 0x52, 0x65, - 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, 0x12, 0x69, 0x0a, 0x16, 0x47, 0x65, 0x74, 0x56, - 0x6f, 0x6c, 0x75, 0x6d, 0x65, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x53, 0x6e, 0x61, 0x70, 0x73, 0x68, - 0x6f, 0x74, 0x12, 0x25, 0x2e, 0x63, 0x73, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x47, 0x65, 0x74, 0x56, - 0x6f, 0x6c, 0x75, 0x6d, 0x65, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x53, 0x6e, 0x61, 0x70, 0x73, 0x68, - 0x6f, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x26, 0x2e, 0x63, 0x73, 0x69, 0x2e, - 0x76, 0x31, 0x2e, 0x47, 0x65, 0x74, 0x56, 0x6f, 0x6c, 0x75, 0x6d, 0x65, 0x47, 0x72, 0x6f, 0x75, - 0x70, 0x53, 0x6e, 0x61, 0x70, 0x73, 0x68, 0x6f, 0x74, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, - 0x65, 0x22, 0x00, 0x32, 0xd9, 0x01, 0x0a, 0x10, 0x53, 0x6e, 0x61, 0x70, 0x73, 0x68, 0x6f, 0x74, - 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x12, 0x65, 0x0a, 0x14, 0x47, 0x65, 0x74, 0x4d, - 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x41, 0x6c, 0x6c, 0x6f, 0x63, 0x61, 0x74, 0x65, 0x64, - 0x12, 0x23, 0x2e, 0x63, 0x73, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x47, 0x65, 0x74, 0x4d, 0x65, 0x74, - 0x61, 0x64, 0x61, 0x74, 0x61, 0x41, 0x6c, 0x6c, 0x6f, 0x63, 0x61, 0x74, 0x65, 0x64, 0x52, 0x65, - 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x24, 0x2e, 0x63, 0x73, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x47, - 0x65, 0x74, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x41, 0x6c, 0x6c, 0x6f, 0x63, 0x61, - 0x74, 0x65, 0x64, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, 0x30, 0x01, 0x12, - 0x59, 0x0a, 0x10, 0x47, 0x65, 0x74, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x44, 0x65, - 0x6c, 0x74, 0x61, 0x12, 0x1f, 0x2e, 0x63, 0x73, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x47, 0x65, 0x74, - 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x44, 0x65, 0x6c, 0x74, 0x61, 0x52, 0x65, 0x71, - 0x75, 0x65, 0x73, 0x74, 0x1a, 0x20, 0x2e, 0x63, 0x73, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x47, 0x65, - 0x74, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x44, 0x65, 0x6c, 0x74, 0x61, 0x52, 0x65, - 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, 0x30, 0x01, 0x1a, 0x03, 0xa0, 0x42, 0x01, 0x32, - 0xda, 0x05, 0x0a, 0x04, 0x4e, 0x6f, 0x64, 0x65, 0x12, 0x54, 0x0a, 0x0f, 0x4e, 0x6f, 0x64, 0x65, - 0x53, 0x74, 0x61, 0x67, 0x65, 0x56, 0x6f, 0x6c, 0x75, 0x6d, 0x65, 0x12, 0x1e, 0x2e, 0x63, 0x73, - 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x4e, 0x6f, 0x64, 0x65, 0x53, 0x74, 0x61, 0x67, 0x65, 0x56, 0x6f, - 0x6c, 0x75, 0x6d, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x1f, 0x2e, 0x63, 0x73, - 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x4e, 0x6f, 0x64, 0x65, 0x53, 0x74, 0x61, 0x67, 0x65, 0x56, 0x6f, - 0x6c, 0x75, 0x6d, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, 0x12, 0x5a, - 0x0a, 0x11, 0x4e, 0x6f, 0x64, 0x65, 0x55, 0x6e, 0x73, 0x74, 0x61, 0x67, 0x65, 0x56, 0x6f, 0x6c, - 0x75, 0x6d, 0x65, 0x12, 0x20, 0x2e, 0x63, 0x73, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x4e, 0x6f, 0x64, - 0x65, 0x55, 0x6e, 0x73, 0x74, 0x61, 0x67, 0x65, 0x56, 0x6f, 0x6c, 0x75, 0x6d, 0x65, 0x52, 0x65, - 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x21, 0x2e, 0x63, 0x73, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x4e, - 0x6f, 0x64, 0x65, 0x55, 0x6e, 0x73, 0x74, 0x61, 0x67, 0x65, 0x56, 0x6f, 0x6c, 0x75, 0x6d, 0x65, - 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, 0x12, 0x5a, 0x0a, 0x11, 0x4e, 0x6f, - 0x64, 0x65, 0x50, 0x75, 0x62, 0x6c, 0x69, 0x73, 0x68, 0x56, 0x6f, 0x6c, 0x75, 0x6d, 0x65, 0x12, - 0x20, 0x2e, 0x63, 0x73, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x4e, 0x6f, 0x64, 0x65, 0x50, 0x75, 0x62, - 0x6c, 0x69, 0x73, 0x68, 0x56, 0x6f, 0x6c, 0x75, 0x6d, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, - 0x74, 0x1a, 0x21, 0x2e, 0x63, 0x73, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x4e, 0x6f, 0x64, 0x65, 0x50, - 0x75, 0x62, 0x6c, 0x69, 0x73, 0x68, 0x56, 0x6f, 0x6c, 0x75, 0x6d, 0x65, 0x52, 0x65, 0x73, 0x70, - 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, 0x12, 0x60, 0x0a, 0x13, 0x4e, 0x6f, 0x64, 0x65, 0x55, 0x6e, - 0x70, 0x75, 0x62, 0x6c, 0x69, 0x73, 0x68, 0x56, 0x6f, 0x6c, 0x75, 0x6d, 0x65, 0x12, 0x22, 0x2e, - 0x63, 0x73, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x4e, 0x6f, 0x64, 0x65, 0x55, 0x6e, 0x70, 0x75, 0x62, - 0x6c, 0x69, 0x73, 0x68, 0x56, 0x6f, 0x6c, 0x75, 0x6d, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, - 0x74, 0x1a, 0x23, 0x2e, 0x63, 0x73, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x4e, 0x6f, 0x64, 0x65, 0x55, - 0x6e, 0x70, 0x75, 0x62, 0x6c, 0x69, 0x73, 0x68, 0x56, 0x6f, 0x6c, 0x75, 0x6d, 0x65, 0x52, 0x65, - 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, 0x12, 0x5d, 0x0a, 0x12, 0x4e, 0x6f, 0x64, 0x65, - 0x47, 0x65, 0x74, 0x56, 0x6f, 0x6c, 0x75, 0x6d, 0x65, 0x53, 0x74, 0x61, 0x74, 0x73, 0x12, 0x21, - 0x2e, 0x63, 0x73, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x4e, 0x6f, 0x64, 0x65, 0x47, 0x65, 0x74, 0x56, - 0x6f, 0x6c, 0x75, 0x6d, 0x65, 0x53, 0x74, 0x61, 0x74, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, - 0x74, 0x1a, 0x22, 0x2e, 0x63, 0x73, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x4e, 0x6f, 0x64, 0x65, 0x47, - 0x65, 0x74, 0x56, 0x6f, 0x6c, 0x75, 0x6d, 0x65, 0x53, 0x74, 0x61, 0x74, 0x73, 0x52, 0x65, 0x73, - 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, 0x12, 0x57, 0x0a, 0x10, 0x4e, 0x6f, 0x64, 0x65, 0x45, - 0x78, 0x70, 0x61, 0x6e, 0x64, 0x56, 0x6f, 0x6c, 0x75, 0x6d, 0x65, 0x12, 0x1f, 0x2e, 0x63, 0x73, - 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x4e, 0x6f, 0x64, 0x65, 0x45, 0x78, 0x70, 0x61, 0x6e, 0x64, 0x56, - 0x6f, 0x6c, 0x75, 0x6d, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x20, 0x2e, 0x63, - 0x73, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x4e, 0x6f, 0x64, 0x65, 0x45, 0x78, 0x70, 0x61, 0x6e, 0x64, - 0x56, 0x6f, 0x6c, 0x75, 0x6d, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, - 0x12, 0x60, 0x0a, 0x13, 0x4e, 0x6f, 0x64, 0x65, 0x47, 0x65, 0x74, 0x43, 0x61, 0x70, 0x61, 0x62, - 0x69, 0x6c, 0x69, 0x74, 0x69, 0x65, 0x73, 0x12, 0x22, 0x2e, 0x63, 0x73, 0x69, 0x2e, 0x76, 0x31, - 0x2e, 0x4e, 0x6f, 0x64, 0x65, 0x47, 0x65, 0x74, 0x43, 0x61, 0x70, 0x61, 0x62, 0x69, 0x6c, 0x69, - 0x74, 0x69, 0x65, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x23, 0x2e, 0x63, 0x73, - 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x4e, 0x6f, 0x64, 0x65, 0x47, 0x65, 0x74, 0x43, 0x61, 0x70, 0x61, - 0x62, 0x69, 0x6c, 0x69, 0x74, 0x69, 0x65, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, - 0x22, 0x00, 0x12, 0x48, 0x0a, 0x0b, 0x4e, 0x6f, 0x64, 0x65, 0x47, 0x65, 0x74, 0x49, 0x6e, 0x66, - 0x6f, 0x12, 0x1a, 0x2e, 0x63, 0x73, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x4e, 0x6f, 0x64, 0x65, 0x47, - 0x65, 0x74, 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x1b, 0x2e, - 0x63, 0x73, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x4e, 0x6f, 0x64, 0x65, 0x47, 0x65, 0x74, 0x49, 0x6e, - 0x66, 0x6f, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, 0x3a, 0x3c, 0x0a, 0x0a, - 0x61, 0x6c, 0x70, 0x68, 0x61, 0x5f, 0x65, 0x6e, 0x75, 0x6d, 0x12, 0x1c, 0x2e, 0x67, 0x6f, 0x6f, - 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x45, 0x6e, 0x75, - 0x6d, 0x4f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x18, 0xa4, 0x08, 0x20, 0x01, 0x28, 0x08, 0x52, - 0x09, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x45, 0x6e, 0x75, 0x6d, 0x3a, 0x4c, 0x0a, 0x10, 0x61, 0x6c, - 0x70, 0x68, 0x61, 0x5f, 0x65, 0x6e, 0x75, 0x6d, 0x5f, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x12, 0x21, - 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, - 0x2e, 0x45, 0x6e, 0x75, 0x6d, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x4f, 0x70, 0x74, 0x69, 0x6f, 0x6e, - 0x73, 0x18, 0xa4, 0x08, 0x20, 0x01, 0x28, 0x08, 0x52, 0x0e, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x45, - 0x6e, 0x75, 0x6d, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x3d, 0x0a, 0x0a, 0x63, 0x73, 0x69, 0x5f, - 0x73, 0x65, 0x63, 0x72, 0x65, 0x74, 0x12, 0x1d, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, - 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x46, 0x69, 0x65, 0x6c, 0x64, 0x4f, 0x70, - 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x18, 0xa3, 0x08, 0x20, 0x01, 0x28, 0x08, 0x52, 0x09, 0x63, 0x73, - 0x69, 0x53, 0x65, 0x63, 0x72, 0x65, 0x74, 0x3a, 0x3f, 0x0a, 0x0b, 0x61, 0x6c, 0x70, 0x68, 0x61, - 0x5f, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x12, 0x1d, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, - 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x46, 0x69, 0x65, 0x6c, 0x64, 0x4f, 0x70, - 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x18, 0xa4, 0x08, 0x20, 0x01, 0x28, 0x08, 0x52, 0x0a, 0x61, 0x6c, - 0x70, 0x68, 0x61, 0x46, 0x69, 0x65, 0x6c, 0x64, 0x3a, 0x45, 0x0a, 0x0d, 0x61, 0x6c, 0x70, 0x68, - 0x61, 0x5f, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x12, 0x1f, 0x2e, 0x67, 0x6f, 0x6f, 0x67, - 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x4d, 0x65, 0x73, 0x73, - 0x61, 0x67, 0x65, 0x4f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x18, 0xa4, 0x08, 0x20, 0x01, 0x28, - 0x08, 0x52, 0x0c, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x3a, - 0x42, 0x0a, 0x0c, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x5f, 0x6d, 0x65, 0x74, 0x68, 0x6f, 0x64, 0x12, - 0x1e, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, - 0x66, 0x2e, 0x4d, 0x65, 0x74, 0x68, 0x6f, 0x64, 0x4f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x18, - 0xa4, 0x08, 0x20, 0x01, 0x28, 0x08, 0x52, 0x0b, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x4d, 0x65, 0x74, - 0x68, 0x6f, 0x64, 0x3a, 0x45, 0x0a, 0x0d, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x5f, 0x73, 0x65, 0x72, - 0x76, 0x69, 0x63, 0x65, 0x12, 0x1f, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, - 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x4f, 0x70, - 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x18, 0xa4, 0x08, 0x20, 0x01, 0x28, 0x08, 0x52, 0x0c, 0x61, 0x6c, - 0x70, 0x68, 0x61, 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x42, 0x38, 0x5a, 0x36, 0x67, 0x69, - 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x63, 0x6f, 0x6e, 0x74, 0x61, 0x69, 0x6e, - 0x65, 0x72, 0x2d, 0x73, 0x74, 0x6f, 0x72, 0x61, 0x67, 0x65, 0x2d, 0x69, 0x6e, 0x74, 0x65, 0x72, - 0x66, 0x61, 0x63, 0x65, 0x2f, 0x73, 0x70, 0x65, 0x63, 0x2f, 0x6c, 0x69, 0x62, 0x2f, 0x67, 0x6f, - 0x2f, 0x63, 0x73, 0x69, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33, -} +const file_csi_proto_rawDesc = "" + + "\n" + + "\tcsi.proto\x12\x06csi.v1\x1a google/protobuf/descriptor.proto\x1a\x1fgoogle/protobuf/timestamp.proto\x1a\x1egoogle/protobuf/wrappers.proto\"\x16\n" + + "\x14GetPluginInfoRequest\"\xd8\x01\n" + + "\x15GetPluginInfoResponse\x12\x12\n" + + "\x04name\x18\x01 \x01(\tR\x04name\x12%\n" + + "\x0evendor_version\x18\x02 \x01(\tR\rvendorVersion\x12G\n" + + "\bmanifest\x18\x03 \x03(\v2+.csi.v1.GetPluginInfoResponse.ManifestEntryR\bmanifest\x1a;\n" + + "\rManifestEntry\x12\x10\n" + + "\x03key\x18\x01 \x01(\tR\x03key\x12\x14\n" + + "\x05value\x18\x02 \x01(\tR\x05value:\x028\x01\"\x1e\n" + + "\x1cGetPluginCapabilitiesRequest\"]\n" + + "\x1dGetPluginCapabilitiesResponse\x12<\n" + + "\fcapabilities\x18\x01 \x03(\v2\x18.csi.v1.PluginCapabilityR\fcapabilities\"\xbe\x04\n" + + "\x10PluginCapability\x12<\n" + + "\aservice\x18\x01 \x01(\v2 .csi.v1.PluginCapability.ServiceH\x00R\aservice\x12U\n" + + "\x10volume_expansion\x18\x02 \x01(\v2(.csi.v1.PluginCapability.VolumeExpansionH\x00R\x0fvolumeExpansion\x1a\x87\x02\n" + + "\aService\x129\n" + + "\x04type\x18\x01 \x01(\x0e2%.csi.v1.PluginCapability.Service.TypeR\x04type\"\xc0\x01\n" + + "\x04Type\x12\v\n" + + "\aUNKNOWN\x10\x00\x12\x16\n" + + "\x12CONTROLLER_SERVICE\x10\x01\x12$\n" + + " VOLUME_ACCESSIBILITY_CONSTRAINTS\x10\x02\x12\x1c\n" + + "\x18GROUP_CONTROLLER_SERVICE\x10\x03\x12\"\n" + + "\x19SNAPSHOT_METADATA_SERVICE\x10\x04\x1a\x03\xa0B\x01\x12+\n" + + "\"SNAPSHOT_ACCESSIBILITY_CONSTRAINTS\x10\x05\x1a\x03\xa0B\x01\x1a\x82\x01\n" + + "\x0fVolumeExpansion\x12A\n" + + "\x04type\x18\x01 \x01(\x0e2-.csi.v1.PluginCapability.VolumeExpansion.TypeR\x04type\",\n" + + "\x04Type\x12\v\n" + + "\aUNKNOWN\x10\x00\x12\n" + + "\n" + + "\x06ONLINE\x10\x01\x12\v\n" + + "\aOFFLINE\x10\x02B\x06\n" + + "\x04type\"\x0e\n" + + "\fProbeRequest\"A\n" + + "\rProbeResponse\x120\n" + + "\x05ready\x18\x01 \x01(\v2\x1a.google.protobuf.BoolValueR\x05ready\"\x99\x06\n" + + "\x13CreateVolumeRequest\x12\x12\n" + + "\x04name\x18\x01 \x01(\tR\x04name\x12<\n" + + "\x0ecapacity_range\x18\x02 \x01(\v2\x15.csi.v1.CapacityRangeR\rcapacityRange\x12I\n" + + "\x13volume_capabilities\x18\x03 \x03(\v2\x18.csi.v1.VolumeCapabilityR\x12volumeCapabilities\x12K\n" + + "\n" + + "parameters\x18\x04 \x03(\v2+.csi.v1.CreateVolumeRequest.ParametersEntryR\n" + + "parameters\x12G\n" + + "\asecrets\x18\x05 \x03(\v2(.csi.v1.CreateVolumeRequest.SecretsEntryB\x03\x98B\x01R\asecrets\x12O\n" + + "\x15volume_content_source\x18\x06 \x01(\v2\x1b.csi.v1.VolumeContentSourceR\x13volumeContentSource\x12Z\n" + + "\x1aaccessibility_requirements\x18\a \x01(\v2\x1b.csi.v1.TopologyRequirementR\x19accessibilityRequirements\x12a\n" + + "\x12mutable_parameters\x18\b \x03(\v22.csi.v1.CreateVolumeRequest.MutableParametersEntryR\x11mutableParameters\x1a=\n" + + "\x0fParametersEntry\x12\x10\n" + + "\x03key\x18\x01 \x01(\tR\x03key\x12\x14\n" + + "\x05value\x18\x02 \x01(\tR\x05value:\x028\x01\x1a:\n" + + "\fSecretsEntry\x12\x10\n" + + "\x03key\x18\x01 \x01(\tR\x03key\x12\x14\n" + + "\x05value\x18\x02 \x01(\tR\x05value:\x028\x01\x1aD\n" + + "\x16MutableParametersEntry\x12\x10\n" + + "\x03key\x18\x01 \x01(\tR\x03key\x12\x14\n" + + "\x05value\x18\x02 \x01(\tR\x05value:\x028\x01\"\x8b\x02\n" + + "\x13VolumeContentSource\x12H\n" + + "\bsnapshot\x18\x01 \x01(\v2*.csi.v1.VolumeContentSource.SnapshotSourceH\x00R\bsnapshot\x12B\n" + + "\x06volume\x18\x02 \x01(\v2(.csi.v1.VolumeContentSource.VolumeSourceH\x00R\x06volume\x1a1\n" + + "\x0eSnapshotSource\x12\x1f\n" + + "\vsnapshot_id\x18\x01 \x01(\tR\n" + + "snapshotId\x1a+\n" + + "\fVolumeSource\x12\x1b\n" + + "\tvolume_id\x18\x01 \x01(\tR\bvolumeIdB\x06\n" + + "\x04type\">\n" + + "\x14CreateVolumeResponse\x12&\n" + + "\x06volume\x18\x01 \x01(\v2\x0e.csi.v1.VolumeR\x06volume\"\x9f\x05\n" + + "\x10VolumeCapability\x12<\n" + + "\x05block\x18\x01 \x01(\v2$.csi.v1.VolumeCapability.BlockVolumeH\x00R\x05block\x12<\n" + + "\x05mount\x18\x02 \x01(\v2$.csi.v1.VolumeCapability.MountVolumeH\x00R\x05mount\x12D\n" + + "\vaccess_mode\x18\x03 \x01(\v2#.csi.v1.VolumeCapability.AccessModeR\n" + + "accessMode\x1a\r\n" + + "\vBlockVolume\x1au\n" + + "\vMountVolume\x12\x17\n" + + "\afs_type\x18\x01 \x01(\tR\x06fsType\x12\x1f\n" + + "\vmount_flags\x18\x02 \x03(\tR\n" + + "mountFlags\x12,\n" + + "\x12volume_mount_group\x18\x03 \x01(\tR\x10volumeMountGroup\x1a\xb3\x02\n" + + "\n" + + "AccessMode\x12<\n" + + "\x04mode\x18\x01 \x01(\x0e2(.csi.v1.VolumeCapability.AccessMode.ModeR\x04mode\"\xe6\x01\n" + + "\x04Mode\x12\v\n" + + "\aUNKNOWN\x10\x00\x12\x16\n" + + "\x12SINGLE_NODE_WRITER\x10\x01\x12\x1b\n" + + "\x17SINGLE_NODE_READER_ONLY\x10\x02\x12\x1a\n" + + "\x16MULTI_NODE_READER_ONLY\x10\x03\x12\x1c\n" + + "\x18MULTI_NODE_SINGLE_WRITER\x10\x04\x12\x1b\n" + + "\x17MULTI_NODE_MULTI_WRITER\x10\x05\x12\"\n" + + "\x19SINGLE_NODE_SINGLE_WRITER\x10\x06\x1a\x03\xa0B\x01\x12!\n" + + "\x18SINGLE_NODE_MULTI_WRITER\x10\a\x1a\x03\xa0B\x01B\r\n" + + "\vaccess_type\"W\n" + + "\rCapacityRange\x12%\n" + + "\x0erequired_bytes\x18\x01 \x01(\x03R\rrequiredBytes\x12\x1f\n" + + "\vlimit_bytes\x18\x02 \x01(\x03R\n" + + "limitBytes\"\xdf\x02\n" + + "\x06Volume\x12%\n" + + "\x0ecapacity_bytes\x18\x01 \x01(\x03R\rcapacityBytes\x12\x1b\n" + + "\tvolume_id\x18\x02 \x01(\tR\bvolumeId\x12H\n" + + "\x0evolume_context\x18\x03 \x03(\v2!.csi.v1.Volume.VolumeContextEntryR\rvolumeContext\x12B\n" + + "\x0econtent_source\x18\x04 \x01(\v2\x1b.csi.v1.VolumeContentSourceR\rcontentSource\x12A\n" + + "\x13accessible_topology\x18\x05 \x03(\v2\x10.csi.v1.TopologyR\x12accessibleTopology\x1a@\n" + + "\x12VolumeContextEntry\x12\x10\n" + + "\x03key\x18\x01 \x01(\tR\x03key\x12\x14\n" + + "\x05value\x18\x02 \x01(\tR\x05value:\x028\x01\"u\n" + + "\x13TopologyRequirement\x12.\n" + + "\trequisite\x18\x01 \x03(\v2\x10.csi.v1.TopologyR\trequisite\x12.\n" + + "\tpreferred\x18\x02 \x03(\v2\x10.csi.v1.TopologyR\tpreferred\"\x83\x01\n" + + "\bTopology\x12:\n" + + "\bsegments\x18\x01 \x03(\v2\x1e.csi.v1.Topology.SegmentsEntryR\bsegments\x1a;\n" + + "\rSegmentsEntry\x12\x10\n" + + "\x03key\x18\x01 \x01(\tR\x03key\x12\x14\n" + + "\x05value\x18\x02 \x01(\tR\x05value:\x028\x01\"\xb7\x01\n" + + "\x13DeleteVolumeRequest\x12\x1b\n" + + "\tvolume_id\x18\x01 \x01(\tR\bvolumeId\x12G\n" + + "\asecrets\x18\x02 \x03(\v2(.csi.v1.DeleteVolumeRequest.SecretsEntryB\x03\x98B\x01R\asecrets\x1a:\n" + + "\fSecretsEntry\x12\x10\n" + + "\x03key\x18\x01 \x01(\tR\x03key\x12\x14\n" + + "\x05value\x18\x02 \x01(\tR\x05value:\x028\x01\"\x16\n" + + "\x14DeleteVolumeResponse\"\xed\x03\n" + + "\x1eControllerPublishVolumeRequest\x12\x1b\n" + + "\tvolume_id\x18\x01 \x01(\tR\bvolumeId\x12\x17\n" + + "\anode_id\x18\x02 \x01(\tR\x06nodeId\x12E\n" + + "\x11volume_capability\x18\x03 \x01(\v2\x18.csi.v1.VolumeCapabilityR\x10volumeCapability\x12\x1a\n" + + "\breadonly\x18\x04 \x01(\bR\breadonly\x12R\n" + + "\asecrets\x18\x05 \x03(\v23.csi.v1.ControllerPublishVolumeRequest.SecretsEntryB\x03\x98B\x01R\asecrets\x12`\n" + + "\x0evolume_context\x18\x06 \x03(\v29.csi.v1.ControllerPublishVolumeRequest.VolumeContextEntryR\rvolumeContext\x1a:\n" + + "\fSecretsEntry\x12\x10\n" + + "\x03key\x18\x01 \x01(\tR\x03key\x12\x14\n" + + "\x05value\x18\x02 \x01(\tR\x05value:\x028\x01\x1a@\n" + + "\x12VolumeContextEntry\x12\x10\n" + + "\x03key\x18\x01 \x01(\tR\x03key\x12\x14\n" + + "\x05value\x18\x02 \x01(\tR\x05value:\x028\x01\"\xca\x01\n" + + "\x1fControllerPublishVolumeResponse\x12d\n" + + "\x0fpublish_context\x18\x01 \x03(\v2;.csi.v1.ControllerPublishVolumeResponse.PublishContextEntryR\x0epublishContext\x1aA\n" + + "\x13PublishContextEntry\x12\x10\n" + + "\x03key\x18\x01 \x01(\tR\x03key\x12\x14\n" + + "\x05value\x18\x02 \x01(\tR\x05value:\x028\x01\"\xea\x01\n" + + " ControllerUnpublishVolumeRequest\x12\x1b\n" + + "\tvolume_id\x18\x01 \x01(\tR\bvolumeId\x12\x17\n" + + "\anode_id\x18\x02 \x01(\tR\x06nodeId\x12T\n" + + "\asecrets\x18\x03 \x03(\v25.csi.v1.ControllerUnpublishVolumeRequest.SecretsEntryB\x03\x98B\x01R\asecrets\x1a:\n" + + "\fSecretsEntry\x12\x10\n" + + "\x03key\x18\x01 \x01(\tR\x03key\x12\x14\n" + + "\x05value\x18\x02 \x01(\tR\x05value:\x028\x01\"#\n" + + "!ControllerUnpublishVolumeResponse\"\x96\x06\n" + + "!ValidateVolumeCapabilitiesRequest\x12\x1b\n" + + "\tvolume_id\x18\x01 \x01(\tR\bvolumeId\x12c\n" + + "\x0evolume_context\x18\x02 \x03(\v2<.csi.v1.ValidateVolumeCapabilitiesRequest.VolumeContextEntryR\rvolumeContext\x12I\n" + + "\x13volume_capabilities\x18\x03 \x03(\v2\x18.csi.v1.VolumeCapabilityR\x12volumeCapabilities\x12Y\n" + + "\n" + + "parameters\x18\x04 \x03(\v29.csi.v1.ValidateVolumeCapabilitiesRequest.ParametersEntryR\n" + + "parameters\x12U\n" + + "\asecrets\x18\x05 \x03(\v26.csi.v1.ValidateVolumeCapabilitiesRequest.SecretsEntryB\x03\x98B\x01R\asecrets\x12o\n" + + "\x12mutable_parameters\x18\x06 \x03(\v2@.csi.v1.ValidateVolumeCapabilitiesRequest.MutableParametersEntryR\x11mutableParameters\x1a@\n" + + "\x12VolumeContextEntry\x12\x10\n" + + "\x03key\x18\x01 \x01(\tR\x03key\x12\x14\n" + + "\x05value\x18\x02 \x01(\tR\x05value:\x028\x01\x1a=\n" + + "\x0fParametersEntry\x12\x10\n" + + "\x03key\x18\x01 \x01(\tR\x03key\x12\x14\n" + + "\x05value\x18\x02 \x01(\tR\x05value:\x028\x01\x1a:\n" + + "\fSecretsEntry\x12\x10\n" + + "\x03key\x18\x01 \x01(\tR\x03key\x12\x14\n" + + "\x05value\x18\x02 \x01(\tR\x05value:\x028\x01\x1aD\n" + + "\x16MutableParametersEntry\x12\x10\n" + + "\x03key\x18\x01 \x01(\tR\x03key\x12\x14\n" + + "\x05value\x18\x02 \x01(\tR\x05value:\x028\x01\"\x84\x06\n" + + "\"ValidateVolumeCapabilitiesResponse\x12R\n" + + "\tconfirmed\x18\x01 \x01(\v24.csi.v1.ValidateVolumeCapabilitiesResponse.ConfirmedR\tconfirmed\x12\x18\n" + + "\amessage\x18\x02 \x01(\tR\amessage\x1a\xef\x04\n" + + "\tConfirmed\x12n\n" + + "\x0evolume_context\x18\x01 \x03(\v2G.csi.v1.ValidateVolumeCapabilitiesResponse.Confirmed.VolumeContextEntryR\rvolumeContext\x12I\n" + + "\x13volume_capabilities\x18\x02 \x03(\v2\x18.csi.v1.VolumeCapabilityR\x12volumeCapabilities\x12d\n" + + "\n" + + "parameters\x18\x03 \x03(\v2D.csi.v1.ValidateVolumeCapabilitiesResponse.Confirmed.ParametersEntryR\n" + + "parameters\x12z\n" + + "\x12mutable_parameters\x18\x04 \x03(\v2K.csi.v1.ValidateVolumeCapabilitiesResponse.Confirmed.MutableParametersEntryR\x11mutableParameters\x1a@\n" + + "\x12VolumeContextEntry\x12\x10\n" + + "\x03key\x18\x01 \x01(\tR\x03key\x12\x14\n" + + "\x05value\x18\x02 \x01(\tR\x05value:\x028\x01\x1a=\n" + + "\x0fParametersEntry\x12\x10\n" + + "\x03key\x18\x01 \x01(\tR\x03key\x12\x14\n" + + "\x05value\x18\x02 \x01(\tR\x05value:\x028\x01\x1aD\n" + + "\x16MutableParametersEntry\x12\x10\n" + + "\x03key\x18\x01 \x01(\tR\x03key\x12\x14\n" + + "\x05value\x18\x02 \x01(\tR\x05value:\x028\x01\"\\\n" + + "\x12ListVolumesRequest\x12\x1f\n" + + "\vmax_entries\x18\x01 \x01(\x05R\n" + + "maxEntries\x12%\n" + + "\x0estarting_token\x18\x02 \x01(\tR\rstartingToken\"\xa8\x02\n" + + "\x13ListVolumesResponse\x12;\n" + + "\aentries\x18\x01 \x03(\v2!.csi.v1.ListVolumesResponse.EntryR\aentries\x12\x1d\n" + + "\n" + + "next_token\x18\x02 \x01(\tR\tnextToken\x1aB\n" + + "\fVolumeStatus\x12,\n" + + "\x12published_node_ids\x18\x01 \x03(\tR\x10publishedNodeIdsJ\x04\b\x02\x10\x03\x1aq\n" + + "\x05Entry\x12&\n" + + "\x06volume\x18\x01 \x01(\v2\x0e.csi.v1.VolumeR\x06volume\x12@\n" + + "\x06status\x18\x02 \x01(\v2(.csi.v1.ListVolumesResponse.VolumeStatusR\x06status\"\x83\x02\n" + + "!ControllerListVolumeHealthRequest\x12\x1f\n" + + "\vmax_entries\x18\x01 \x01(\x05R\n" + + "maxEntries\x12%\n" + + "\x0estarting_token\x18\x02 \x01(\tR\rstartingToken\x12U\n" + + "\asecrets\x18\x03 \x03(\v26.csi.v1.ControllerListVolumeHealthRequest.SecretsEntryB\x03\x98B\x01R\asecrets\x1a:\n" + + "\fSecretsEntry\x12\x10\n" + + "\x03key\x18\x01 \x01(\tR\x03key\x12\x14\n" + + "\x05value\x18\x02 \x01(\tR\x05value:\x028\x01:\x03\xa0B\x01\"x\n" + + "\"ControllerListVolumeHealthResponse\x12.\n" + + "\aentries\x18\x01 \x03(\v2\x14.csi.v1.VolumeHealthR\aentries\x12\x1d\n" + + "\n" + + "next_token\x18\x02 \x01(\tR\tnextToken:\x03\xa0B\x01\"\xff\x01\n" + + "\fVolumeHealth\x12\x1b\n" + + "\tvolume_id\x18\x01 \x01(\tR\bvolumeId\x12O\n" + + "\x0fhealth_statuses\x18\x02 \x03(\v2&.csi.v1.VolumeHealth.VolumeHealthEntryR\x0ehealthStatuses\x1a|\n" + + "\x11VolumeHealthEntry\x125\n" + + "\x06status\x18\x01 \x01(\x0e2\x1d.csi.v1.VolumeHealthErrorTypeR\x06status\x12\x16\n" + + "\x06reason\x18\x02 \x01(\tR\x06reason\x12\x18\n" + + "\amessage\x18\x03 \x01(\tR\amessage:\x03\xa0B\x01\"\xd6\x01\n" + + " ControllerGetVolumeHealthRequest\x12\x1b\n" + + "\tvolume_id\x18\x01 \x01(\tR\bvolumeId\x12T\n" + + "\asecrets\x18\x02 \x03(\v25.csi.v1.ControllerGetVolumeHealthRequest.SecretsEntryB\x03\x98B\x01R\asecrets\x1a:\n" + + "\fSecretsEntry\x12\x10\n" + + "\x03key\x18\x01 \x01(\tR\x03key\x12\x14\n" + + "\x05value\x18\x02 \x01(\tR\x05value:\x028\x01:\x03\xa0B\x01\"c\n" + + "!ControllerGetVolumeHealthResponse\x129\n" + + "\rvolume_health\x18\x01 \x01(\v2\x14.csi.v1.VolumeHealthR\fvolumeHealth:\x03\xa0B\x01\">\n" + + "\x1aControllerGetVolumeRequest\x12\x1b\n" + + "\tvolume_id\x18\x01 \x01(\tR\bvolumeId:\x03\xa0B\x01\"\xd8\x01\n" + + "\x1bControllerGetVolumeResponse\x12&\n" + + "\x06volume\x18\x01 \x01(\v2\x0e.csi.v1.VolumeR\x06volume\x12H\n" + + "\x06status\x18\x02 \x01(\v20.csi.v1.ControllerGetVolumeResponse.VolumeStatusR\x06status\x1aB\n" + + "\fVolumeStatus\x12,\n" + + "\x12published_node_ids\x18\x01 \x03(\tR\x10publishedNodeIdsJ\x04\b\x02\x10\x03:\x03\xa0B\x01\"\xfe\x02\n" + + "\x1dControllerModifyVolumeRequest\x12\x1b\n" + + "\tvolume_id\x18\x01 \x01(\tR\bvolumeId\x12Q\n" + + "\asecrets\x18\x02 \x03(\v22.csi.v1.ControllerModifyVolumeRequest.SecretsEntryB\x03\x98B\x01R\asecrets\x12k\n" + + "\x12mutable_parameters\x18\x03 \x03(\v2<.csi.v1.ControllerModifyVolumeRequest.MutableParametersEntryR\x11mutableParameters\x1a:\n" + + "\fSecretsEntry\x12\x10\n" + + "\x03key\x18\x01 \x01(\tR\x03key\x12\x14\n" + + "\x05value\x18\x02 \x01(\tR\x05value:\x028\x01\x1aD\n" + + "\x16MutableParametersEntry\x12\x10\n" + + "\x03key\x18\x01 \x01(\tR\x03key\x12\x14\n" + + "\x05value\x18\x02 \x01(\tR\x05value:\x028\x01\" \n" + + "\x1eControllerModifyVolumeResponse\"\xad\x02\n" + + "\x12GetCapacityRequest\x12I\n" + + "\x13volume_capabilities\x18\x01 \x03(\v2\x18.csi.v1.VolumeCapabilityR\x12volumeCapabilities\x12J\n" + + "\n" + + "parameters\x18\x02 \x03(\v2*.csi.v1.GetCapacityRequest.ParametersEntryR\n" + + "parameters\x12A\n" + + "\x13accessible_topology\x18\x03 \x01(\v2\x10.csi.v1.TopologyR\x12accessibleTopology\x1a=\n" + + "\x0fParametersEntry\x12\x10\n" + + "\x03key\x18\x01 \x01(\tR\x03key\x12\x14\n" + + "\x05value\x18\x02 \x01(\tR\x05value:\x028\x01\"\xe3\x01\n" + + "\x13GetCapacityResponse\x12-\n" + + "\x12available_capacity\x18\x01 \x01(\x03R\x11availableCapacity\x12K\n" + + "\x13maximum_volume_size\x18\x02 \x01(\v2\x1b.google.protobuf.Int64ValueR\x11maximumVolumeSize\x12P\n" + + "\x13minimum_volume_size\x18\x03 \x01(\v2\x1b.google.protobuf.Int64ValueB\x03\xa0B\x01R\x11minimumVolumeSize\"\"\n" + + " ControllerGetCapabilitiesRequest\"l\n" + + "!ControllerGetCapabilitiesResponse\x12G\n" + + "\fcapabilities\x18\x01 \x03(\v2#.csi.v1.ControllerServiceCapabilityR\fcapabilities\"\xcc\x04\n" + + "\x1bControllerServiceCapability\x12;\n" + + "\x03rpc\x18\x01 \x01(\v2'.csi.v1.ControllerServiceCapability.RPCH\x00R\x03rpc\x1a\xe7\x03\n" + + "\x03RPC\x12@\n" + + "\x04type\x18\x01 \x01(\x0e2,.csi.v1.ControllerServiceCapability.RPC.TypeR\x04type\"\x9d\x03\n" + + "\x04Type\x12\v\n" + + "\aUNKNOWN\x10\x00\x12\x18\n" + + "\x14CREATE_DELETE_VOLUME\x10\x01\x12\x1c\n" + + "\x18PUBLISH_UNPUBLISH_VOLUME\x10\x02\x12\x10\n" + + "\fLIST_VOLUMES\x10\x03\x12\x10\n" + + "\fGET_CAPACITY\x10\x04\x12\x1a\n" + + "\x16CREATE_DELETE_SNAPSHOT\x10\x05\x12\x12\n" + + "\x0eLIST_SNAPSHOTS\x10\x06\x12\x10\n" + + "\fCLONE_VOLUME\x10\a\x12\x14\n" + + "\x10PUBLISH_READONLY\x10\b\x12\x11\n" + + "\rEXPAND_VOLUME\x10\t\x12 \n" + + "\x1cLIST_VOLUMES_PUBLISHED_NODES\x10\n" + + "\x12\x13\n" + + "\n" + + "GET_VOLUME\x10\f\x1a\x03\xa0B\x01\x12!\n" + + "\x18SINGLE_NODE_MULTI_WRITER\x10\r\x1a\x03\xa0B\x01\x12\x11\n" + + "\rMODIFY_VOLUME\x10\x0e\x12\x15\n" + + "\fGET_SNAPSHOT\x10\x0f\x1a\x03\xa0B\x01\x12\x1a\n" + + "\x11GET_VOLUME_HEALTH\x10\x10\x1a\x03\xa0B\x01\x12\x1b\n" + + "\x12LIST_VOLUME_HEALTH\x10\x11\x1a\x03\xa0B\x01\"\x04\b\v\x10\vB\x06\n" + + "\x04type\"\xcb\x03\n" + + "\x15CreateSnapshotRequest\x12(\n" + + "\x10source_volume_id\x18\x01 \x01(\tR\x0esourceVolumeId\x12\x12\n" + + "\x04name\x18\x02 \x01(\tR\x04name\x12I\n" + + "\asecrets\x18\x03 \x03(\v2*.csi.v1.CreateSnapshotRequest.SecretsEntryB\x03\x98B\x01R\asecrets\x12M\n" + + "\n" + + "parameters\x18\x04 \x03(\v2-.csi.v1.CreateSnapshotRequest.ParametersEntryR\n" + + "parameters\x12_\n" + + "\x1aaccessibility_requirements\x18\x05 \x01(\v2\x1b.csi.v1.TopologyRequirementB\x03\xa0B\x01R\x19accessibilityRequirements\x1a:\n" + + "\fSecretsEntry\x12\x10\n" + + "\x03key\x18\x01 \x01(\tR\x03key\x12\x14\n" + + "\x05value\x18\x02 \x01(\tR\x05value:\x028\x01\x1a=\n" + + "\x0fParametersEntry\x12\x10\n" + + "\x03key\x18\x01 \x01(\tR\x03key\x12\x14\n" + + "\x05value\x18\x02 \x01(\tR\x05value:\x028\x01\"F\n" + + "\x16CreateSnapshotResponse\x12,\n" + + "\bsnapshot\x18\x01 \x01(\v2\x10.csi.v1.SnapshotR\bsnapshot\"\xcb\x02\n" + + "\bSnapshot\x12\x1d\n" + + "\n" + + "size_bytes\x18\x01 \x01(\x03R\tsizeBytes\x12\x1f\n" + + "\vsnapshot_id\x18\x02 \x01(\tR\n" + + "snapshotId\x12(\n" + + "\x10source_volume_id\x18\x03 \x01(\tR\x0esourceVolumeId\x12?\n" + + "\rcreation_time\x18\x04 \x01(\v2\x1a.google.protobuf.TimestampR\fcreationTime\x12 \n" + + "\fready_to_use\x18\x05 \x01(\bR\n" + + "readyToUse\x12*\n" + + "\x11group_snapshot_id\x18\x06 \x01(\tR\x0fgroupSnapshotId\x12F\n" + + "\x13accessible_topology\x18\a \x03(\v2\x10.csi.v1.TopologyB\x03\xa0B\x01R\x12accessibleTopology\"\xbf\x01\n" + + "\x15DeleteSnapshotRequest\x12\x1f\n" + + "\vsnapshot_id\x18\x01 \x01(\tR\n" + + "snapshotId\x12I\n" + + "\asecrets\x18\x02 \x03(\v2*.csi.v1.DeleteSnapshotRequest.SecretsEntryB\x03\x98B\x01R\asecrets\x1a:\n" + + "\fSecretsEntry\x12\x10\n" + + "\x03key\x18\x01 \x01(\tR\x03key\x12\x14\n" + + "\x05value\x18\x02 \x01(\tR\x05value:\x028\x01\"\x18\n" + + "\x16DeleteSnapshotResponse\"\xaf\x02\n" + + "\x14ListSnapshotsRequest\x12\x1f\n" + + "\vmax_entries\x18\x01 \x01(\x05R\n" + + "maxEntries\x12%\n" + + "\x0estarting_token\x18\x02 \x01(\tR\rstartingToken\x12(\n" + + "\x10source_volume_id\x18\x03 \x01(\tR\x0esourceVolumeId\x12\x1f\n" + + "\vsnapshot_id\x18\x04 \x01(\tR\n" + + "snapshotId\x12H\n" + + "\asecrets\x18\x05 \x03(\v2).csi.v1.ListSnapshotsRequest.SecretsEntryB\x03\x98B\x01R\asecrets\x1a:\n" + + "\fSecretsEntry\x12\x10\n" + + "\x03key\x18\x01 \x01(\tR\x03key\x12\x14\n" + + "\x05value\x18\x02 \x01(\tR\x05value:\x028\x01\"\xac\x01\n" + + "\x15ListSnapshotsResponse\x12=\n" + + "\aentries\x18\x01 \x03(\v2#.csi.v1.ListSnapshotsResponse.EntryR\aentries\x12\x1d\n" + + "\n" + + "next_token\x18\x02 \x01(\tR\tnextToken\x1a5\n" + + "\x05Entry\x12,\n" + + "\bsnapshot\x18\x01 \x01(\v2\x10.csi.v1.SnapshotR\bsnapshot\"\xbe\x01\n" + + "\x12GetSnapshotRequest\x12\x1f\n" + + "\vsnapshot_id\x18\x01 \x01(\tR\n" + + "snapshotId\x12F\n" + + "\asecrets\x18\x02 \x03(\v2'.csi.v1.GetSnapshotRequest.SecretsEntryB\x03\x98B\x01R\asecrets\x1a:\n" + + "\fSecretsEntry\x12\x10\n" + + "\x03key\x18\x01 \x01(\tR\x03key\x12\x14\n" + + "\x05value\x18\x02 \x01(\tR\x05value:\x028\x01:\x03\xa0B\x01\"H\n" + + "\x13GetSnapshotResponse\x12,\n" + + "\bsnapshot\x18\x01 \x01(\v2\x10.csi.v1.SnapshotR\bsnapshot:\x03\xa0B\x01\"\xd0\x02\n" + + "\x1dControllerExpandVolumeRequest\x12\x1b\n" + + "\tvolume_id\x18\x01 \x01(\tR\bvolumeId\x12<\n" + + "\x0ecapacity_range\x18\x02 \x01(\v2\x15.csi.v1.CapacityRangeR\rcapacityRange\x12Q\n" + + "\asecrets\x18\x03 \x03(\v22.csi.v1.ControllerExpandVolumeRequest.SecretsEntryB\x03\x98B\x01R\asecrets\x12E\n" + + "\x11volume_capability\x18\x04 \x01(\v2\x18.csi.v1.VolumeCapabilityR\x10volumeCapability\x1a:\n" + + "\fSecretsEntry\x12\x10\n" + + "\x03key\x18\x01 \x01(\tR\x03key\x12\x14\n" + + "\x05value\x18\x02 \x01(\tR\x05value:\x028\x01\"\x7f\n" + + "\x1eControllerExpandVolumeResponse\x12%\n" + + "\x0ecapacity_bytes\x18\x01 \x01(\x03R\rcapacityBytes\x126\n" + + "\x17node_expansion_required\x18\x02 \x01(\bR\x15nodeExpansionRequired\"\xf0\x04\n" + + "\x16NodeStageVolumeRequest\x12\x1b\n" + + "\tvolume_id\x18\x01 \x01(\tR\bvolumeId\x12[\n" + + "\x0fpublish_context\x18\x02 \x03(\v22.csi.v1.NodeStageVolumeRequest.PublishContextEntryR\x0epublishContext\x12.\n" + + "\x13staging_target_path\x18\x03 \x01(\tR\x11stagingTargetPath\x12E\n" + + "\x11volume_capability\x18\x04 \x01(\v2\x18.csi.v1.VolumeCapabilityR\x10volumeCapability\x12J\n" + + "\asecrets\x18\x05 \x03(\v2+.csi.v1.NodeStageVolumeRequest.SecretsEntryB\x03\x98B\x01R\asecrets\x12X\n" + + "\x0evolume_context\x18\x06 \x03(\v21.csi.v1.NodeStageVolumeRequest.VolumeContextEntryR\rvolumeContext\x1aA\n" + + "\x13PublishContextEntry\x12\x10\n" + + "\x03key\x18\x01 \x01(\tR\x03key\x12\x14\n" + + "\x05value\x18\x02 \x01(\tR\x05value:\x028\x01\x1a:\n" + + "\fSecretsEntry\x12\x10\n" + + "\x03key\x18\x01 \x01(\tR\x03key\x12\x14\n" + + "\x05value\x18\x02 \x01(\tR\x05value:\x028\x01\x1a@\n" + + "\x12VolumeContextEntry\x12\x10\n" + + "\x03key\x18\x01 \x01(\tR\x03key\x12\x14\n" + + "\x05value\x18\x02 \x01(\tR\x05value:\x028\x01\"\x19\n" + + "\x17NodeStageVolumeResponse\"g\n" + + "\x18NodeUnstageVolumeRequest\x12\x1b\n" + + "\tvolume_id\x18\x01 \x01(\tR\bvolumeId\x12.\n" + + "\x13staging_target_path\x18\x02 \x01(\tR\x11stagingTargetPath\"\x1b\n" + + "\x19NodeUnstageVolumeResponse\"\xb5\x05\n" + + "\x18NodePublishVolumeRequest\x12\x1b\n" + + "\tvolume_id\x18\x01 \x01(\tR\bvolumeId\x12]\n" + + "\x0fpublish_context\x18\x02 \x03(\v24.csi.v1.NodePublishVolumeRequest.PublishContextEntryR\x0epublishContext\x12.\n" + + "\x13staging_target_path\x18\x03 \x01(\tR\x11stagingTargetPath\x12\x1f\n" + + "\vtarget_path\x18\x04 \x01(\tR\n" + + "targetPath\x12E\n" + + "\x11volume_capability\x18\x05 \x01(\v2\x18.csi.v1.VolumeCapabilityR\x10volumeCapability\x12\x1a\n" + + "\breadonly\x18\x06 \x01(\bR\breadonly\x12L\n" + + "\asecrets\x18\a \x03(\v2-.csi.v1.NodePublishVolumeRequest.SecretsEntryB\x03\x98B\x01R\asecrets\x12Z\n" + + "\x0evolume_context\x18\b \x03(\v23.csi.v1.NodePublishVolumeRequest.VolumeContextEntryR\rvolumeContext\x1aA\n" + + "\x13PublishContextEntry\x12\x10\n" + + "\x03key\x18\x01 \x01(\tR\x03key\x12\x14\n" + + "\x05value\x18\x02 \x01(\tR\x05value:\x028\x01\x1a:\n" + + "\fSecretsEntry\x12\x10\n" + + "\x03key\x18\x01 \x01(\tR\x03key\x12\x14\n" + + "\x05value\x18\x02 \x01(\tR\x05value:\x028\x01\x1a@\n" + + "\x12VolumeContextEntry\x12\x10\n" + + "\x03key\x18\x01 \x01(\tR\x03key\x12\x14\n" + + "\x05value\x18\x02 \x01(\tR\x05value:\x028\x01\"\x1b\n" + + "\x19NodePublishVolumeResponse\"Z\n" + + "\x1aNodeUnpublishVolumeRequest\x12\x1b\n" + + "\tvolume_id\x18\x01 \x01(\tR\bvolumeId\x12\x1f\n" + + "\vtarget_path\x18\x02 \x01(\tR\n" + + "targetPath\"\x1d\n" + + "\x1bNodeUnpublishVolumeResponse\"\x89\x01\n" + + "\x19NodeGetVolumeStatsRequest\x12\x1b\n" + + "\tvolume_id\x18\x01 \x01(\tR\bvolumeId\x12\x1f\n" + + "\vvolume_path\x18\x02 \x01(\tR\n" + + "volumePath\x12.\n" + + "\x13staging_target_path\x18\x03 \x01(\tR\x11stagingTargetPath\"M\n" + + "\x1aNodeGetVolumeStatsResponse\x12)\n" + + "\x05usage\x18\x01 \x03(\v2\x13.csi.v1.VolumeUsageR\x05usageJ\x04\b\x02\x10\x03\"\xaf\x01\n" + + "\vVolumeUsage\x12\x1c\n" + + "\tavailable\x18\x01 \x01(\x03R\tavailable\x12\x14\n" + + "\x05total\x18\x02 \x01(\x03R\x05total\x12\x12\n" + + "\x04used\x18\x03 \x01(\x03R\x04used\x12,\n" + + "\x04unit\x18\x04 \x01(\x0e2\x18.csi.v1.VolumeUsage.UnitR\x04unit\"*\n" + + "\x04Unit\x12\v\n" + + "\aUNKNOWN\x10\x00\x12\t\n" + + "\x05BYTES\x10\x01\x12\n" + + "\n" + + "\x06INODES\x10\x02\"\x9e\x01\n" + + "\x1aNodeGetVolumeHealthRequest\x12\x1b\n" + + "\tvolume_id\x18\x01 \x01(\tR\bvolumeId\x12.\n" + + "\x13volume_publish_path\x18\x02 \x01(\tR\x11volumePublishPath\x12.\n" + + "\x13staging_target_path\x18\x03 \x01(\tR\x11stagingTargetPath:\x03\xa0B\x01\"]\n" + + "\x1bNodeGetVolumeHealthResponse\x129\n" + + "\rvolume_health\x18\x01 \x01(\v2\x14.csi.v1.VolumeHealthR\fvolumeHealth:\x03\xa0B\x01\"\xaf\x01\n" + + "\x1bNodeGetStorageHealthRequest\x12O\n" + + "\asecrets\x18\x01 \x03(\v20.csi.v1.NodeGetStorageHealthRequest.SecretsEntryB\x03\x98B\x01R\asecrets\x1a:\n" + + "\fSecretsEntry\x12\x10\n" + + "\x03key\x18\x01 \x01(\tR\x03key\x12\x14\n" + + "\x05value\x18\x02 \x01(\tR\x05value:\x028\x01:\x03\xa0B\x01\"\xcf\x02\n" + + "\x1cNodeGetStorageHealthResponse\x12`\n" + + "\x0ebackend_health\x18\x01 \x03(\v29.csi.v1.NodeGetStorageHealthResponse.StorageBackendHealthR\rbackendHealth\x1a\xc7\x01\n" + + "\x14StorageBackendHealth\x126\n" + + "\x06status\x18\x01 \x01(\x0e2\x1e.csi.v1.StorageHealthErrorTypeR\x06status\x12\x16\n" + + "\x06reason\x18\x02 \x01(\tR\x06reason\x12\x18\n" + + "\amessage\x18\x03 \x01(\tR\amessage\x12E\n" + + "\x11volume_capability\x18\x04 \x01(\v2\x18.csi.v1.VolumeCapabilityR\x10volumeCapability:\x03\xa0B\x01\"\x1c\n" + + "\x1aNodeGetCapabilitiesRequest\"`\n" + + "\x1bNodeGetCapabilitiesResponse\x12A\n" + + "\fcapabilities\x18\x01 \x03(\v2\x1d.csi.v1.NodeServiceCapabilityR\fcapabilities\"\xed\x02\n" + + "\x15NodeServiceCapability\x125\n" + + "\x03rpc\x18\x01 \x01(\v2!.csi.v1.NodeServiceCapability.RPCH\x00R\x03rpc\x1a\x94\x02\n" + + "\x03RPC\x12:\n" + + "\x04type\x18\x01 \x01(\x0e2&.csi.v1.NodeServiceCapability.RPC.TypeR\x04type\"\xd0\x01\n" + + "\x04Type\x12\v\n" + + "\aUNKNOWN\x10\x00\x12\x18\n" + + "\x14STAGE_UNSTAGE_VOLUME\x10\x01\x12\x14\n" + + "\x10GET_VOLUME_STATS\x10\x02\x12\x11\n" + + "\rEXPAND_VOLUME\x10\x03\x12!\n" + + "\x18SINGLE_NODE_MULTI_WRITER\x10\x05\x1a\x03\xa0B\x01\x12\x16\n" + + "\x12VOLUME_MOUNT_GROUP\x10\x06\x12\x1a\n" + + "\x11GET_VOLUME_HEALTH\x10\a\x1a\x03\xa0B\x01\x12\x1b\n" + + "\x12GET_STORAGE_HEALTH\x10\b\x1a\x03\xa0B\x01\"\x04\b\x04\x10\x04B\x06\n" + + "\x04type\"\x14\n" + + "\x12NodeGetInfoRequest\"\xa2\x01\n" + + "\x13NodeGetInfoResponse\x12\x17\n" + + "\anode_id\x18\x01 \x01(\tR\x06nodeId\x12/\n" + + "\x14max_volumes_per_node\x18\x02 \x01(\x03R\x11maxVolumesPerNode\x12A\n" + + "\x13accessible_topology\x18\x03 \x01(\v2\x10.csi.v1.TopologyR\x12accessibleTopology\"\x98\x03\n" + + "\x17NodeExpandVolumeRequest\x12\x1b\n" + + "\tvolume_id\x18\x01 \x01(\tR\bvolumeId\x12\x1f\n" + + "\vvolume_path\x18\x02 \x01(\tR\n" + + "volumePath\x12<\n" + + "\x0ecapacity_range\x18\x03 \x01(\v2\x15.csi.v1.CapacityRangeR\rcapacityRange\x12.\n" + + "\x13staging_target_path\x18\x04 \x01(\tR\x11stagingTargetPath\x12E\n" + + "\x11volume_capability\x18\x05 \x01(\v2\x18.csi.v1.VolumeCapabilityR\x10volumeCapability\x12N\n" + + "\asecrets\x18\x06 \x03(\v2,.csi.v1.NodeExpandVolumeRequest.SecretsEntryB\x06\x98B\x01\xa0B\x01R\asecrets\x1a:\n" + + "\fSecretsEntry\x12\x10\n" + + "\x03key\x18\x01 \x01(\tR\x03key\x12\x14\n" + + "\x05value\x18\x02 \x01(\tR\x05value:\x028\x01\"A\n" + + "\x18NodeExpandVolumeResponse\x12%\n" + + "\x0ecapacity_bytes\x18\x01 \x01(\x03R\rcapacityBytes\"'\n" + + "%GroupControllerGetCapabilitiesRequest\"v\n" + + "&GroupControllerGetCapabilitiesResponse\x12L\n" + + "\fcapabilities\x18\x01 \x03(\v2(.csi.v1.GroupControllerServiceCapabilityR\fcapabilities\"\xfd\x01\n" + + " GroupControllerServiceCapability\x12@\n" + + "\x03rpc\x18\x01 \x01(\v2,.csi.v1.GroupControllerServiceCapability.RPCH\x00R\x03rpc\x1a\x8e\x01\n" + + "\x03RPC\x12E\n" + + "\x04type\x18\x01 \x01(\x0e21.csi.v1.GroupControllerServiceCapability.RPC.TypeR\x04type\"@\n" + + "\x04Type\x12\v\n" + + "\aUNKNOWN\x10\x00\x12+\n" + + "'CREATE_DELETE_GET_VOLUME_GROUP_SNAPSHOT\x10\x01B\x06\n" + + "\x04type\"\x8d\x03\n" + + " CreateVolumeGroupSnapshotRequest\x12\x12\n" + + "\x04name\x18\x01 \x01(\tR\x04name\x12*\n" + + "\x11source_volume_ids\x18\x02 \x03(\tR\x0fsourceVolumeIds\x12T\n" + + "\asecrets\x18\x03 \x03(\v25.csi.v1.CreateVolumeGroupSnapshotRequest.SecretsEntryB\x03\x98B\x01R\asecrets\x12X\n" + + "\n" + + "parameters\x18\x04 \x03(\v28.csi.v1.CreateVolumeGroupSnapshotRequest.ParametersEntryR\n" + + "parameters\x1a:\n" + + "\fSecretsEntry\x12\x10\n" + + "\x03key\x18\x01 \x01(\tR\x03key\x12\x14\n" + + "\x05value\x18\x02 \x01(\tR\x05value:\x028\x01\x1a=\n" + + "\x0fParametersEntry\x12\x10\n" + + "\x03key\x18\x01 \x01(\tR\x03key\x12\x14\n" + + "\x05value\x18\x02 \x01(\tR\x05value:\x028\x01\"g\n" + + "!CreateVolumeGroupSnapshotResponse\x12B\n" + + "\x0egroup_snapshot\x18\x01 \x01(\v2\x1b.csi.v1.VolumeGroupSnapshotR\rgroupSnapshot\"\xd4\x01\n" + + "\x13VolumeGroupSnapshot\x12*\n" + + "\x11group_snapshot_id\x18\x01 \x01(\tR\x0fgroupSnapshotId\x12.\n" + + "\tsnapshots\x18\x02 \x03(\v2\x10.csi.v1.SnapshotR\tsnapshots\x12?\n" + + "\rcreation_time\x18\x03 \x01(\v2\x1a.google.protobuf.TimestampR\fcreationTime\x12 \n" + + "\fready_to_use\x18\x04 \x01(\bR\n" + + "readyToUse\"\x83\x02\n" + + " DeleteVolumeGroupSnapshotRequest\x12*\n" + + "\x11group_snapshot_id\x18\x01 \x01(\tR\x0fgroupSnapshotId\x12!\n" + + "\fsnapshot_ids\x18\x02 \x03(\tR\vsnapshotIds\x12T\n" + + "\asecrets\x18\x03 \x03(\v25.csi.v1.DeleteVolumeGroupSnapshotRequest.SecretsEntryB\x03\x98B\x01R\asecrets\x1a:\n" + + "\fSecretsEntry\x12\x10\n" + + "\x03key\x18\x01 \x01(\tR\x03key\x12\x14\n" + + "\x05value\x18\x02 \x01(\tR\x05value:\x028\x01\"#\n" + + "!DeleteVolumeGroupSnapshotResponse\"\xfd\x01\n" + + "\x1dGetVolumeGroupSnapshotRequest\x12*\n" + + "\x11group_snapshot_id\x18\x01 \x01(\tR\x0fgroupSnapshotId\x12!\n" + + "\fsnapshot_ids\x18\x02 \x03(\tR\vsnapshotIds\x12Q\n" + + "\asecrets\x18\x03 \x03(\v22.csi.v1.GetVolumeGroupSnapshotRequest.SecretsEntryB\x03\x98B\x01R\asecrets\x1a:\n" + + "\fSecretsEntry\x12\x10\n" + + "\x03key\x18\x01 \x01(\tR\x03key\x12\x14\n" + + "\x05value\x18\x02 \x01(\tR\x05value:\x028\x01\"d\n" + + "\x1eGetVolumeGroupSnapshotResponse\x12B\n" + + "\x0egroup_snapshot\x18\x01 \x01(\v2\x1b.csi.v1.VolumeGroupSnapshotR\rgroupSnapshot\"O\n" + + "\rBlockMetadata\x12\x1f\n" + + "\vbyte_offset\x18\x01 \x01(\x03R\n" + + "byteOffset\x12\x1d\n" + + "\n" + + "size_bytes\x18\x02 \x01(\x03R\tsizeBytes\"\x95\x02\n" + + "\x1bGetMetadataAllocatedRequest\x12\x1f\n" + + "\vsnapshot_id\x18\x01 \x01(\tR\n" + + "snapshotId\x12'\n" + + "\x0fstarting_offset\x18\x02 \x01(\x03R\x0estartingOffset\x12\x1f\n" + + "\vmax_results\x18\x03 \x01(\x05R\n" + + "maxResults\x12O\n" + + "\asecrets\x18\x04 \x03(\v20.csi.v1.GetMetadataAllocatedRequest.SecretsEntryB\x03\x98B\x01R\asecrets\x1a:\n" + + "\fSecretsEntry\x12\x10\n" + + "\x03key\x18\x01 \x01(\tR\x03key\x12\x14\n" + + "\x05value\x18\x02 \x01(\tR\x05value:\x028\x01\"\xdb\x01\n" + + "\x1cGetMetadataAllocatedResponse\x12I\n" + + "\x13block_metadata_type\x18\x01 \x01(\x0e2\x19.csi.v1.BlockMetadataTypeR\x11blockMetadataType\x122\n" + + "\x15volume_capacity_bytes\x18\x02 \x01(\x03R\x13volumeCapacityBytes\x12<\n" + + "\x0eblock_metadata\x18\x03 \x03(\v2\x15.csi.v1.BlockMetadataR\rblockMetadata\"\xc4\x02\n" + + "\x17GetMetadataDeltaRequest\x12(\n" + + "\x10base_snapshot_id\x18\x01 \x01(\tR\x0ebaseSnapshotId\x12,\n" + + "\x12target_snapshot_id\x18\x02 \x01(\tR\x10targetSnapshotId\x12'\n" + + "\x0fstarting_offset\x18\x03 \x01(\x03R\x0estartingOffset\x12\x1f\n" + + "\vmax_results\x18\x04 \x01(\x05R\n" + + "maxResults\x12K\n" + + "\asecrets\x18\x05 \x03(\v2,.csi.v1.GetMetadataDeltaRequest.SecretsEntryB\x03\x98B\x01R\asecrets\x1a:\n" + + "\fSecretsEntry\x12\x10\n" + + "\x03key\x18\x01 \x01(\tR\x03key\x12\x14\n" + + "\x05value\x18\x02 \x01(\tR\x05value:\x028\x01\"\xd7\x01\n" + + "\x18GetMetadataDeltaResponse\x12I\n" + + "\x13block_metadata_type\x18\x01 \x01(\x0e2\x19.csi.v1.BlockMetadataTypeR\x11blockMetadataType\x122\n" + + "\x15volume_capacity_bytes\x18\x02 \x01(\x03R\x13volumeCapacityBytes\x12<\n" + + "\x0eblock_metadata\x18\x03 \x03(\v2\x15.csi.v1.BlockMetadataR\rblockMetadata*f\n" + + "\x15VolumeHealthErrorType\x12\x1e\n" + + "\x1aUNKNOWN_VOLUME_HEALTH_TYPE\x10\x00\x12\f\n" + + "\bDEGRADED\x10\x01\x12\x10\n" + + "\fINACCESSIBLE\x10\x02\x12\r\n" + + "\tDATA_LOSS\x10\x03*n\n" + + "\x16StorageHealthErrorType\x12%\n" + + "!UNKNOWN_STORAGE_HEALTH_ERROR_TYPE\x10\x00\x12\x14\n" + + "\x10STORAGE_DEGRADED\x10\x01\x12\x17\n" + + "\x13STORAGE_UNREACHABLE\x10\x02*G\n" + + "\x11BlockMetadataType\x12\v\n" + + "\aUNKNOWN\x10\x00\x12\x10\n" + + "\fFIXED_LENGTH\x10\x01\x12\x13\n" + + "\x0fVARIABLE_LENGTH\x10\x022\xfa\x01\n" + + "\bIdentity\x12N\n" + + "\rGetPluginInfo\x12\x1c.csi.v1.GetPluginInfoRequest\x1a\x1d.csi.v1.GetPluginInfoResponse\"\x00\x12f\n" + + "\x15GetPluginCapabilities\x12$.csi.v1.GetPluginCapabilitiesRequest\x1a%.csi.v1.GetPluginCapabilitiesResponse\"\x00\x126\n" + + "\x05Probe\x12\x14.csi.v1.ProbeRequest\x1a\x15.csi.v1.ProbeResponse\"\x002\xf6\f\n" + + "\n" + + "Controller\x12K\n" + + "\fCreateVolume\x12\x1b.csi.v1.CreateVolumeRequest\x1a\x1c.csi.v1.CreateVolumeResponse\"\x00\x12K\n" + + "\fDeleteVolume\x12\x1b.csi.v1.DeleteVolumeRequest\x1a\x1c.csi.v1.DeleteVolumeResponse\"\x00\x12l\n" + + "\x17ControllerPublishVolume\x12&.csi.v1.ControllerPublishVolumeRequest\x1a'.csi.v1.ControllerPublishVolumeResponse\"\x00\x12r\n" + + "\x19ControllerUnpublishVolume\x12(.csi.v1.ControllerUnpublishVolumeRequest\x1a).csi.v1.ControllerUnpublishVolumeResponse\"\x00\x12u\n" + + "\x1aValidateVolumeCapabilities\x12).csi.v1.ValidateVolumeCapabilitiesRequest\x1a*.csi.v1.ValidateVolumeCapabilitiesResponse\"\x00\x12H\n" + + "\vListVolumes\x12\x1a.csi.v1.ListVolumesRequest\x1a\x1b.csi.v1.ListVolumesResponse\"\x00\x12x\n" + + "\x1aControllerListVolumeHealth\x12).csi.v1.ControllerListVolumeHealthRequest\x1a*.csi.v1.ControllerListVolumeHealthResponse\"\x03\xa0B\x01\x12u\n" + + "\x19ControllerGetVolumeHealth\x12(.csi.v1.ControllerGetVolumeHealthRequest\x1a).csi.v1.ControllerGetVolumeHealthResponse\"\x03\xa0B\x01\x12H\n" + + "\vGetCapacity\x12\x1a.csi.v1.GetCapacityRequest\x1a\x1b.csi.v1.GetCapacityResponse\"\x00\x12r\n" + + "\x19ControllerGetCapabilities\x12(.csi.v1.ControllerGetCapabilitiesRequest\x1a).csi.v1.ControllerGetCapabilitiesResponse\"\x00\x12Q\n" + + "\x0eCreateSnapshot\x12\x1d.csi.v1.CreateSnapshotRequest\x1a\x1e.csi.v1.CreateSnapshotResponse\"\x00\x12Q\n" + + "\x0eDeleteSnapshot\x12\x1d.csi.v1.DeleteSnapshotRequest\x1a\x1e.csi.v1.DeleteSnapshotResponse\"\x00\x12N\n" + + "\rListSnapshots\x12\x1c.csi.v1.ListSnapshotsRequest\x1a\x1d.csi.v1.ListSnapshotsResponse\"\x00\x12K\n" + + "\vGetSnapshot\x12\x1a.csi.v1.GetSnapshotRequest\x1a\x1b.csi.v1.GetSnapshotResponse\"\x03\xa0B\x01\x12i\n" + + "\x16ControllerExpandVolume\x12%.csi.v1.ControllerExpandVolumeRequest\x1a&.csi.v1.ControllerExpandVolumeResponse\"\x00\x12c\n" + + "\x13ControllerGetVolume\x12\".csi.v1.ControllerGetVolumeRequest\x1a#.csi.v1.ControllerGetVolumeResponse\"\x03\xa0B\x01\x12i\n" + + "\x16ControllerModifyVolume\x12%.csi.v1.ControllerModifyVolumeRequest\x1a&.csi.v1.ControllerModifyVolumeResponse\"\x002\xe8\x03\n" + + "\x0fGroupController\x12\x81\x01\n" + + "\x1eGroupControllerGetCapabilities\x12-.csi.v1.GroupControllerGetCapabilitiesRequest\x1a..csi.v1.GroupControllerGetCapabilitiesResponse\"\x00\x12r\n" + + "\x19CreateVolumeGroupSnapshot\x12(.csi.v1.CreateVolumeGroupSnapshotRequest\x1a).csi.v1.CreateVolumeGroupSnapshotResponse\"\x00\x12r\n" + + "\x19DeleteVolumeGroupSnapshot\x12(.csi.v1.DeleteVolumeGroupSnapshotRequest\x1a).csi.v1.DeleteVolumeGroupSnapshotResponse\"\x00\x12i\n" + + "\x16GetVolumeGroupSnapshot\x12%.csi.v1.GetVolumeGroupSnapshotRequest\x1a&.csi.v1.GetVolumeGroupSnapshotResponse\"\x002\xd9\x01\n" + + "\x10SnapshotMetadata\x12e\n" + + "\x14GetMetadataAllocated\x12#.csi.v1.GetMetadataAllocatedRequest\x1a$.csi.v1.GetMetadataAllocatedResponse\"\x000\x01\x12Y\n" + + "\x10GetMetadataDelta\x12\x1f.csi.v1.GetMetadataDeltaRequest\x1a .csi.v1.GetMetadataDeltaResponse\"\x000\x01\x1a\x03\xa0B\x012\xa7\a\n" + + "\x04Node\x12T\n" + + "\x0fNodeStageVolume\x12\x1e.csi.v1.NodeStageVolumeRequest\x1a\x1f.csi.v1.NodeStageVolumeResponse\"\x00\x12Z\n" + + "\x11NodeUnstageVolume\x12 .csi.v1.NodeUnstageVolumeRequest\x1a!.csi.v1.NodeUnstageVolumeResponse\"\x00\x12Z\n" + + "\x11NodePublishVolume\x12 .csi.v1.NodePublishVolumeRequest\x1a!.csi.v1.NodePublishVolumeResponse\"\x00\x12`\n" + + "\x13NodeUnpublishVolume\x12\".csi.v1.NodeUnpublishVolumeRequest\x1a#.csi.v1.NodeUnpublishVolumeResponse\"\x00\x12]\n" + + "\x12NodeGetVolumeStats\x12!.csi.v1.NodeGetVolumeStatsRequest\x1a\".csi.v1.NodeGetVolumeStatsResponse\"\x00\x12c\n" + + "\x13NodeGetVolumeHealth\x12\".csi.v1.NodeGetVolumeHealthRequest\x1a#.csi.v1.NodeGetVolumeHealthResponse\"\x03\xa0B\x01\x12f\n" + + "\x14NodeGetStorageHealth\x12#.csi.v1.NodeGetStorageHealthRequest\x1a$.csi.v1.NodeGetStorageHealthResponse\"\x03\xa0B\x01\x12W\n" + + "\x10NodeExpandVolume\x12\x1f.csi.v1.NodeExpandVolumeRequest\x1a .csi.v1.NodeExpandVolumeResponse\"\x00\x12`\n" + + "\x13NodeGetCapabilities\x12\".csi.v1.NodeGetCapabilitiesRequest\x1a#.csi.v1.NodeGetCapabilitiesResponse\"\x00\x12H\n" + + "\vNodeGetInfo\x12\x1a.csi.v1.NodeGetInfoRequest\x1a\x1b.csi.v1.NodeGetInfoResponse\"\x00:<\n" + + "\n" + + "alpha_enum\x12\x1c.google.protobuf.EnumOptions\x18\xa4\b \x01(\bR\talphaEnum:L\n" + + "\x10alpha_enum_value\x12!.google.protobuf.EnumValueOptions\x18\xa4\b \x01(\bR\x0ealphaEnumValue:=\n" + + "\n" + + "csi_secret\x12\x1d.google.protobuf.FieldOptions\x18\xa3\b \x01(\bR\tcsiSecret:?\n" + + "\valpha_field\x12\x1d.google.protobuf.FieldOptions\x18\xa4\b \x01(\bR\n" + + "alphaField:E\n" + + "\ralpha_message\x12\x1f.google.protobuf.MessageOptions\x18\xa4\b \x01(\bR\falphaMessage:B\n" + + "\falpha_method\x12\x1e.google.protobuf.MethodOptions\x18\xa4\b \x01(\bR\valphaMethod:E\n" + + "\ralpha_service\x12\x1f.google.protobuf.ServiceOptions\x18\xa4\b \x01(\bR\falphaServiceB8Z6github.com/container-storage-interface/spec/lib/go/csib\x06proto3" var ( file_csi_proto_rawDescOnce sync.Once - file_csi_proto_rawDescData = file_csi_proto_rawDesc + file_csi_proto_rawDescData []byte ) func file_csi_proto_rawDescGZIP() []byte { file_csi_proto_rawDescOnce.Do(func() { - file_csi_proto_rawDescData = protoimpl.X.CompressGZIP(file_csi_proto_rawDescData) + file_csi_proto_rawDescData = protoimpl.X.CompressGZIP(unsafe.Slice(unsafe.StringData(file_csi_proto_rawDesc), len(file_csi_proto_rawDesc))) }) return file_csi_proto_rawDescData } -var file_csi_proto_enumTypes = make([]protoimpl.EnumInfo, 8) -var file_csi_proto_msgTypes = make([]protoimpl.MessageInfo, 134) -var file_csi_proto_goTypes = []interface{}{ - (BlockMetadataType)(0), // 0: csi.v1.BlockMetadataType - (PluginCapability_Service_Type)(0), // 1: csi.v1.PluginCapability.Service.Type - (PluginCapability_VolumeExpansion_Type)(0), // 2: csi.v1.PluginCapability.VolumeExpansion.Type - (VolumeCapability_AccessMode_Mode)(0), // 3: csi.v1.VolumeCapability.AccessMode.Mode - (ControllerServiceCapability_RPC_Type)(0), // 4: csi.v1.ControllerServiceCapability.RPC.Type - (VolumeUsage_Unit)(0), // 5: csi.v1.VolumeUsage.Unit - (NodeServiceCapability_RPC_Type)(0), // 6: csi.v1.NodeServiceCapability.RPC.Type - (GroupControllerServiceCapability_RPC_Type)(0), // 7: csi.v1.GroupControllerServiceCapability.RPC.Type - (*GetPluginInfoRequest)(nil), // 8: csi.v1.GetPluginInfoRequest - (*GetPluginInfoResponse)(nil), // 9: csi.v1.GetPluginInfoResponse - (*GetPluginCapabilitiesRequest)(nil), // 10: csi.v1.GetPluginCapabilitiesRequest - (*GetPluginCapabilitiesResponse)(nil), // 11: csi.v1.GetPluginCapabilitiesResponse - (*PluginCapability)(nil), // 12: csi.v1.PluginCapability - (*ProbeRequest)(nil), // 13: csi.v1.ProbeRequest - (*ProbeResponse)(nil), // 14: csi.v1.ProbeResponse - (*CreateVolumeRequest)(nil), // 15: csi.v1.CreateVolumeRequest - (*VolumeContentSource)(nil), // 16: csi.v1.VolumeContentSource - (*CreateVolumeResponse)(nil), // 17: csi.v1.CreateVolumeResponse - (*VolumeCapability)(nil), // 18: csi.v1.VolumeCapability - (*CapacityRange)(nil), // 19: csi.v1.CapacityRange - (*Volume)(nil), // 20: csi.v1.Volume - (*TopologyRequirement)(nil), // 21: csi.v1.TopologyRequirement - (*Topology)(nil), // 22: csi.v1.Topology - (*DeleteVolumeRequest)(nil), // 23: csi.v1.DeleteVolumeRequest - (*DeleteVolumeResponse)(nil), // 24: csi.v1.DeleteVolumeResponse - (*ControllerPublishVolumeRequest)(nil), // 25: csi.v1.ControllerPublishVolumeRequest - (*ControllerPublishVolumeResponse)(nil), // 26: csi.v1.ControllerPublishVolumeResponse - (*ControllerUnpublishVolumeRequest)(nil), // 27: csi.v1.ControllerUnpublishVolumeRequest - (*ControllerUnpublishVolumeResponse)(nil), // 28: csi.v1.ControllerUnpublishVolumeResponse - (*ValidateVolumeCapabilitiesRequest)(nil), // 29: csi.v1.ValidateVolumeCapabilitiesRequest - (*ValidateVolumeCapabilitiesResponse)(nil), // 30: csi.v1.ValidateVolumeCapabilitiesResponse - (*ListVolumesRequest)(nil), // 31: csi.v1.ListVolumesRequest - (*ListVolumesResponse)(nil), // 32: csi.v1.ListVolumesResponse - (*ControllerGetVolumeRequest)(nil), // 33: csi.v1.ControllerGetVolumeRequest - (*ControllerGetVolumeResponse)(nil), // 34: csi.v1.ControllerGetVolumeResponse - (*ControllerModifyVolumeRequest)(nil), // 35: csi.v1.ControllerModifyVolumeRequest - (*ControllerModifyVolumeResponse)(nil), // 36: csi.v1.ControllerModifyVolumeResponse - (*GetCapacityRequest)(nil), // 37: csi.v1.GetCapacityRequest - (*GetCapacityResponse)(nil), // 38: csi.v1.GetCapacityResponse - (*ControllerGetCapabilitiesRequest)(nil), // 39: csi.v1.ControllerGetCapabilitiesRequest - (*ControllerGetCapabilitiesResponse)(nil), // 40: csi.v1.ControllerGetCapabilitiesResponse - (*ControllerServiceCapability)(nil), // 41: csi.v1.ControllerServiceCapability - (*CreateSnapshotRequest)(nil), // 42: csi.v1.CreateSnapshotRequest - (*CreateSnapshotResponse)(nil), // 43: csi.v1.CreateSnapshotResponse - (*Snapshot)(nil), // 44: csi.v1.Snapshot - (*DeleteSnapshotRequest)(nil), // 45: csi.v1.DeleteSnapshotRequest - (*DeleteSnapshotResponse)(nil), // 46: csi.v1.DeleteSnapshotResponse - (*ListSnapshotsRequest)(nil), // 47: csi.v1.ListSnapshotsRequest - (*ListSnapshotsResponse)(nil), // 48: csi.v1.ListSnapshotsResponse - (*GetSnapshotRequest)(nil), // 49: csi.v1.GetSnapshotRequest - (*GetSnapshotResponse)(nil), // 50: csi.v1.GetSnapshotResponse - (*ControllerExpandVolumeRequest)(nil), // 51: csi.v1.ControllerExpandVolumeRequest - (*ControllerExpandVolumeResponse)(nil), // 52: csi.v1.ControllerExpandVolumeResponse - (*NodeStageVolumeRequest)(nil), // 53: csi.v1.NodeStageVolumeRequest - (*NodeStageVolumeResponse)(nil), // 54: csi.v1.NodeStageVolumeResponse - (*NodeUnstageVolumeRequest)(nil), // 55: csi.v1.NodeUnstageVolumeRequest - (*NodeUnstageVolumeResponse)(nil), // 56: csi.v1.NodeUnstageVolumeResponse - (*NodePublishVolumeRequest)(nil), // 57: csi.v1.NodePublishVolumeRequest - (*NodePublishVolumeResponse)(nil), // 58: csi.v1.NodePublishVolumeResponse - (*NodeUnpublishVolumeRequest)(nil), // 59: csi.v1.NodeUnpublishVolumeRequest - (*NodeUnpublishVolumeResponse)(nil), // 60: csi.v1.NodeUnpublishVolumeResponse - (*NodeGetVolumeStatsRequest)(nil), // 61: csi.v1.NodeGetVolumeStatsRequest - (*NodeGetVolumeStatsResponse)(nil), // 62: csi.v1.NodeGetVolumeStatsResponse - (*VolumeUsage)(nil), // 63: csi.v1.VolumeUsage - (*VolumeCondition)(nil), // 64: csi.v1.VolumeCondition - (*NodeGetCapabilitiesRequest)(nil), // 65: csi.v1.NodeGetCapabilitiesRequest - (*NodeGetCapabilitiesResponse)(nil), // 66: csi.v1.NodeGetCapabilitiesResponse - (*NodeServiceCapability)(nil), // 67: csi.v1.NodeServiceCapability - (*NodeGetInfoRequest)(nil), // 68: csi.v1.NodeGetInfoRequest - (*NodeGetInfoResponse)(nil), // 69: csi.v1.NodeGetInfoResponse - (*NodeExpandVolumeRequest)(nil), // 70: csi.v1.NodeExpandVolumeRequest - (*NodeExpandVolumeResponse)(nil), // 71: csi.v1.NodeExpandVolumeResponse - (*GroupControllerGetCapabilitiesRequest)(nil), // 72: csi.v1.GroupControllerGetCapabilitiesRequest - (*GroupControllerGetCapabilitiesResponse)(nil), // 73: csi.v1.GroupControllerGetCapabilitiesResponse - (*GroupControllerServiceCapability)(nil), // 74: csi.v1.GroupControllerServiceCapability - (*CreateVolumeGroupSnapshotRequest)(nil), // 75: csi.v1.CreateVolumeGroupSnapshotRequest - (*CreateVolumeGroupSnapshotResponse)(nil), // 76: csi.v1.CreateVolumeGroupSnapshotResponse - (*VolumeGroupSnapshot)(nil), // 77: csi.v1.VolumeGroupSnapshot - (*DeleteVolumeGroupSnapshotRequest)(nil), // 78: csi.v1.DeleteVolumeGroupSnapshotRequest - (*DeleteVolumeGroupSnapshotResponse)(nil), // 79: csi.v1.DeleteVolumeGroupSnapshotResponse - (*GetVolumeGroupSnapshotRequest)(nil), // 80: csi.v1.GetVolumeGroupSnapshotRequest - (*GetVolumeGroupSnapshotResponse)(nil), // 81: csi.v1.GetVolumeGroupSnapshotResponse - (*BlockMetadata)(nil), // 82: csi.v1.BlockMetadata - (*GetMetadataAllocatedRequest)(nil), // 83: csi.v1.GetMetadataAllocatedRequest - (*GetMetadataAllocatedResponse)(nil), // 84: csi.v1.GetMetadataAllocatedResponse - (*GetMetadataDeltaRequest)(nil), // 85: csi.v1.GetMetadataDeltaRequest - (*GetMetadataDeltaResponse)(nil), // 86: csi.v1.GetMetadataDeltaResponse - nil, // 87: csi.v1.GetPluginInfoResponse.ManifestEntry - (*PluginCapability_Service)(nil), // 88: csi.v1.PluginCapability.Service - (*PluginCapability_VolumeExpansion)(nil), // 89: csi.v1.PluginCapability.VolumeExpansion - nil, // 90: csi.v1.CreateVolumeRequest.ParametersEntry - nil, // 91: csi.v1.CreateVolumeRequest.SecretsEntry - nil, // 92: csi.v1.CreateVolumeRequest.MutableParametersEntry - (*VolumeContentSource_SnapshotSource)(nil), // 93: csi.v1.VolumeContentSource.SnapshotSource - (*VolumeContentSource_VolumeSource)(nil), // 94: csi.v1.VolumeContentSource.VolumeSource - (*VolumeCapability_BlockVolume)(nil), // 95: csi.v1.VolumeCapability.BlockVolume - (*VolumeCapability_MountVolume)(nil), // 96: csi.v1.VolumeCapability.MountVolume - (*VolumeCapability_AccessMode)(nil), // 97: csi.v1.VolumeCapability.AccessMode - nil, // 98: csi.v1.Volume.VolumeContextEntry - nil, // 99: csi.v1.Topology.SegmentsEntry - nil, // 100: csi.v1.DeleteVolumeRequest.SecretsEntry - nil, // 101: csi.v1.ControllerPublishVolumeRequest.SecretsEntry - nil, // 102: csi.v1.ControllerPublishVolumeRequest.VolumeContextEntry - nil, // 103: csi.v1.ControllerPublishVolumeResponse.PublishContextEntry - nil, // 104: csi.v1.ControllerUnpublishVolumeRequest.SecretsEntry - nil, // 105: csi.v1.ValidateVolumeCapabilitiesRequest.VolumeContextEntry - nil, // 106: csi.v1.ValidateVolumeCapabilitiesRequest.ParametersEntry - nil, // 107: csi.v1.ValidateVolumeCapabilitiesRequest.SecretsEntry - nil, // 108: csi.v1.ValidateVolumeCapabilitiesRequest.MutableParametersEntry - (*ValidateVolumeCapabilitiesResponse_Confirmed)(nil), // 109: csi.v1.ValidateVolumeCapabilitiesResponse.Confirmed - nil, // 110: csi.v1.ValidateVolumeCapabilitiesResponse.Confirmed.VolumeContextEntry - nil, // 111: csi.v1.ValidateVolumeCapabilitiesResponse.Confirmed.ParametersEntry - nil, // 112: csi.v1.ValidateVolumeCapabilitiesResponse.Confirmed.MutableParametersEntry - (*ListVolumesResponse_VolumeStatus)(nil), // 113: csi.v1.ListVolumesResponse.VolumeStatus - (*ListVolumesResponse_Entry)(nil), // 114: csi.v1.ListVolumesResponse.Entry - (*ControllerGetVolumeResponse_VolumeStatus)(nil), // 115: csi.v1.ControllerGetVolumeResponse.VolumeStatus - nil, // 116: csi.v1.ControllerModifyVolumeRequest.SecretsEntry - nil, // 117: csi.v1.ControllerModifyVolumeRequest.MutableParametersEntry - nil, // 118: csi.v1.GetCapacityRequest.ParametersEntry - (*ControllerServiceCapability_RPC)(nil), // 119: csi.v1.ControllerServiceCapability.RPC - nil, // 120: csi.v1.CreateSnapshotRequest.SecretsEntry - nil, // 121: csi.v1.CreateSnapshotRequest.ParametersEntry - nil, // 122: csi.v1.DeleteSnapshotRequest.SecretsEntry - nil, // 123: csi.v1.ListSnapshotsRequest.SecretsEntry - (*ListSnapshotsResponse_Entry)(nil), // 124: csi.v1.ListSnapshotsResponse.Entry - nil, // 125: csi.v1.GetSnapshotRequest.SecretsEntry - nil, // 126: csi.v1.ControllerExpandVolumeRequest.SecretsEntry - nil, // 127: csi.v1.NodeStageVolumeRequest.PublishContextEntry - nil, // 128: csi.v1.NodeStageVolumeRequest.SecretsEntry - nil, // 129: csi.v1.NodeStageVolumeRequest.VolumeContextEntry - nil, // 130: csi.v1.NodePublishVolumeRequest.PublishContextEntry - nil, // 131: csi.v1.NodePublishVolumeRequest.SecretsEntry - nil, // 132: csi.v1.NodePublishVolumeRequest.VolumeContextEntry - (*NodeServiceCapability_RPC)(nil), // 133: csi.v1.NodeServiceCapability.RPC - nil, // 134: csi.v1.NodeExpandVolumeRequest.SecretsEntry - (*GroupControllerServiceCapability_RPC)(nil), // 135: csi.v1.GroupControllerServiceCapability.RPC - nil, // 136: csi.v1.CreateVolumeGroupSnapshotRequest.SecretsEntry - nil, // 137: csi.v1.CreateVolumeGroupSnapshotRequest.ParametersEntry - nil, // 138: csi.v1.DeleteVolumeGroupSnapshotRequest.SecretsEntry - nil, // 139: csi.v1.GetVolumeGroupSnapshotRequest.SecretsEntry - nil, // 140: csi.v1.GetMetadataAllocatedRequest.SecretsEntry - nil, // 141: csi.v1.GetMetadataDeltaRequest.SecretsEntry - (*wrapperspb.BoolValue)(nil), // 142: google.protobuf.BoolValue - (*wrapperspb.Int64Value)(nil), // 143: google.protobuf.Int64Value - (*timestamppb.Timestamp)(nil), // 144: google.protobuf.Timestamp - (*descriptorpb.EnumOptions)(nil), // 145: google.protobuf.EnumOptions - (*descriptorpb.EnumValueOptions)(nil), // 146: google.protobuf.EnumValueOptions - (*descriptorpb.FieldOptions)(nil), // 147: google.protobuf.FieldOptions - (*descriptorpb.MessageOptions)(nil), // 148: google.protobuf.MessageOptions - (*descriptorpb.MethodOptions)(nil), // 149: google.protobuf.MethodOptions - (*descriptorpb.ServiceOptions)(nil), // 150: google.protobuf.ServiceOptions +var file_csi_proto_enumTypes = make([]protoimpl.EnumInfo, 10) +var file_csi_proto_msgTypes = make([]protoimpl.MessageInfo, 147) +var file_csi_proto_goTypes = []any{ + (VolumeHealthErrorType)(0), // 0: csi.v1.VolumeHealthErrorType + (StorageHealthErrorType)(0), // 1: csi.v1.StorageHealthErrorType + (BlockMetadataType)(0), // 2: csi.v1.BlockMetadataType + (PluginCapability_Service_Type)(0), // 3: csi.v1.PluginCapability.Service.Type + (PluginCapability_VolumeExpansion_Type)(0), // 4: csi.v1.PluginCapability.VolumeExpansion.Type + (VolumeCapability_AccessMode_Mode)(0), // 5: csi.v1.VolumeCapability.AccessMode.Mode + (ControllerServiceCapability_RPC_Type)(0), // 6: csi.v1.ControllerServiceCapability.RPC.Type + (VolumeUsage_Unit)(0), // 7: csi.v1.VolumeUsage.Unit + (NodeServiceCapability_RPC_Type)(0), // 8: csi.v1.NodeServiceCapability.RPC.Type + (GroupControllerServiceCapability_RPC_Type)(0), // 9: csi.v1.GroupControllerServiceCapability.RPC.Type + (*GetPluginInfoRequest)(nil), // 10: csi.v1.GetPluginInfoRequest + (*GetPluginInfoResponse)(nil), // 11: csi.v1.GetPluginInfoResponse + (*GetPluginCapabilitiesRequest)(nil), // 12: csi.v1.GetPluginCapabilitiesRequest + (*GetPluginCapabilitiesResponse)(nil), // 13: csi.v1.GetPluginCapabilitiesResponse + (*PluginCapability)(nil), // 14: csi.v1.PluginCapability + (*ProbeRequest)(nil), // 15: csi.v1.ProbeRequest + (*ProbeResponse)(nil), // 16: csi.v1.ProbeResponse + (*CreateVolumeRequest)(nil), // 17: csi.v1.CreateVolumeRequest + (*VolumeContentSource)(nil), // 18: csi.v1.VolumeContentSource + (*CreateVolumeResponse)(nil), // 19: csi.v1.CreateVolumeResponse + (*VolumeCapability)(nil), // 20: csi.v1.VolumeCapability + (*CapacityRange)(nil), // 21: csi.v1.CapacityRange + (*Volume)(nil), // 22: csi.v1.Volume + (*TopologyRequirement)(nil), // 23: csi.v1.TopologyRequirement + (*Topology)(nil), // 24: csi.v1.Topology + (*DeleteVolumeRequest)(nil), // 25: csi.v1.DeleteVolumeRequest + (*DeleteVolumeResponse)(nil), // 26: csi.v1.DeleteVolumeResponse + (*ControllerPublishVolumeRequest)(nil), // 27: csi.v1.ControllerPublishVolumeRequest + (*ControllerPublishVolumeResponse)(nil), // 28: csi.v1.ControllerPublishVolumeResponse + (*ControllerUnpublishVolumeRequest)(nil), // 29: csi.v1.ControllerUnpublishVolumeRequest + (*ControllerUnpublishVolumeResponse)(nil), // 30: csi.v1.ControllerUnpublishVolumeResponse + (*ValidateVolumeCapabilitiesRequest)(nil), // 31: csi.v1.ValidateVolumeCapabilitiesRequest + (*ValidateVolumeCapabilitiesResponse)(nil), // 32: csi.v1.ValidateVolumeCapabilitiesResponse + (*ListVolumesRequest)(nil), // 33: csi.v1.ListVolumesRequest + (*ListVolumesResponse)(nil), // 34: csi.v1.ListVolumesResponse + (*ControllerListVolumeHealthRequest)(nil), // 35: csi.v1.ControllerListVolumeHealthRequest + (*ControllerListVolumeHealthResponse)(nil), // 36: csi.v1.ControllerListVolumeHealthResponse + (*VolumeHealth)(nil), // 37: csi.v1.VolumeHealth + (*ControllerGetVolumeHealthRequest)(nil), // 38: csi.v1.ControllerGetVolumeHealthRequest + (*ControllerGetVolumeHealthResponse)(nil), // 39: csi.v1.ControllerGetVolumeHealthResponse + (*ControllerGetVolumeRequest)(nil), // 40: csi.v1.ControllerGetVolumeRequest + (*ControllerGetVolumeResponse)(nil), // 41: csi.v1.ControllerGetVolumeResponse + (*ControllerModifyVolumeRequest)(nil), // 42: csi.v1.ControllerModifyVolumeRequest + (*ControllerModifyVolumeResponse)(nil), // 43: csi.v1.ControllerModifyVolumeResponse + (*GetCapacityRequest)(nil), // 44: csi.v1.GetCapacityRequest + (*GetCapacityResponse)(nil), // 45: csi.v1.GetCapacityResponse + (*ControllerGetCapabilitiesRequest)(nil), // 46: csi.v1.ControllerGetCapabilitiesRequest + (*ControllerGetCapabilitiesResponse)(nil), // 47: csi.v1.ControllerGetCapabilitiesResponse + (*ControllerServiceCapability)(nil), // 48: csi.v1.ControllerServiceCapability + (*CreateSnapshotRequest)(nil), // 49: csi.v1.CreateSnapshotRequest + (*CreateSnapshotResponse)(nil), // 50: csi.v1.CreateSnapshotResponse + (*Snapshot)(nil), // 51: csi.v1.Snapshot + (*DeleteSnapshotRequest)(nil), // 52: csi.v1.DeleteSnapshotRequest + (*DeleteSnapshotResponse)(nil), // 53: csi.v1.DeleteSnapshotResponse + (*ListSnapshotsRequest)(nil), // 54: csi.v1.ListSnapshotsRequest + (*ListSnapshotsResponse)(nil), // 55: csi.v1.ListSnapshotsResponse + (*GetSnapshotRequest)(nil), // 56: csi.v1.GetSnapshotRequest + (*GetSnapshotResponse)(nil), // 57: csi.v1.GetSnapshotResponse + (*ControllerExpandVolumeRequest)(nil), // 58: csi.v1.ControllerExpandVolumeRequest + (*ControllerExpandVolumeResponse)(nil), // 59: csi.v1.ControllerExpandVolumeResponse + (*NodeStageVolumeRequest)(nil), // 60: csi.v1.NodeStageVolumeRequest + (*NodeStageVolumeResponse)(nil), // 61: csi.v1.NodeStageVolumeResponse + (*NodeUnstageVolumeRequest)(nil), // 62: csi.v1.NodeUnstageVolumeRequest + (*NodeUnstageVolumeResponse)(nil), // 63: csi.v1.NodeUnstageVolumeResponse + (*NodePublishVolumeRequest)(nil), // 64: csi.v1.NodePublishVolumeRequest + (*NodePublishVolumeResponse)(nil), // 65: csi.v1.NodePublishVolumeResponse + (*NodeUnpublishVolumeRequest)(nil), // 66: csi.v1.NodeUnpublishVolumeRequest + (*NodeUnpublishVolumeResponse)(nil), // 67: csi.v1.NodeUnpublishVolumeResponse + (*NodeGetVolumeStatsRequest)(nil), // 68: csi.v1.NodeGetVolumeStatsRequest + (*NodeGetVolumeStatsResponse)(nil), // 69: csi.v1.NodeGetVolumeStatsResponse + (*VolumeUsage)(nil), // 70: csi.v1.VolumeUsage + (*NodeGetVolumeHealthRequest)(nil), // 71: csi.v1.NodeGetVolumeHealthRequest + (*NodeGetVolumeHealthResponse)(nil), // 72: csi.v1.NodeGetVolumeHealthResponse + (*NodeGetStorageHealthRequest)(nil), // 73: csi.v1.NodeGetStorageHealthRequest + (*NodeGetStorageHealthResponse)(nil), // 74: csi.v1.NodeGetStorageHealthResponse + (*NodeGetCapabilitiesRequest)(nil), // 75: csi.v1.NodeGetCapabilitiesRequest + (*NodeGetCapabilitiesResponse)(nil), // 76: csi.v1.NodeGetCapabilitiesResponse + (*NodeServiceCapability)(nil), // 77: csi.v1.NodeServiceCapability + (*NodeGetInfoRequest)(nil), // 78: csi.v1.NodeGetInfoRequest + (*NodeGetInfoResponse)(nil), // 79: csi.v1.NodeGetInfoResponse + (*NodeExpandVolumeRequest)(nil), // 80: csi.v1.NodeExpandVolumeRequest + (*NodeExpandVolumeResponse)(nil), // 81: csi.v1.NodeExpandVolumeResponse + (*GroupControllerGetCapabilitiesRequest)(nil), // 82: csi.v1.GroupControllerGetCapabilitiesRequest + (*GroupControllerGetCapabilitiesResponse)(nil), // 83: csi.v1.GroupControllerGetCapabilitiesResponse + (*GroupControllerServiceCapability)(nil), // 84: csi.v1.GroupControllerServiceCapability + (*CreateVolumeGroupSnapshotRequest)(nil), // 85: csi.v1.CreateVolumeGroupSnapshotRequest + (*CreateVolumeGroupSnapshotResponse)(nil), // 86: csi.v1.CreateVolumeGroupSnapshotResponse + (*VolumeGroupSnapshot)(nil), // 87: csi.v1.VolumeGroupSnapshot + (*DeleteVolumeGroupSnapshotRequest)(nil), // 88: csi.v1.DeleteVolumeGroupSnapshotRequest + (*DeleteVolumeGroupSnapshotResponse)(nil), // 89: csi.v1.DeleteVolumeGroupSnapshotResponse + (*GetVolumeGroupSnapshotRequest)(nil), // 90: csi.v1.GetVolumeGroupSnapshotRequest + (*GetVolumeGroupSnapshotResponse)(nil), // 91: csi.v1.GetVolumeGroupSnapshotResponse + (*BlockMetadata)(nil), // 92: csi.v1.BlockMetadata + (*GetMetadataAllocatedRequest)(nil), // 93: csi.v1.GetMetadataAllocatedRequest + (*GetMetadataAllocatedResponse)(nil), // 94: csi.v1.GetMetadataAllocatedResponse + (*GetMetadataDeltaRequest)(nil), // 95: csi.v1.GetMetadataDeltaRequest + (*GetMetadataDeltaResponse)(nil), // 96: csi.v1.GetMetadataDeltaResponse + nil, // 97: csi.v1.GetPluginInfoResponse.ManifestEntry + (*PluginCapability_Service)(nil), // 98: csi.v1.PluginCapability.Service + (*PluginCapability_VolumeExpansion)(nil), // 99: csi.v1.PluginCapability.VolumeExpansion + nil, // 100: csi.v1.CreateVolumeRequest.ParametersEntry + nil, // 101: csi.v1.CreateVolumeRequest.SecretsEntry + nil, // 102: csi.v1.CreateVolumeRequest.MutableParametersEntry + (*VolumeContentSource_SnapshotSource)(nil), // 103: csi.v1.VolumeContentSource.SnapshotSource + (*VolumeContentSource_VolumeSource)(nil), // 104: csi.v1.VolumeContentSource.VolumeSource + (*VolumeCapability_BlockVolume)(nil), // 105: csi.v1.VolumeCapability.BlockVolume + (*VolumeCapability_MountVolume)(nil), // 106: csi.v1.VolumeCapability.MountVolume + (*VolumeCapability_AccessMode)(nil), // 107: csi.v1.VolumeCapability.AccessMode + nil, // 108: csi.v1.Volume.VolumeContextEntry + nil, // 109: csi.v1.Topology.SegmentsEntry + nil, // 110: csi.v1.DeleteVolumeRequest.SecretsEntry + nil, // 111: csi.v1.ControllerPublishVolumeRequest.SecretsEntry + nil, // 112: csi.v1.ControllerPublishVolumeRequest.VolumeContextEntry + nil, // 113: csi.v1.ControllerPublishVolumeResponse.PublishContextEntry + nil, // 114: csi.v1.ControllerUnpublishVolumeRequest.SecretsEntry + nil, // 115: csi.v1.ValidateVolumeCapabilitiesRequest.VolumeContextEntry + nil, // 116: csi.v1.ValidateVolumeCapabilitiesRequest.ParametersEntry + nil, // 117: csi.v1.ValidateVolumeCapabilitiesRequest.SecretsEntry + nil, // 118: csi.v1.ValidateVolumeCapabilitiesRequest.MutableParametersEntry + (*ValidateVolumeCapabilitiesResponse_Confirmed)(nil), // 119: csi.v1.ValidateVolumeCapabilitiesResponse.Confirmed + nil, // 120: csi.v1.ValidateVolumeCapabilitiesResponse.Confirmed.VolumeContextEntry + nil, // 121: csi.v1.ValidateVolumeCapabilitiesResponse.Confirmed.ParametersEntry + nil, // 122: csi.v1.ValidateVolumeCapabilitiesResponse.Confirmed.MutableParametersEntry + (*ListVolumesResponse_VolumeStatus)(nil), // 123: csi.v1.ListVolumesResponse.VolumeStatus + (*ListVolumesResponse_Entry)(nil), // 124: csi.v1.ListVolumesResponse.Entry + nil, // 125: csi.v1.ControllerListVolumeHealthRequest.SecretsEntry + (*VolumeHealth_VolumeHealthEntry)(nil), // 126: csi.v1.VolumeHealth.VolumeHealthEntry + nil, // 127: csi.v1.ControllerGetVolumeHealthRequest.SecretsEntry + (*ControllerGetVolumeResponse_VolumeStatus)(nil), // 128: csi.v1.ControllerGetVolumeResponse.VolumeStatus + nil, // 129: csi.v1.ControllerModifyVolumeRequest.SecretsEntry + nil, // 130: csi.v1.ControllerModifyVolumeRequest.MutableParametersEntry + nil, // 131: csi.v1.GetCapacityRequest.ParametersEntry + (*ControllerServiceCapability_RPC)(nil), // 132: csi.v1.ControllerServiceCapability.RPC + nil, // 133: csi.v1.CreateSnapshotRequest.SecretsEntry + nil, // 134: csi.v1.CreateSnapshotRequest.ParametersEntry + nil, // 135: csi.v1.DeleteSnapshotRequest.SecretsEntry + nil, // 136: csi.v1.ListSnapshotsRequest.SecretsEntry + (*ListSnapshotsResponse_Entry)(nil), // 137: csi.v1.ListSnapshotsResponse.Entry + nil, // 138: csi.v1.GetSnapshotRequest.SecretsEntry + nil, // 139: csi.v1.ControllerExpandVolumeRequest.SecretsEntry + nil, // 140: csi.v1.NodeStageVolumeRequest.PublishContextEntry + nil, // 141: csi.v1.NodeStageVolumeRequest.SecretsEntry + nil, // 142: csi.v1.NodeStageVolumeRequest.VolumeContextEntry + nil, // 143: csi.v1.NodePublishVolumeRequest.PublishContextEntry + nil, // 144: csi.v1.NodePublishVolumeRequest.SecretsEntry + nil, // 145: csi.v1.NodePublishVolumeRequest.VolumeContextEntry + nil, // 146: csi.v1.NodeGetStorageHealthRequest.SecretsEntry + (*NodeGetStorageHealthResponse_StorageBackendHealth)(nil), // 147: csi.v1.NodeGetStorageHealthResponse.StorageBackendHealth + (*NodeServiceCapability_RPC)(nil), // 148: csi.v1.NodeServiceCapability.RPC + nil, // 149: csi.v1.NodeExpandVolumeRequest.SecretsEntry + (*GroupControllerServiceCapability_RPC)(nil), // 150: csi.v1.GroupControllerServiceCapability.RPC + nil, // 151: csi.v1.CreateVolumeGroupSnapshotRequest.SecretsEntry + nil, // 152: csi.v1.CreateVolumeGroupSnapshotRequest.ParametersEntry + nil, // 153: csi.v1.DeleteVolumeGroupSnapshotRequest.SecretsEntry + nil, // 154: csi.v1.GetVolumeGroupSnapshotRequest.SecretsEntry + nil, // 155: csi.v1.GetMetadataAllocatedRequest.SecretsEntry + nil, // 156: csi.v1.GetMetadataDeltaRequest.SecretsEntry + (*wrapperspb.BoolValue)(nil), // 157: google.protobuf.BoolValue + (*wrapperspb.Int64Value)(nil), // 158: google.protobuf.Int64Value + (*timestamppb.Timestamp)(nil), // 159: google.protobuf.Timestamp + (*descriptorpb.EnumOptions)(nil), // 160: google.protobuf.EnumOptions + (*descriptorpb.EnumValueOptions)(nil), // 161: google.protobuf.EnumValueOptions + (*descriptorpb.FieldOptions)(nil), // 162: google.protobuf.FieldOptions + (*descriptorpb.MessageOptions)(nil), // 163: google.protobuf.MessageOptions + (*descriptorpb.MethodOptions)(nil), // 164: google.protobuf.MethodOptions + (*descriptorpb.ServiceOptions)(nil), // 165: google.protobuf.ServiceOptions } var file_csi_proto_depIdxs = []int32{ - 87, // 0: csi.v1.GetPluginInfoResponse.manifest:type_name -> csi.v1.GetPluginInfoResponse.ManifestEntry - 12, // 1: csi.v1.GetPluginCapabilitiesResponse.capabilities:type_name -> csi.v1.PluginCapability - 88, // 2: csi.v1.PluginCapability.service:type_name -> csi.v1.PluginCapability.Service - 89, // 3: csi.v1.PluginCapability.volume_expansion:type_name -> csi.v1.PluginCapability.VolumeExpansion - 142, // 4: csi.v1.ProbeResponse.ready:type_name -> google.protobuf.BoolValue - 19, // 5: csi.v1.CreateVolumeRequest.capacity_range:type_name -> csi.v1.CapacityRange - 18, // 6: csi.v1.CreateVolumeRequest.volume_capabilities:type_name -> csi.v1.VolumeCapability - 90, // 7: csi.v1.CreateVolumeRequest.parameters:type_name -> csi.v1.CreateVolumeRequest.ParametersEntry - 91, // 8: csi.v1.CreateVolumeRequest.secrets:type_name -> csi.v1.CreateVolumeRequest.SecretsEntry - 16, // 9: csi.v1.CreateVolumeRequest.volume_content_source:type_name -> csi.v1.VolumeContentSource - 21, // 10: csi.v1.CreateVolumeRequest.accessibility_requirements:type_name -> csi.v1.TopologyRequirement - 92, // 11: csi.v1.CreateVolumeRequest.mutable_parameters:type_name -> csi.v1.CreateVolumeRequest.MutableParametersEntry - 93, // 12: csi.v1.VolumeContentSource.snapshot:type_name -> csi.v1.VolumeContentSource.SnapshotSource - 94, // 13: csi.v1.VolumeContentSource.volume:type_name -> csi.v1.VolumeContentSource.VolumeSource - 20, // 14: csi.v1.CreateVolumeResponse.volume:type_name -> csi.v1.Volume - 95, // 15: csi.v1.VolumeCapability.block:type_name -> csi.v1.VolumeCapability.BlockVolume - 96, // 16: csi.v1.VolumeCapability.mount:type_name -> csi.v1.VolumeCapability.MountVolume - 97, // 17: csi.v1.VolumeCapability.access_mode:type_name -> csi.v1.VolumeCapability.AccessMode - 98, // 18: csi.v1.Volume.volume_context:type_name -> csi.v1.Volume.VolumeContextEntry - 16, // 19: csi.v1.Volume.content_source:type_name -> csi.v1.VolumeContentSource - 22, // 20: csi.v1.Volume.accessible_topology:type_name -> csi.v1.Topology - 22, // 21: csi.v1.TopologyRequirement.requisite:type_name -> csi.v1.Topology - 22, // 22: csi.v1.TopologyRequirement.preferred:type_name -> csi.v1.Topology - 99, // 23: csi.v1.Topology.segments:type_name -> csi.v1.Topology.SegmentsEntry - 100, // 24: csi.v1.DeleteVolumeRequest.secrets:type_name -> csi.v1.DeleteVolumeRequest.SecretsEntry - 18, // 25: csi.v1.ControllerPublishVolumeRequest.volume_capability:type_name -> csi.v1.VolumeCapability - 101, // 26: csi.v1.ControllerPublishVolumeRequest.secrets:type_name -> csi.v1.ControllerPublishVolumeRequest.SecretsEntry - 102, // 27: csi.v1.ControllerPublishVolumeRequest.volume_context:type_name -> csi.v1.ControllerPublishVolumeRequest.VolumeContextEntry - 103, // 28: csi.v1.ControllerPublishVolumeResponse.publish_context:type_name -> csi.v1.ControllerPublishVolumeResponse.PublishContextEntry - 104, // 29: csi.v1.ControllerUnpublishVolumeRequest.secrets:type_name -> csi.v1.ControllerUnpublishVolumeRequest.SecretsEntry - 105, // 30: csi.v1.ValidateVolumeCapabilitiesRequest.volume_context:type_name -> csi.v1.ValidateVolumeCapabilitiesRequest.VolumeContextEntry - 18, // 31: csi.v1.ValidateVolumeCapabilitiesRequest.volume_capabilities:type_name -> csi.v1.VolumeCapability - 106, // 32: csi.v1.ValidateVolumeCapabilitiesRequest.parameters:type_name -> csi.v1.ValidateVolumeCapabilitiesRequest.ParametersEntry - 107, // 33: csi.v1.ValidateVolumeCapabilitiesRequest.secrets:type_name -> csi.v1.ValidateVolumeCapabilitiesRequest.SecretsEntry - 108, // 34: csi.v1.ValidateVolumeCapabilitiesRequest.mutable_parameters:type_name -> csi.v1.ValidateVolumeCapabilitiesRequest.MutableParametersEntry - 109, // 35: csi.v1.ValidateVolumeCapabilitiesResponse.confirmed:type_name -> csi.v1.ValidateVolumeCapabilitiesResponse.Confirmed - 114, // 36: csi.v1.ListVolumesResponse.entries:type_name -> csi.v1.ListVolumesResponse.Entry - 20, // 37: csi.v1.ControllerGetVolumeResponse.volume:type_name -> csi.v1.Volume - 115, // 38: csi.v1.ControllerGetVolumeResponse.status:type_name -> csi.v1.ControllerGetVolumeResponse.VolumeStatus - 116, // 39: csi.v1.ControllerModifyVolumeRequest.secrets:type_name -> csi.v1.ControllerModifyVolumeRequest.SecretsEntry - 117, // 40: csi.v1.ControllerModifyVolumeRequest.mutable_parameters:type_name -> csi.v1.ControllerModifyVolumeRequest.MutableParametersEntry - 18, // 41: csi.v1.GetCapacityRequest.volume_capabilities:type_name -> csi.v1.VolumeCapability - 118, // 42: csi.v1.GetCapacityRequest.parameters:type_name -> csi.v1.GetCapacityRequest.ParametersEntry - 22, // 43: csi.v1.GetCapacityRequest.accessible_topology:type_name -> csi.v1.Topology - 143, // 44: csi.v1.GetCapacityResponse.maximum_volume_size:type_name -> google.protobuf.Int64Value - 143, // 45: csi.v1.GetCapacityResponse.minimum_volume_size:type_name -> google.protobuf.Int64Value - 41, // 46: csi.v1.ControllerGetCapabilitiesResponse.capabilities:type_name -> csi.v1.ControllerServiceCapability - 119, // 47: csi.v1.ControllerServiceCapability.rpc:type_name -> csi.v1.ControllerServiceCapability.RPC - 120, // 48: csi.v1.CreateSnapshotRequest.secrets:type_name -> csi.v1.CreateSnapshotRequest.SecretsEntry - 121, // 49: csi.v1.CreateSnapshotRequest.parameters:type_name -> csi.v1.CreateSnapshotRequest.ParametersEntry - 44, // 50: csi.v1.CreateSnapshotResponse.snapshot:type_name -> csi.v1.Snapshot - 144, // 51: csi.v1.Snapshot.creation_time:type_name -> google.protobuf.Timestamp - 122, // 52: csi.v1.DeleteSnapshotRequest.secrets:type_name -> csi.v1.DeleteSnapshotRequest.SecretsEntry - 123, // 53: csi.v1.ListSnapshotsRequest.secrets:type_name -> csi.v1.ListSnapshotsRequest.SecretsEntry - 124, // 54: csi.v1.ListSnapshotsResponse.entries:type_name -> csi.v1.ListSnapshotsResponse.Entry - 125, // 55: csi.v1.GetSnapshotRequest.secrets:type_name -> csi.v1.GetSnapshotRequest.SecretsEntry - 44, // 56: csi.v1.GetSnapshotResponse.snapshot:type_name -> csi.v1.Snapshot - 19, // 57: csi.v1.ControllerExpandVolumeRequest.capacity_range:type_name -> csi.v1.CapacityRange - 126, // 58: csi.v1.ControllerExpandVolumeRequest.secrets:type_name -> csi.v1.ControllerExpandVolumeRequest.SecretsEntry - 18, // 59: csi.v1.ControllerExpandVolumeRequest.volume_capability:type_name -> csi.v1.VolumeCapability - 127, // 60: csi.v1.NodeStageVolumeRequest.publish_context:type_name -> csi.v1.NodeStageVolumeRequest.PublishContextEntry - 18, // 61: csi.v1.NodeStageVolumeRequest.volume_capability:type_name -> csi.v1.VolumeCapability - 128, // 62: csi.v1.NodeStageVolumeRequest.secrets:type_name -> csi.v1.NodeStageVolumeRequest.SecretsEntry - 129, // 63: csi.v1.NodeStageVolumeRequest.volume_context:type_name -> csi.v1.NodeStageVolumeRequest.VolumeContextEntry - 130, // 64: csi.v1.NodePublishVolumeRequest.publish_context:type_name -> csi.v1.NodePublishVolumeRequest.PublishContextEntry - 18, // 65: csi.v1.NodePublishVolumeRequest.volume_capability:type_name -> csi.v1.VolumeCapability - 131, // 66: csi.v1.NodePublishVolumeRequest.secrets:type_name -> csi.v1.NodePublishVolumeRequest.SecretsEntry - 132, // 67: csi.v1.NodePublishVolumeRequest.volume_context:type_name -> csi.v1.NodePublishVolumeRequest.VolumeContextEntry - 63, // 68: csi.v1.NodeGetVolumeStatsResponse.usage:type_name -> csi.v1.VolumeUsage - 64, // 69: csi.v1.NodeGetVolumeStatsResponse.volume_condition:type_name -> csi.v1.VolumeCondition - 5, // 70: csi.v1.VolumeUsage.unit:type_name -> csi.v1.VolumeUsage.Unit - 67, // 71: csi.v1.NodeGetCapabilitiesResponse.capabilities:type_name -> csi.v1.NodeServiceCapability - 133, // 72: csi.v1.NodeServiceCapability.rpc:type_name -> csi.v1.NodeServiceCapability.RPC - 22, // 73: csi.v1.NodeGetInfoResponse.accessible_topology:type_name -> csi.v1.Topology - 19, // 74: csi.v1.NodeExpandVolumeRequest.capacity_range:type_name -> csi.v1.CapacityRange - 18, // 75: csi.v1.NodeExpandVolumeRequest.volume_capability:type_name -> csi.v1.VolumeCapability - 134, // 76: csi.v1.NodeExpandVolumeRequest.secrets:type_name -> csi.v1.NodeExpandVolumeRequest.SecretsEntry - 74, // 77: csi.v1.GroupControllerGetCapabilitiesResponse.capabilities:type_name -> csi.v1.GroupControllerServiceCapability - 135, // 78: csi.v1.GroupControllerServiceCapability.rpc:type_name -> csi.v1.GroupControllerServiceCapability.RPC - 136, // 79: csi.v1.CreateVolumeGroupSnapshotRequest.secrets:type_name -> csi.v1.CreateVolumeGroupSnapshotRequest.SecretsEntry - 137, // 80: csi.v1.CreateVolumeGroupSnapshotRequest.parameters:type_name -> csi.v1.CreateVolumeGroupSnapshotRequest.ParametersEntry - 77, // 81: csi.v1.CreateVolumeGroupSnapshotResponse.group_snapshot:type_name -> csi.v1.VolumeGroupSnapshot - 44, // 82: csi.v1.VolumeGroupSnapshot.snapshots:type_name -> csi.v1.Snapshot - 144, // 83: csi.v1.VolumeGroupSnapshot.creation_time:type_name -> google.protobuf.Timestamp - 138, // 84: csi.v1.DeleteVolumeGroupSnapshotRequest.secrets:type_name -> csi.v1.DeleteVolumeGroupSnapshotRequest.SecretsEntry - 139, // 85: csi.v1.GetVolumeGroupSnapshotRequest.secrets:type_name -> csi.v1.GetVolumeGroupSnapshotRequest.SecretsEntry - 77, // 86: csi.v1.GetVolumeGroupSnapshotResponse.group_snapshot:type_name -> csi.v1.VolumeGroupSnapshot - 140, // 87: csi.v1.GetMetadataAllocatedRequest.secrets:type_name -> csi.v1.GetMetadataAllocatedRequest.SecretsEntry - 0, // 88: csi.v1.GetMetadataAllocatedResponse.block_metadata_type:type_name -> csi.v1.BlockMetadataType - 82, // 89: csi.v1.GetMetadataAllocatedResponse.block_metadata:type_name -> csi.v1.BlockMetadata - 141, // 90: csi.v1.GetMetadataDeltaRequest.secrets:type_name -> csi.v1.GetMetadataDeltaRequest.SecretsEntry - 0, // 91: csi.v1.GetMetadataDeltaResponse.block_metadata_type:type_name -> csi.v1.BlockMetadataType - 82, // 92: csi.v1.GetMetadataDeltaResponse.block_metadata:type_name -> csi.v1.BlockMetadata - 1, // 93: csi.v1.PluginCapability.Service.type:type_name -> csi.v1.PluginCapability.Service.Type - 2, // 94: csi.v1.PluginCapability.VolumeExpansion.type:type_name -> csi.v1.PluginCapability.VolumeExpansion.Type - 3, // 95: csi.v1.VolumeCapability.AccessMode.mode:type_name -> csi.v1.VolumeCapability.AccessMode.Mode - 110, // 96: csi.v1.ValidateVolumeCapabilitiesResponse.Confirmed.volume_context:type_name -> csi.v1.ValidateVolumeCapabilitiesResponse.Confirmed.VolumeContextEntry - 18, // 97: csi.v1.ValidateVolumeCapabilitiesResponse.Confirmed.volume_capabilities:type_name -> csi.v1.VolumeCapability - 111, // 98: csi.v1.ValidateVolumeCapabilitiesResponse.Confirmed.parameters:type_name -> csi.v1.ValidateVolumeCapabilitiesResponse.Confirmed.ParametersEntry - 112, // 99: csi.v1.ValidateVolumeCapabilitiesResponse.Confirmed.mutable_parameters:type_name -> csi.v1.ValidateVolumeCapabilitiesResponse.Confirmed.MutableParametersEntry - 64, // 100: csi.v1.ListVolumesResponse.VolumeStatus.volume_condition:type_name -> csi.v1.VolumeCondition - 20, // 101: csi.v1.ListVolumesResponse.Entry.volume:type_name -> csi.v1.Volume - 113, // 102: csi.v1.ListVolumesResponse.Entry.status:type_name -> csi.v1.ListVolumesResponse.VolumeStatus - 64, // 103: csi.v1.ControllerGetVolumeResponse.VolumeStatus.volume_condition:type_name -> csi.v1.VolumeCondition - 4, // 104: csi.v1.ControllerServiceCapability.RPC.type:type_name -> csi.v1.ControllerServiceCapability.RPC.Type - 44, // 105: csi.v1.ListSnapshotsResponse.Entry.snapshot:type_name -> csi.v1.Snapshot - 6, // 106: csi.v1.NodeServiceCapability.RPC.type:type_name -> csi.v1.NodeServiceCapability.RPC.Type - 7, // 107: csi.v1.GroupControllerServiceCapability.RPC.type:type_name -> csi.v1.GroupControllerServiceCapability.RPC.Type - 145, // 108: csi.v1.alpha_enum:extendee -> google.protobuf.EnumOptions - 146, // 109: csi.v1.alpha_enum_value:extendee -> google.protobuf.EnumValueOptions - 147, // 110: csi.v1.csi_secret:extendee -> google.protobuf.FieldOptions - 147, // 111: csi.v1.alpha_field:extendee -> google.protobuf.FieldOptions - 148, // 112: csi.v1.alpha_message:extendee -> google.protobuf.MessageOptions - 149, // 113: csi.v1.alpha_method:extendee -> google.protobuf.MethodOptions - 150, // 114: csi.v1.alpha_service:extendee -> google.protobuf.ServiceOptions - 8, // 115: csi.v1.Identity.GetPluginInfo:input_type -> csi.v1.GetPluginInfoRequest - 10, // 116: csi.v1.Identity.GetPluginCapabilities:input_type -> csi.v1.GetPluginCapabilitiesRequest - 13, // 117: csi.v1.Identity.Probe:input_type -> csi.v1.ProbeRequest - 15, // 118: csi.v1.Controller.CreateVolume:input_type -> csi.v1.CreateVolumeRequest - 23, // 119: csi.v1.Controller.DeleteVolume:input_type -> csi.v1.DeleteVolumeRequest - 25, // 120: csi.v1.Controller.ControllerPublishVolume:input_type -> csi.v1.ControllerPublishVolumeRequest - 27, // 121: csi.v1.Controller.ControllerUnpublishVolume:input_type -> csi.v1.ControllerUnpublishVolumeRequest - 29, // 122: csi.v1.Controller.ValidateVolumeCapabilities:input_type -> csi.v1.ValidateVolumeCapabilitiesRequest - 31, // 123: csi.v1.Controller.ListVolumes:input_type -> csi.v1.ListVolumesRequest - 37, // 124: csi.v1.Controller.GetCapacity:input_type -> csi.v1.GetCapacityRequest - 39, // 125: csi.v1.Controller.ControllerGetCapabilities:input_type -> csi.v1.ControllerGetCapabilitiesRequest - 42, // 126: csi.v1.Controller.CreateSnapshot:input_type -> csi.v1.CreateSnapshotRequest - 45, // 127: csi.v1.Controller.DeleteSnapshot:input_type -> csi.v1.DeleteSnapshotRequest - 47, // 128: csi.v1.Controller.ListSnapshots:input_type -> csi.v1.ListSnapshotsRequest - 49, // 129: csi.v1.Controller.GetSnapshot:input_type -> csi.v1.GetSnapshotRequest - 51, // 130: csi.v1.Controller.ControllerExpandVolume:input_type -> csi.v1.ControllerExpandVolumeRequest - 33, // 131: csi.v1.Controller.ControllerGetVolume:input_type -> csi.v1.ControllerGetVolumeRequest - 35, // 132: csi.v1.Controller.ControllerModifyVolume:input_type -> csi.v1.ControllerModifyVolumeRequest - 72, // 133: csi.v1.GroupController.GroupControllerGetCapabilities:input_type -> csi.v1.GroupControllerGetCapabilitiesRequest - 75, // 134: csi.v1.GroupController.CreateVolumeGroupSnapshot:input_type -> csi.v1.CreateVolumeGroupSnapshotRequest - 78, // 135: csi.v1.GroupController.DeleteVolumeGroupSnapshot:input_type -> csi.v1.DeleteVolumeGroupSnapshotRequest - 80, // 136: csi.v1.GroupController.GetVolumeGroupSnapshot:input_type -> csi.v1.GetVolumeGroupSnapshotRequest - 83, // 137: csi.v1.SnapshotMetadata.GetMetadataAllocated:input_type -> csi.v1.GetMetadataAllocatedRequest - 85, // 138: csi.v1.SnapshotMetadata.GetMetadataDelta:input_type -> csi.v1.GetMetadataDeltaRequest - 53, // 139: csi.v1.Node.NodeStageVolume:input_type -> csi.v1.NodeStageVolumeRequest - 55, // 140: csi.v1.Node.NodeUnstageVolume:input_type -> csi.v1.NodeUnstageVolumeRequest - 57, // 141: csi.v1.Node.NodePublishVolume:input_type -> csi.v1.NodePublishVolumeRequest - 59, // 142: csi.v1.Node.NodeUnpublishVolume:input_type -> csi.v1.NodeUnpublishVolumeRequest - 61, // 143: csi.v1.Node.NodeGetVolumeStats:input_type -> csi.v1.NodeGetVolumeStatsRequest - 70, // 144: csi.v1.Node.NodeExpandVolume:input_type -> csi.v1.NodeExpandVolumeRequest - 65, // 145: csi.v1.Node.NodeGetCapabilities:input_type -> csi.v1.NodeGetCapabilitiesRequest - 68, // 146: csi.v1.Node.NodeGetInfo:input_type -> csi.v1.NodeGetInfoRequest - 9, // 147: csi.v1.Identity.GetPluginInfo:output_type -> csi.v1.GetPluginInfoResponse - 11, // 148: csi.v1.Identity.GetPluginCapabilities:output_type -> csi.v1.GetPluginCapabilitiesResponse - 14, // 149: csi.v1.Identity.Probe:output_type -> csi.v1.ProbeResponse - 17, // 150: csi.v1.Controller.CreateVolume:output_type -> csi.v1.CreateVolumeResponse - 24, // 151: csi.v1.Controller.DeleteVolume:output_type -> csi.v1.DeleteVolumeResponse - 26, // 152: csi.v1.Controller.ControllerPublishVolume:output_type -> csi.v1.ControllerPublishVolumeResponse - 28, // 153: csi.v1.Controller.ControllerUnpublishVolume:output_type -> csi.v1.ControllerUnpublishVolumeResponse - 30, // 154: csi.v1.Controller.ValidateVolumeCapabilities:output_type -> csi.v1.ValidateVolumeCapabilitiesResponse - 32, // 155: csi.v1.Controller.ListVolumes:output_type -> csi.v1.ListVolumesResponse - 38, // 156: csi.v1.Controller.GetCapacity:output_type -> csi.v1.GetCapacityResponse - 40, // 157: csi.v1.Controller.ControllerGetCapabilities:output_type -> csi.v1.ControllerGetCapabilitiesResponse - 43, // 158: csi.v1.Controller.CreateSnapshot:output_type -> csi.v1.CreateSnapshotResponse - 46, // 159: csi.v1.Controller.DeleteSnapshot:output_type -> csi.v1.DeleteSnapshotResponse - 48, // 160: csi.v1.Controller.ListSnapshots:output_type -> csi.v1.ListSnapshotsResponse - 50, // 161: csi.v1.Controller.GetSnapshot:output_type -> csi.v1.GetSnapshotResponse - 52, // 162: csi.v1.Controller.ControllerExpandVolume:output_type -> csi.v1.ControllerExpandVolumeResponse - 34, // 163: csi.v1.Controller.ControllerGetVolume:output_type -> csi.v1.ControllerGetVolumeResponse - 36, // 164: csi.v1.Controller.ControllerModifyVolume:output_type -> csi.v1.ControllerModifyVolumeResponse - 73, // 165: csi.v1.GroupController.GroupControllerGetCapabilities:output_type -> csi.v1.GroupControllerGetCapabilitiesResponse - 76, // 166: csi.v1.GroupController.CreateVolumeGroupSnapshot:output_type -> csi.v1.CreateVolumeGroupSnapshotResponse - 79, // 167: csi.v1.GroupController.DeleteVolumeGroupSnapshot:output_type -> csi.v1.DeleteVolumeGroupSnapshotResponse - 81, // 168: csi.v1.GroupController.GetVolumeGroupSnapshot:output_type -> csi.v1.GetVolumeGroupSnapshotResponse - 84, // 169: csi.v1.SnapshotMetadata.GetMetadataAllocated:output_type -> csi.v1.GetMetadataAllocatedResponse - 86, // 170: csi.v1.SnapshotMetadata.GetMetadataDelta:output_type -> csi.v1.GetMetadataDeltaResponse - 54, // 171: csi.v1.Node.NodeStageVolume:output_type -> csi.v1.NodeStageVolumeResponse - 56, // 172: csi.v1.Node.NodeUnstageVolume:output_type -> csi.v1.NodeUnstageVolumeResponse - 58, // 173: csi.v1.Node.NodePublishVolume:output_type -> csi.v1.NodePublishVolumeResponse - 60, // 174: csi.v1.Node.NodeUnpublishVolume:output_type -> csi.v1.NodeUnpublishVolumeResponse - 62, // 175: csi.v1.Node.NodeGetVolumeStats:output_type -> csi.v1.NodeGetVolumeStatsResponse - 71, // 176: csi.v1.Node.NodeExpandVolume:output_type -> csi.v1.NodeExpandVolumeResponse - 66, // 177: csi.v1.Node.NodeGetCapabilities:output_type -> csi.v1.NodeGetCapabilitiesResponse - 69, // 178: csi.v1.Node.NodeGetInfo:output_type -> csi.v1.NodeGetInfoResponse - 147, // [147:179] is the sub-list for method output_type - 115, // [115:147] is the sub-list for method input_type - 115, // [115:115] is the sub-list for extension type_name - 108, // [108:115] is the sub-list for extension extendee - 0, // [0:108] is the sub-list for field type_name + 97, // 0: csi.v1.GetPluginInfoResponse.manifest:type_name -> csi.v1.GetPluginInfoResponse.ManifestEntry + 14, // 1: csi.v1.GetPluginCapabilitiesResponse.capabilities:type_name -> csi.v1.PluginCapability + 98, // 2: csi.v1.PluginCapability.service:type_name -> csi.v1.PluginCapability.Service + 99, // 3: csi.v1.PluginCapability.volume_expansion:type_name -> csi.v1.PluginCapability.VolumeExpansion + 157, // 4: csi.v1.ProbeResponse.ready:type_name -> google.protobuf.BoolValue + 21, // 5: csi.v1.CreateVolumeRequest.capacity_range:type_name -> csi.v1.CapacityRange + 20, // 6: csi.v1.CreateVolumeRequest.volume_capabilities:type_name -> csi.v1.VolumeCapability + 100, // 7: csi.v1.CreateVolumeRequest.parameters:type_name -> csi.v1.CreateVolumeRequest.ParametersEntry + 101, // 8: csi.v1.CreateVolumeRequest.secrets:type_name -> csi.v1.CreateVolumeRequest.SecretsEntry + 18, // 9: csi.v1.CreateVolumeRequest.volume_content_source:type_name -> csi.v1.VolumeContentSource + 23, // 10: csi.v1.CreateVolumeRequest.accessibility_requirements:type_name -> csi.v1.TopologyRequirement + 102, // 11: csi.v1.CreateVolumeRequest.mutable_parameters:type_name -> csi.v1.CreateVolumeRequest.MutableParametersEntry + 103, // 12: csi.v1.VolumeContentSource.snapshot:type_name -> csi.v1.VolumeContentSource.SnapshotSource + 104, // 13: csi.v1.VolumeContentSource.volume:type_name -> csi.v1.VolumeContentSource.VolumeSource + 22, // 14: csi.v1.CreateVolumeResponse.volume:type_name -> csi.v1.Volume + 105, // 15: csi.v1.VolumeCapability.block:type_name -> csi.v1.VolumeCapability.BlockVolume + 106, // 16: csi.v1.VolumeCapability.mount:type_name -> csi.v1.VolumeCapability.MountVolume + 107, // 17: csi.v1.VolumeCapability.access_mode:type_name -> csi.v1.VolumeCapability.AccessMode + 108, // 18: csi.v1.Volume.volume_context:type_name -> csi.v1.Volume.VolumeContextEntry + 18, // 19: csi.v1.Volume.content_source:type_name -> csi.v1.VolumeContentSource + 24, // 20: csi.v1.Volume.accessible_topology:type_name -> csi.v1.Topology + 24, // 21: csi.v1.TopologyRequirement.requisite:type_name -> csi.v1.Topology + 24, // 22: csi.v1.TopologyRequirement.preferred:type_name -> csi.v1.Topology + 109, // 23: csi.v1.Topology.segments:type_name -> csi.v1.Topology.SegmentsEntry + 110, // 24: csi.v1.DeleteVolumeRequest.secrets:type_name -> csi.v1.DeleteVolumeRequest.SecretsEntry + 20, // 25: csi.v1.ControllerPublishVolumeRequest.volume_capability:type_name -> csi.v1.VolumeCapability + 111, // 26: csi.v1.ControllerPublishVolumeRequest.secrets:type_name -> csi.v1.ControllerPublishVolumeRequest.SecretsEntry + 112, // 27: csi.v1.ControllerPublishVolumeRequest.volume_context:type_name -> csi.v1.ControllerPublishVolumeRequest.VolumeContextEntry + 113, // 28: csi.v1.ControllerPublishVolumeResponse.publish_context:type_name -> csi.v1.ControllerPublishVolumeResponse.PublishContextEntry + 114, // 29: csi.v1.ControllerUnpublishVolumeRequest.secrets:type_name -> csi.v1.ControllerUnpublishVolumeRequest.SecretsEntry + 115, // 30: csi.v1.ValidateVolumeCapabilitiesRequest.volume_context:type_name -> csi.v1.ValidateVolumeCapabilitiesRequest.VolumeContextEntry + 20, // 31: csi.v1.ValidateVolumeCapabilitiesRequest.volume_capabilities:type_name -> csi.v1.VolumeCapability + 116, // 32: csi.v1.ValidateVolumeCapabilitiesRequest.parameters:type_name -> csi.v1.ValidateVolumeCapabilitiesRequest.ParametersEntry + 117, // 33: csi.v1.ValidateVolumeCapabilitiesRequest.secrets:type_name -> csi.v1.ValidateVolumeCapabilitiesRequest.SecretsEntry + 118, // 34: csi.v1.ValidateVolumeCapabilitiesRequest.mutable_parameters:type_name -> csi.v1.ValidateVolumeCapabilitiesRequest.MutableParametersEntry + 119, // 35: csi.v1.ValidateVolumeCapabilitiesResponse.confirmed:type_name -> csi.v1.ValidateVolumeCapabilitiesResponse.Confirmed + 124, // 36: csi.v1.ListVolumesResponse.entries:type_name -> csi.v1.ListVolumesResponse.Entry + 125, // 37: csi.v1.ControllerListVolumeHealthRequest.secrets:type_name -> csi.v1.ControllerListVolumeHealthRequest.SecretsEntry + 37, // 38: csi.v1.ControllerListVolumeHealthResponse.entries:type_name -> csi.v1.VolumeHealth + 126, // 39: csi.v1.VolumeHealth.health_statuses:type_name -> csi.v1.VolumeHealth.VolumeHealthEntry + 127, // 40: csi.v1.ControllerGetVolumeHealthRequest.secrets:type_name -> csi.v1.ControllerGetVolumeHealthRequest.SecretsEntry + 37, // 41: csi.v1.ControllerGetVolumeHealthResponse.volume_health:type_name -> csi.v1.VolumeHealth + 22, // 42: csi.v1.ControllerGetVolumeResponse.volume:type_name -> csi.v1.Volume + 128, // 43: csi.v1.ControllerGetVolumeResponse.status:type_name -> csi.v1.ControllerGetVolumeResponse.VolumeStatus + 129, // 44: csi.v1.ControllerModifyVolumeRequest.secrets:type_name -> csi.v1.ControllerModifyVolumeRequest.SecretsEntry + 130, // 45: csi.v1.ControllerModifyVolumeRequest.mutable_parameters:type_name -> csi.v1.ControllerModifyVolumeRequest.MutableParametersEntry + 20, // 46: csi.v1.GetCapacityRequest.volume_capabilities:type_name -> csi.v1.VolumeCapability + 131, // 47: csi.v1.GetCapacityRequest.parameters:type_name -> csi.v1.GetCapacityRequest.ParametersEntry + 24, // 48: csi.v1.GetCapacityRequest.accessible_topology:type_name -> csi.v1.Topology + 158, // 49: csi.v1.GetCapacityResponse.maximum_volume_size:type_name -> google.protobuf.Int64Value + 158, // 50: csi.v1.GetCapacityResponse.minimum_volume_size:type_name -> google.protobuf.Int64Value + 48, // 51: csi.v1.ControllerGetCapabilitiesResponse.capabilities:type_name -> csi.v1.ControllerServiceCapability + 132, // 52: csi.v1.ControllerServiceCapability.rpc:type_name -> csi.v1.ControllerServiceCapability.RPC + 133, // 53: csi.v1.CreateSnapshotRequest.secrets:type_name -> csi.v1.CreateSnapshotRequest.SecretsEntry + 134, // 54: csi.v1.CreateSnapshotRequest.parameters:type_name -> csi.v1.CreateSnapshotRequest.ParametersEntry + 23, // 55: csi.v1.CreateSnapshotRequest.accessibility_requirements:type_name -> csi.v1.TopologyRequirement + 51, // 56: csi.v1.CreateSnapshotResponse.snapshot:type_name -> csi.v1.Snapshot + 159, // 57: csi.v1.Snapshot.creation_time:type_name -> google.protobuf.Timestamp + 24, // 58: csi.v1.Snapshot.accessible_topology:type_name -> csi.v1.Topology + 135, // 59: csi.v1.DeleteSnapshotRequest.secrets:type_name -> csi.v1.DeleteSnapshotRequest.SecretsEntry + 136, // 60: csi.v1.ListSnapshotsRequest.secrets:type_name -> csi.v1.ListSnapshotsRequest.SecretsEntry + 137, // 61: csi.v1.ListSnapshotsResponse.entries:type_name -> csi.v1.ListSnapshotsResponse.Entry + 138, // 62: csi.v1.GetSnapshotRequest.secrets:type_name -> csi.v1.GetSnapshotRequest.SecretsEntry + 51, // 63: csi.v1.GetSnapshotResponse.snapshot:type_name -> csi.v1.Snapshot + 21, // 64: csi.v1.ControllerExpandVolumeRequest.capacity_range:type_name -> csi.v1.CapacityRange + 139, // 65: csi.v1.ControllerExpandVolumeRequest.secrets:type_name -> csi.v1.ControllerExpandVolumeRequest.SecretsEntry + 20, // 66: csi.v1.ControllerExpandVolumeRequest.volume_capability:type_name -> csi.v1.VolumeCapability + 140, // 67: csi.v1.NodeStageVolumeRequest.publish_context:type_name -> csi.v1.NodeStageVolumeRequest.PublishContextEntry + 20, // 68: csi.v1.NodeStageVolumeRequest.volume_capability:type_name -> csi.v1.VolumeCapability + 141, // 69: csi.v1.NodeStageVolumeRequest.secrets:type_name -> csi.v1.NodeStageVolumeRequest.SecretsEntry + 142, // 70: csi.v1.NodeStageVolumeRequest.volume_context:type_name -> csi.v1.NodeStageVolumeRequest.VolumeContextEntry + 143, // 71: csi.v1.NodePublishVolumeRequest.publish_context:type_name -> csi.v1.NodePublishVolumeRequest.PublishContextEntry + 20, // 72: csi.v1.NodePublishVolumeRequest.volume_capability:type_name -> csi.v1.VolumeCapability + 144, // 73: csi.v1.NodePublishVolumeRequest.secrets:type_name -> csi.v1.NodePublishVolumeRequest.SecretsEntry + 145, // 74: csi.v1.NodePublishVolumeRequest.volume_context:type_name -> csi.v1.NodePublishVolumeRequest.VolumeContextEntry + 70, // 75: csi.v1.NodeGetVolumeStatsResponse.usage:type_name -> csi.v1.VolumeUsage + 7, // 76: csi.v1.VolumeUsage.unit:type_name -> csi.v1.VolumeUsage.Unit + 37, // 77: csi.v1.NodeGetVolumeHealthResponse.volume_health:type_name -> csi.v1.VolumeHealth + 146, // 78: csi.v1.NodeGetStorageHealthRequest.secrets:type_name -> csi.v1.NodeGetStorageHealthRequest.SecretsEntry + 147, // 79: csi.v1.NodeGetStorageHealthResponse.backend_health:type_name -> csi.v1.NodeGetStorageHealthResponse.StorageBackendHealth + 77, // 80: csi.v1.NodeGetCapabilitiesResponse.capabilities:type_name -> csi.v1.NodeServiceCapability + 148, // 81: csi.v1.NodeServiceCapability.rpc:type_name -> csi.v1.NodeServiceCapability.RPC + 24, // 82: csi.v1.NodeGetInfoResponse.accessible_topology:type_name -> csi.v1.Topology + 21, // 83: csi.v1.NodeExpandVolumeRequest.capacity_range:type_name -> csi.v1.CapacityRange + 20, // 84: csi.v1.NodeExpandVolumeRequest.volume_capability:type_name -> csi.v1.VolumeCapability + 149, // 85: csi.v1.NodeExpandVolumeRequest.secrets:type_name -> csi.v1.NodeExpandVolumeRequest.SecretsEntry + 84, // 86: csi.v1.GroupControllerGetCapabilitiesResponse.capabilities:type_name -> csi.v1.GroupControllerServiceCapability + 150, // 87: csi.v1.GroupControllerServiceCapability.rpc:type_name -> csi.v1.GroupControllerServiceCapability.RPC + 151, // 88: csi.v1.CreateVolumeGroupSnapshotRequest.secrets:type_name -> csi.v1.CreateVolumeGroupSnapshotRequest.SecretsEntry + 152, // 89: csi.v1.CreateVolumeGroupSnapshotRequest.parameters:type_name -> csi.v1.CreateVolumeGroupSnapshotRequest.ParametersEntry + 87, // 90: csi.v1.CreateVolumeGroupSnapshotResponse.group_snapshot:type_name -> csi.v1.VolumeGroupSnapshot + 51, // 91: csi.v1.VolumeGroupSnapshot.snapshots:type_name -> csi.v1.Snapshot + 159, // 92: csi.v1.VolumeGroupSnapshot.creation_time:type_name -> google.protobuf.Timestamp + 153, // 93: csi.v1.DeleteVolumeGroupSnapshotRequest.secrets:type_name -> csi.v1.DeleteVolumeGroupSnapshotRequest.SecretsEntry + 154, // 94: csi.v1.GetVolumeGroupSnapshotRequest.secrets:type_name -> csi.v1.GetVolumeGroupSnapshotRequest.SecretsEntry + 87, // 95: csi.v1.GetVolumeGroupSnapshotResponse.group_snapshot:type_name -> csi.v1.VolumeGroupSnapshot + 155, // 96: csi.v1.GetMetadataAllocatedRequest.secrets:type_name -> csi.v1.GetMetadataAllocatedRequest.SecretsEntry + 2, // 97: csi.v1.GetMetadataAllocatedResponse.block_metadata_type:type_name -> csi.v1.BlockMetadataType + 92, // 98: csi.v1.GetMetadataAllocatedResponse.block_metadata:type_name -> csi.v1.BlockMetadata + 156, // 99: csi.v1.GetMetadataDeltaRequest.secrets:type_name -> csi.v1.GetMetadataDeltaRequest.SecretsEntry + 2, // 100: csi.v1.GetMetadataDeltaResponse.block_metadata_type:type_name -> csi.v1.BlockMetadataType + 92, // 101: csi.v1.GetMetadataDeltaResponse.block_metadata:type_name -> csi.v1.BlockMetadata + 3, // 102: csi.v1.PluginCapability.Service.type:type_name -> csi.v1.PluginCapability.Service.Type + 4, // 103: csi.v1.PluginCapability.VolumeExpansion.type:type_name -> csi.v1.PluginCapability.VolumeExpansion.Type + 5, // 104: csi.v1.VolumeCapability.AccessMode.mode:type_name -> csi.v1.VolumeCapability.AccessMode.Mode + 120, // 105: csi.v1.ValidateVolumeCapabilitiesResponse.Confirmed.volume_context:type_name -> csi.v1.ValidateVolumeCapabilitiesResponse.Confirmed.VolumeContextEntry + 20, // 106: csi.v1.ValidateVolumeCapabilitiesResponse.Confirmed.volume_capabilities:type_name -> csi.v1.VolumeCapability + 121, // 107: csi.v1.ValidateVolumeCapabilitiesResponse.Confirmed.parameters:type_name -> csi.v1.ValidateVolumeCapabilitiesResponse.Confirmed.ParametersEntry + 122, // 108: csi.v1.ValidateVolumeCapabilitiesResponse.Confirmed.mutable_parameters:type_name -> csi.v1.ValidateVolumeCapabilitiesResponse.Confirmed.MutableParametersEntry + 22, // 109: csi.v1.ListVolumesResponse.Entry.volume:type_name -> csi.v1.Volume + 123, // 110: csi.v1.ListVolumesResponse.Entry.status:type_name -> csi.v1.ListVolumesResponse.VolumeStatus + 0, // 111: csi.v1.VolumeHealth.VolumeHealthEntry.status:type_name -> csi.v1.VolumeHealthErrorType + 6, // 112: csi.v1.ControllerServiceCapability.RPC.type:type_name -> csi.v1.ControllerServiceCapability.RPC.Type + 51, // 113: csi.v1.ListSnapshotsResponse.Entry.snapshot:type_name -> csi.v1.Snapshot + 1, // 114: csi.v1.NodeGetStorageHealthResponse.StorageBackendHealth.status:type_name -> csi.v1.StorageHealthErrorType + 20, // 115: csi.v1.NodeGetStorageHealthResponse.StorageBackendHealth.volume_capability:type_name -> csi.v1.VolumeCapability + 8, // 116: csi.v1.NodeServiceCapability.RPC.type:type_name -> csi.v1.NodeServiceCapability.RPC.Type + 9, // 117: csi.v1.GroupControllerServiceCapability.RPC.type:type_name -> csi.v1.GroupControllerServiceCapability.RPC.Type + 160, // 118: csi.v1.alpha_enum:extendee -> google.protobuf.EnumOptions + 161, // 119: csi.v1.alpha_enum_value:extendee -> google.protobuf.EnumValueOptions + 162, // 120: csi.v1.csi_secret:extendee -> google.protobuf.FieldOptions + 162, // 121: csi.v1.alpha_field:extendee -> google.protobuf.FieldOptions + 163, // 122: csi.v1.alpha_message:extendee -> google.protobuf.MessageOptions + 164, // 123: csi.v1.alpha_method:extendee -> google.protobuf.MethodOptions + 165, // 124: csi.v1.alpha_service:extendee -> google.protobuf.ServiceOptions + 10, // 125: csi.v1.Identity.GetPluginInfo:input_type -> csi.v1.GetPluginInfoRequest + 12, // 126: csi.v1.Identity.GetPluginCapabilities:input_type -> csi.v1.GetPluginCapabilitiesRequest + 15, // 127: csi.v1.Identity.Probe:input_type -> csi.v1.ProbeRequest + 17, // 128: csi.v1.Controller.CreateVolume:input_type -> csi.v1.CreateVolumeRequest + 25, // 129: csi.v1.Controller.DeleteVolume:input_type -> csi.v1.DeleteVolumeRequest + 27, // 130: csi.v1.Controller.ControllerPublishVolume:input_type -> csi.v1.ControllerPublishVolumeRequest + 29, // 131: csi.v1.Controller.ControllerUnpublishVolume:input_type -> csi.v1.ControllerUnpublishVolumeRequest + 31, // 132: csi.v1.Controller.ValidateVolumeCapabilities:input_type -> csi.v1.ValidateVolumeCapabilitiesRequest + 33, // 133: csi.v1.Controller.ListVolumes:input_type -> csi.v1.ListVolumesRequest + 35, // 134: csi.v1.Controller.ControllerListVolumeHealth:input_type -> csi.v1.ControllerListVolumeHealthRequest + 38, // 135: csi.v1.Controller.ControllerGetVolumeHealth:input_type -> csi.v1.ControllerGetVolumeHealthRequest + 44, // 136: csi.v1.Controller.GetCapacity:input_type -> csi.v1.GetCapacityRequest + 46, // 137: csi.v1.Controller.ControllerGetCapabilities:input_type -> csi.v1.ControllerGetCapabilitiesRequest + 49, // 138: csi.v1.Controller.CreateSnapshot:input_type -> csi.v1.CreateSnapshotRequest + 52, // 139: csi.v1.Controller.DeleteSnapshot:input_type -> csi.v1.DeleteSnapshotRequest + 54, // 140: csi.v1.Controller.ListSnapshots:input_type -> csi.v1.ListSnapshotsRequest + 56, // 141: csi.v1.Controller.GetSnapshot:input_type -> csi.v1.GetSnapshotRequest + 58, // 142: csi.v1.Controller.ControllerExpandVolume:input_type -> csi.v1.ControllerExpandVolumeRequest + 40, // 143: csi.v1.Controller.ControllerGetVolume:input_type -> csi.v1.ControllerGetVolumeRequest + 42, // 144: csi.v1.Controller.ControllerModifyVolume:input_type -> csi.v1.ControllerModifyVolumeRequest + 82, // 145: csi.v1.GroupController.GroupControllerGetCapabilities:input_type -> csi.v1.GroupControllerGetCapabilitiesRequest + 85, // 146: csi.v1.GroupController.CreateVolumeGroupSnapshot:input_type -> csi.v1.CreateVolumeGroupSnapshotRequest + 88, // 147: csi.v1.GroupController.DeleteVolumeGroupSnapshot:input_type -> csi.v1.DeleteVolumeGroupSnapshotRequest + 90, // 148: csi.v1.GroupController.GetVolumeGroupSnapshot:input_type -> csi.v1.GetVolumeGroupSnapshotRequest + 93, // 149: csi.v1.SnapshotMetadata.GetMetadataAllocated:input_type -> csi.v1.GetMetadataAllocatedRequest + 95, // 150: csi.v1.SnapshotMetadata.GetMetadataDelta:input_type -> csi.v1.GetMetadataDeltaRequest + 60, // 151: csi.v1.Node.NodeStageVolume:input_type -> csi.v1.NodeStageVolumeRequest + 62, // 152: csi.v1.Node.NodeUnstageVolume:input_type -> csi.v1.NodeUnstageVolumeRequest + 64, // 153: csi.v1.Node.NodePublishVolume:input_type -> csi.v1.NodePublishVolumeRequest + 66, // 154: csi.v1.Node.NodeUnpublishVolume:input_type -> csi.v1.NodeUnpublishVolumeRequest + 68, // 155: csi.v1.Node.NodeGetVolumeStats:input_type -> csi.v1.NodeGetVolumeStatsRequest + 71, // 156: csi.v1.Node.NodeGetVolumeHealth:input_type -> csi.v1.NodeGetVolumeHealthRequest + 73, // 157: csi.v1.Node.NodeGetStorageHealth:input_type -> csi.v1.NodeGetStorageHealthRequest + 80, // 158: csi.v1.Node.NodeExpandVolume:input_type -> csi.v1.NodeExpandVolumeRequest + 75, // 159: csi.v1.Node.NodeGetCapabilities:input_type -> csi.v1.NodeGetCapabilitiesRequest + 78, // 160: csi.v1.Node.NodeGetInfo:input_type -> csi.v1.NodeGetInfoRequest + 11, // 161: csi.v1.Identity.GetPluginInfo:output_type -> csi.v1.GetPluginInfoResponse + 13, // 162: csi.v1.Identity.GetPluginCapabilities:output_type -> csi.v1.GetPluginCapabilitiesResponse + 16, // 163: csi.v1.Identity.Probe:output_type -> csi.v1.ProbeResponse + 19, // 164: csi.v1.Controller.CreateVolume:output_type -> csi.v1.CreateVolumeResponse + 26, // 165: csi.v1.Controller.DeleteVolume:output_type -> csi.v1.DeleteVolumeResponse + 28, // 166: csi.v1.Controller.ControllerPublishVolume:output_type -> csi.v1.ControllerPublishVolumeResponse + 30, // 167: csi.v1.Controller.ControllerUnpublishVolume:output_type -> csi.v1.ControllerUnpublishVolumeResponse + 32, // 168: csi.v1.Controller.ValidateVolumeCapabilities:output_type -> csi.v1.ValidateVolumeCapabilitiesResponse + 34, // 169: csi.v1.Controller.ListVolumes:output_type -> csi.v1.ListVolumesResponse + 36, // 170: csi.v1.Controller.ControllerListVolumeHealth:output_type -> csi.v1.ControllerListVolumeHealthResponse + 39, // 171: csi.v1.Controller.ControllerGetVolumeHealth:output_type -> csi.v1.ControllerGetVolumeHealthResponse + 45, // 172: csi.v1.Controller.GetCapacity:output_type -> csi.v1.GetCapacityResponse + 47, // 173: csi.v1.Controller.ControllerGetCapabilities:output_type -> csi.v1.ControllerGetCapabilitiesResponse + 50, // 174: csi.v1.Controller.CreateSnapshot:output_type -> csi.v1.CreateSnapshotResponse + 53, // 175: csi.v1.Controller.DeleteSnapshot:output_type -> csi.v1.DeleteSnapshotResponse + 55, // 176: csi.v1.Controller.ListSnapshots:output_type -> csi.v1.ListSnapshotsResponse + 57, // 177: csi.v1.Controller.GetSnapshot:output_type -> csi.v1.GetSnapshotResponse + 59, // 178: csi.v1.Controller.ControllerExpandVolume:output_type -> csi.v1.ControllerExpandVolumeResponse + 41, // 179: csi.v1.Controller.ControllerGetVolume:output_type -> csi.v1.ControllerGetVolumeResponse + 43, // 180: csi.v1.Controller.ControllerModifyVolume:output_type -> csi.v1.ControllerModifyVolumeResponse + 83, // 181: csi.v1.GroupController.GroupControllerGetCapabilities:output_type -> csi.v1.GroupControllerGetCapabilitiesResponse + 86, // 182: csi.v1.GroupController.CreateVolumeGroupSnapshot:output_type -> csi.v1.CreateVolumeGroupSnapshotResponse + 89, // 183: csi.v1.GroupController.DeleteVolumeGroupSnapshot:output_type -> csi.v1.DeleteVolumeGroupSnapshotResponse + 91, // 184: csi.v1.GroupController.GetVolumeGroupSnapshot:output_type -> csi.v1.GetVolumeGroupSnapshotResponse + 94, // 185: csi.v1.SnapshotMetadata.GetMetadataAllocated:output_type -> csi.v1.GetMetadataAllocatedResponse + 96, // 186: csi.v1.SnapshotMetadata.GetMetadataDelta:output_type -> csi.v1.GetMetadataDeltaResponse + 61, // 187: csi.v1.Node.NodeStageVolume:output_type -> csi.v1.NodeStageVolumeResponse + 63, // 188: csi.v1.Node.NodeUnstageVolume:output_type -> csi.v1.NodeUnstageVolumeResponse + 65, // 189: csi.v1.Node.NodePublishVolume:output_type -> csi.v1.NodePublishVolumeResponse + 67, // 190: csi.v1.Node.NodeUnpublishVolume:output_type -> csi.v1.NodeUnpublishVolumeResponse + 69, // 191: csi.v1.Node.NodeGetVolumeStats:output_type -> csi.v1.NodeGetVolumeStatsResponse + 72, // 192: csi.v1.Node.NodeGetVolumeHealth:output_type -> csi.v1.NodeGetVolumeHealthResponse + 74, // 193: csi.v1.Node.NodeGetStorageHealth:output_type -> csi.v1.NodeGetStorageHealthResponse + 81, // 194: csi.v1.Node.NodeExpandVolume:output_type -> csi.v1.NodeExpandVolumeResponse + 76, // 195: csi.v1.Node.NodeGetCapabilities:output_type -> csi.v1.NodeGetCapabilitiesResponse + 79, // 196: csi.v1.Node.NodeGetInfo:output_type -> csi.v1.NodeGetInfoResponse + 161, // [161:197] is the sub-list for method output_type + 125, // [125:161] is the sub-list for method input_type + 125, // [125:125] is the sub-list for extension type_name + 118, // [118:125] is the sub-list for extension extendee + 0, // [0:118] is the sub-list for field type_name } func init() { file_csi_proto_init() } @@ -8907,1164 +8769,34 @@ func file_csi_proto_init() { if File_csi_proto != nil { return } - if !protoimpl.UnsafeEnabled { - file_csi_proto_msgTypes[0].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*GetPluginInfoRequest); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_csi_proto_msgTypes[1].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*GetPluginInfoResponse); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_csi_proto_msgTypes[2].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*GetPluginCapabilitiesRequest); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_csi_proto_msgTypes[3].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*GetPluginCapabilitiesResponse); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_csi_proto_msgTypes[4].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*PluginCapability); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_csi_proto_msgTypes[5].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*ProbeRequest); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_csi_proto_msgTypes[6].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*ProbeResponse); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_csi_proto_msgTypes[7].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*CreateVolumeRequest); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_csi_proto_msgTypes[8].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*VolumeContentSource); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_csi_proto_msgTypes[9].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*CreateVolumeResponse); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_csi_proto_msgTypes[10].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*VolumeCapability); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_csi_proto_msgTypes[11].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*CapacityRange); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_csi_proto_msgTypes[12].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*Volume); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_csi_proto_msgTypes[13].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*TopologyRequirement); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_csi_proto_msgTypes[14].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*Topology); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_csi_proto_msgTypes[15].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*DeleteVolumeRequest); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_csi_proto_msgTypes[16].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*DeleteVolumeResponse); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_csi_proto_msgTypes[17].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*ControllerPublishVolumeRequest); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_csi_proto_msgTypes[18].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*ControllerPublishVolumeResponse); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_csi_proto_msgTypes[19].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*ControllerUnpublishVolumeRequest); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_csi_proto_msgTypes[20].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*ControllerUnpublishVolumeResponse); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_csi_proto_msgTypes[21].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*ValidateVolumeCapabilitiesRequest); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_csi_proto_msgTypes[22].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*ValidateVolumeCapabilitiesResponse); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_csi_proto_msgTypes[23].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*ListVolumesRequest); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_csi_proto_msgTypes[24].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*ListVolumesResponse); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_csi_proto_msgTypes[25].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*ControllerGetVolumeRequest); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_csi_proto_msgTypes[26].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*ControllerGetVolumeResponse); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_csi_proto_msgTypes[27].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*ControllerModifyVolumeRequest); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_csi_proto_msgTypes[28].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*ControllerModifyVolumeResponse); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_csi_proto_msgTypes[29].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*GetCapacityRequest); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_csi_proto_msgTypes[30].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*GetCapacityResponse); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_csi_proto_msgTypes[31].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*ControllerGetCapabilitiesRequest); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_csi_proto_msgTypes[32].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*ControllerGetCapabilitiesResponse); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_csi_proto_msgTypes[33].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*ControllerServiceCapability); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_csi_proto_msgTypes[34].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*CreateSnapshotRequest); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_csi_proto_msgTypes[35].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*CreateSnapshotResponse); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_csi_proto_msgTypes[36].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*Snapshot); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_csi_proto_msgTypes[37].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*DeleteSnapshotRequest); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_csi_proto_msgTypes[38].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*DeleteSnapshotResponse); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_csi_proto_msgTypes[39].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*ListSnapshotsRequest); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_csi_proto_msgTypes[40].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*ListSnapshotsResponse); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_csi_proto_msgTypes[41].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*GetSnapshotRequest); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_csi_proto_msgTypes[42].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*GetSnapshotResponse); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_csi_proto_msgTypes[43].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*ControllerExpandVolumeRequest); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_csi_proto_msgTypes[44].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*ControllerExpandVolumeResponse); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_csi_proto_msgTypes[45].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*NodeStageVolumeRequest); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_csi_proto_msgTypes[46].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*NodeStageVolumeResponse); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_csi_proto_msgTypes[47].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*NodeUnstageVolumeRequest); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_csi_proto_msgTypes[48].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*NodeUnstageVolumeResponse); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_csi_proto_msgTypes[49].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*NodePublishVolumeRequest); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_csi_proto_msgTypes[50].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*NodePublishVolumeResponse); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_csi_proto_msgTypes[51].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*NodeUnpublishVolumeRequest); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_csi_proto_msgTypes[52].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*NodeUnpublishVolumeResponse); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_csi_proto_msgTypes[53].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*NodeGetVolumeStatsRequest); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_csi_proto_msgTypes[54].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*NodeGetVolumeStatsResponse); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_csi_proto_msgTypes[55].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*VolumeUsage); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_csi_proto_msgTypes[56].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*VolumeCondition); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_csi_proto_msgTypes[57].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*NodeGetCapabilitiesRequest); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_csi_proto_msgTypes[58].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*NodeGetCapabilitiesResponse); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_csi_proto_msgTypes[59].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*NodeServiceCapability); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_csi_proto_msgTypes[60].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*NodeGetInfoRequest); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_csi_proto_msgTypes[61].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*NodeGetInfoResponse); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_csi_proto_msgTypes[62].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*NodeExpandVolumeRequest); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_csi_proto_msgTypes[63].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*NodeExpandVolumeResponse); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_csi_proto_msgTypes[64].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*GroupControllerGetCapabilitiesRequest); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_csi_proto_msgTypes[65].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*GroupControllerGetCapabilitiesResponse); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_csi_proto_msgTypes[66].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*GroupControllerServiceCapability); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_csi_proto_msgTypes[67].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*CreateVolumeGroupSnapshotRequest); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_csi_proto_msgTypes[68].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*CreateVolumeGroupSnapshotResponse); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_csi_proto_msgTypes[69].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*VolumeGroupSnapshot); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_csi_proto_msgTypes[70].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*DeleteVolumeGroupSnapshotRequest); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_csi_proto_msgTypes[71].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*DeleteVolumeGroupSnapshotResponse); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_csi_proto_msgTypes[72].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*GetVolumeGroupSnapshotRequest); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_csi_proto_msgTypes[73].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*GetVolumeGroupSnapshotResponse); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_csi_proto_msgTypes[74].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*BlockMetadata); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_csi_proto_msgTypes[75].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*GetMetadataAllocatedRequest); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_csi_proto_msgTypes[76].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*GetMetadataAllocatedResponse); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_csi_proto_msgTypes[77].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*GetMetadataDeltaRequest); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_csi_proto_msgTypes[78].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*GetMetadataDeltaResponse); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_csi_proto_msgTypes[80].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*PluginCapability_Service); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_csi_proto_msgTypes[81].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*PluginCapability_VolumeExpansion); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_csi_proto_msgTypes[85].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*VolumeContentSource_SnapshotSource); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_csi_proto_msgTypes[86].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*VolumeContentSource_VolumeSource); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_csi_proto_msgTypes[87].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*VolumeCapability_BlockVolume); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_csi_proto_msgTypes[88].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*VolumeCapability_MountVolume); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_csi_proto_msgTypes[89].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*VolumeCapability_AccessMode); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_csi_proto_msgTypes[101].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*ValidateVolumeCapabilitiesResponse_Confirmed); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_csi_proto_msgTypes[105].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*ListVolumesResponse_VolumeStatus); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_csi_proto_msgTypes[106].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*ListVolumesResponse_Entry); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_csi_proto_msgTypes[107].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*ControllerGetVolumeResponse_VolumeStatus); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_csi_proto_msgTypes[111].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*ControllerServiceCapability_RPC); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_csi_proto_msgTypes[116].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*ListSnapshotsResponse_Entry); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_csi_proto_msgTypes[125].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*NodeServiceCapability_RPC); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_csi_proto_msgTypes[127].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*GroupControllerServiceCapability_RPC); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - } - file_csi_proto_msgTypes[4].OneofWrappers = []interface{}{ + file_csi_proto_msgTypes[4].OneofWrappers = []any{ (*PluginCapability_Service_)(nil), (*PluginCapability_VolumeExpansion_)(nil), } - file_csi_proto_msgTypes[8].OneofWrappers = []interface{}{ + file_csi_proto_msgTypes[8].OneofWrappers = []any{ (*VolumeContentSource_Snapshot)(nil), (*VolumeContentSource_Volume)(nil), } - file_csi_proto_msgTypes[10].OneofWrappers = []interface{}{ + file_csi_proto_msgTypes[10].OneofWrappers = []any{ (*VolumeCapability_Block)(nil), (*VolumeCapability_Mount)(nil), } - file_csi_proto_msgTypes[33].OneofWrappers = []interface{}{ + file_csi_proto_msgTypes[38].OneofWrappers = []any{ (*ControllerServiceCapability_Rpc)(nil), } - file_csi_proto_msgTypes[59].OneofWrappers = []interface{}{ + file_csi_proto_msgTypes[67].OneofWrappers = []any{ (*NodeServiceCapability_Rpc)(nil), } - file_csi_proto_msgTypes[66].OneofWrappers = []interface{}{ + file_csi_proto_msgTypes[74].OneofWrappers = []any{ (*GroupControllerServiceCapability_Rpc)(nil), } type x struct{} out := protoimpl.TypeBuilder{ File: protoimpl.DescBuilder{ GoPackagePath: reflect.TypeOf(x{}).PkgPath(), - RawDescriptor: file_csi_proto_rawDesc, - NumEnums: 8, - NumMessages: 134, + RawDescriptor: unsafe.Slice(unsafe.StringData(file_csi_proto_rawDesc), len(file_csi_proto_rawDesc)), + NumEnums: 10, + NumMessages: 147, NumExtensions: 7, NumServices: 5, }, @@ -10075,7 +8807,6 @@ func file_csi_proto_init() { ExtensionInfos: file_csi_proto_extTypes, }.Build() File_csi_proto = out.File - file_csi_proto_rawDesc = nil file_csi_proto_goTypes = nil file_csi_proto_depIdxs = nil } diff --git a/vendor/github.com/container-storage-interface/spec/lib/go/csi/csi_grpc.pb.go b/vendor/github.com/container-storage-interface/spec/lib/go/csi/csi_grpc.pb.go index 8b8197fecda..de3510d25bc 100644 --- a/vendor/github.com/container-storage-interface/spec/lib/go/csi/csi_grpc.pb.go +++ b/vendor/github.com/container-storage-interface/spec/lib/go/csi/csi_grpc.pb.go @@ -191,6 +191,8 @@ const ( Controller_ControllerUnpublishVolume_FullMethodName = "/csi.v1.Controller/ControllerUnpublishVolume" Controller_ValidateVolumeCapabilities_FullMethodName = "/csi.v1.Controller/ValidateVolumeCapabilities" Controller_ListVolumes_FullMethodName = "/csi.v1.Controller/ListVolumes" + Controller_ControllerListVolumeHealth_FullMethodName = "/csi.v1.Controller/ControllerListVolumeHealth" + Controller_ControllerGetVolumeHealth_FullMethodName = "/csi.v1.Controller/ControllerGetVolumeHealth" Controller_GetCapacity_FullMethodName = "/csi.v1.Controller/GetCapacity" Controller_ControllerGetCapabilities_FullMethodName = "/csi.v1.Controller/ControllerGetCapabilities" Controller_CreateSnapshot_FullMethodName = "/csi.v1.Controller/CreateSnapshot" @@ -212,6 +214,8 @@ type ControllerClient interface { ControllerUnpublishVolume(ctx context.Context, in *ControllerUnpublishVolumeRequest, opts ...grpc.CallOption) (*ControllerUnpublishVolumeResponse, error) ValidateVolumeCapabilities(ctx context.Context, in *ValidateVolumeCapabilitiesRequest, opts ...grpc.CallOption) (*ValidateVolumeCapabilitiesResponse, error) ListVolumes(ctx context.Context, in *ListVolumesRequest, opts ...grpc.CallOption) (*ListVolumesResponse, error) + ControllerListVolumeHealth(ctx context.Context, in *ControllerListVolumeHealthRequest, opts ...grpc.CallOption) (*ControllerListVolumeHealthResponse, error) + ControllerGetVolumeHealth(ctx context.Context, in *ControllerGetVolumeHealthRequest, opts ...grpc.CallOption) (*ControllerGetVolumeHealthResponse, error) GetCapacity(ctx context.Context, in *GetCapacityRequest, opts ...grpc.CallOption) (*GetCapacityResponse, error) ControllerGetCapabilities(ctx context.Context, in *ControllerGetCapabilitiesRequest, opts ...grpc.CallOption) (*ControllerGetCapabilitiesResponse, error) CreateSnapshot(ctx context.Context, in *CreateSnapshotRequest, opts ...grpc.CallOption) (*CreateSnapshotResponse, error) @@ -285,6 +289,24 @@ func (c *controllerClient) ListVolumes(ctx context.Context, in *ListVolumesReque return out, nil } +func (c *controllerClient) ControllerListVolumeHealth(ctx context.Context, in *ControllerListVolumeHealthRequest, opts ...grpc.CallOption) (*ControllerListVolumeHealthResponse, error) { + out := new(ControllerListVolumeHealthResponse) + err := c.cc.Invoke(ctx, Controller_ControllerListVolumeHealth_FullMethodName, in, out, opts...) + if err != nil { + return nil, err + } + return out, nil +} + +func (c *controllerClient) ControllerGetVolumeHealth(ctx context.Context, in *ControllerGetVolumeHealthRequest, opts ...grpc.CallOption) (*ControllerGetVolumeHealthResponse, error) { + out := new(ControllerGetVolumeHealthResponse) + err := c.cc.Invoke(ctx, Controller_ControllerGetVolumeHealth_FullMethodName, in, out, opts...) + if err != nil { + return nil, err + } + return out, nil +} + func (c *controllerClient) GetCapacity(ctx context.Context, in *GetCapacityRequest, opts ...grpc.CallOption) (*GetCapacityResponse, error) { out := new(GetCapacityResponse) err := c.cc.Invoke(ctx, Controller_GetCapacity_FullMethodName, in, out, opts...) @@ -376,6 +398,8 @@ type ControllerServer interface { ControllerUnpublishVolume(context.Context, *ControllerUnpublishVolumeRequest) (*ControllerUnpublishVolumeResponse, error) ValidateVolumeCapabilities(context.Context, *ValidateVolumeCapabilitiesRequest) (*ValidateVolumeCapabilitiesResponse, error) ListVolumes(context.Context, *ListVolumesRequest) (*ListVolumesResponse, error) + ControllerListVolumeHealth(context.Context, *ControllerListVolumeHealthRequest) (*ControllerListVolumeHealthResponse, error) + ControllerGetVolumeHealth(context.Context, *ControllerGetVolumeHealthRequest) (*ControllerGetVolumeHealthResponse, error) GetCapacity(context.Context, *GetCapacityRequest) (*GetCapacityResponse, error) ControllerGetCapabilities(context.Context, *ControllerGetCapabilitiesRequest) (*ControllerGetCapabilitiesResponse, error) CreateSnapshot(context.Context, *CreateSnapshotRequest) (*CreateSnapshotResponse, error) @@ -410,6 +434,12 @@ func (UnimplementedControllerServer) ValidateVolumeCapabilities(context.Context, func (UnimplementedControllerServer) ListVolumes(context.Context, *ListVolumesRequest) (*ListVolumesResponse, error) { return nil, status.Errorf(codes.Unimplemented, "method ListVolumes not implemented") } +func (UnimplementedControllerServer) ControllerListVolumeHealth(context.Context, *ControllerListVolumeHealthRequest) (*ControllerListVolumeHealthResponse, error) { + return nil, status.Errorf(codes.Unimplemented, "method ControllerListVolumeHealth not implemented") +} +func (UnimplementedControllerServer) ControllerGetVolumeHealth(context.Context, *ControllerGetVolumeHealthRequest) (*ControllerGetVolumeHealthResponse, error) { + return nil, status.Errorf(codes.Unimplemented, "method ControllerGetVolumeHealth not implemented") +} func (UnimplementedControllerServer) GetCapacity(context.Context, *GetCapacityRequest) (*GetCapacityResponse, error) { return nil, status.Errorf(codes.Unimplemented, "method GetCapacity not implemented") } @@ -558,6 +588,42 @@ func _Controller_ListVolumes_Handler(srv interface{}, ctx context.Context, dec f return interceptor(ctx, in, info, handler) } +func _Controller_ControllerListVolumeHealth_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { + in := new(ControllerListVolumeHealthRequest) + if err := dec(in); err != nil { + return nil, err + } + if interceptor == nil { + return srv.(ControllerServer).ControllerListVolumeHealth(ctx, in) + } + info := &grpc.UnaryServerInfo{ + Server: srv, + FullMethod: Controller_ControllerListVolumeHealth_FullMethodName, + } + handler := func(ctx context.Context, req interface{}) (interface{}, error) { + return srv.(ControllerServer).ControllerListVolumeHealth(ctx, req.(*ControllerListVolumeHealthRequest)) + } + return interceptor(ctx, in, info, handler) +} + +func _Controller_ControllerGetVolumeHealth_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { + in := new(ControllerGetVolumeHealthRequest) + if err := dec(in); err != nil { + return nil, err + } + if interceptor == nil { + return srv.(ControllerServer).ControllerGetVolumeHealth(ctx, in) + } + info := &grpc.UnaryServerInfo{ + Server: srv, + FullMethod: Controller_ControllerGetVolumeHealth_FullMethodName, + } + handler := func(ctx context.Context, req interface{}) (interface{}, error) { + return srv.(ControllerServer).ControllerGetVolumeHealth(ctx, req.(*ControllerGetVolumeHealthRequest)) + } + return interceptor(ctx, in, info, handler) +} + func _Controller_GetCapacity_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { in := new(GetCapacityRequest) if err := dec(in); err != nil { @@ -751,6 +817,14 @@ var Controller_ServiceDesc = grpc.ServiceDesc{ MethodName: "ListVolumes", Handler: _Controller_ListVolumes_Handler, }, + { + MethodName: "ControllerListVolumeHealth", + Handler: _Controller_ControllerListVolumeHealth_Handler, + }, + { + MethodName: "ControllerGetVolumeHealth", + Handler: _Controller_ControllerGetVolumeHealth_Handler, + }, { MethodName: "GetCapacity", Handler: _Controller_GetCapacity_Handler, @@ -1175,14 +1249,16 @@ var SnapshotMetadata_ServiceDesc = grpc.ServiceDesc{ } const ( - Node_NodeStageVolume_FullMethodName = "/csi.v1.Node/NodeStageVolume" - Node_NodeUnstageVolume_FullMethodName = "/csi.v1.Node/NodeUnstageVolume" - Node_NodePublishVolume_FullMethodName = "/csi.v1.Node/NodePublishVolume" - Node_NodeUnpublishVolume_FullMethodName = "/csi.v1.Node/NodeUnpublishVolume" - Node_NodeGetVolumeStats_FullMethodName = "/csi.v1.Node/NodeGetVolumeStats" - Node_NodeExpandVolume_FullMethodName = "/csi.v1.Node/NodeExpandVolume" - Node_NodeGetCapabilities_FullMethodName = "/csi.v1.Node/NodeGetCapabilities" - Node_NodeGetInfo_FullMethodName = "/csi.v1.Node/NodeGetInfo" + Node_NodeStageVolume_FullMethodName = "/csi.v1.Node/NodeStageVolume" + Node_NodeUnstageVolume_FullMethodName = "/csi.v1.Node/NodeUnstageVolume" + Node_NodePublishVolume_FullMethodName = "/csi.v1.Node/NodePublishVolume" + Node_NodeUnpublishVolume_FullMethodName = "/csi.v1.Node/NodeUnpublishVolume" + Node_NodeGetVolumeStats_FullMethodName = "/csi.v1.Node/NodeGetVolumeStats" + Node_NodeGetVolumeHealth_FullMethodName = "/csi.v1.Node/NodeGetVolumeHealth" + Node_NodeGetStorageHealth_FullMethodName = "/csi.v1.Node/NodeGetStorageHealth" + Node_NodeExpandVolume_FullMethodName = "/csi.v1.Node/NodeExpandVolume" + Node_NodeGetCapabilities_FullMethodName = "/csi.v1.Node/NodeGetCapabilities" + Node_NodeGetInfo_FullMethodName = "/csi.v1.Node/NodeGetInfo" ) // NodeClient is the client API for Node service. @@ -1194,6 +1270,8 @@ type NodeClient interface { NodePublishVolume(ctx context.Context, in *NodePublishVolumeRequest, opts ...grpc.CallOption) (*NodePublishVolumeResponse, error) NodeUnpublishVolume(ctx context.Context, in *NodeUnpublishVolumeRequest, opts ...grpc.CallOption) (*NodeUnpublishVolumeResponse, error) NodeGetVolumeStats(ctx context.Context, in *NodeGetVolumeStatsRequest, opts ...grpc.CallOption) (*NodeGetVolumeStatsResponse, error) + NodeGetVolumeHealth(ctx context.Context, in *NodeGetVolumeHealthRequest, opts ...grpc.CallOption) (*NodeGetVolumeHealthResponse, error) + NodeGetStorageHealth(ctx context.Context, in *NodeGetStorageHealthRequest, opts ...grpc.CallOption) (*NodeGetStorageHealthResponse, error) NodeExpandVolume(ctx context.Context, in *NodeExpandVolumeRequest, opts ...grpc.CallOption) (*NodeExpandVolumeResponse, error) NodeGetCapabilities(ctx context.Context, in *NodeGetCapabilitiesRequest, opts ...grpc.CallOption) (*NodeGetCapabilitiesResponse, error) NodeGetInfo(ctx context.Context, in *NodeGetInfoRequest, opts ...grpc.CallOption) (*NodeGetInfoResponse, error) @@ -1252,6 +1330,24 @@ func (c *nodeClient) NodeGetVolumeStats(ctx context.Context, in *NodeGetVolumeSt return out, nil } +func (c *nodeClient) NodeGetVolumeHealth(ctx context.Context, in *NodeGetVolumeHealthRequest, opts ...grpc.CallOption) (*NodeGetVolumeHealthResponse, error) { + out := new(NodeGetVolumeHealthResponse) + err := c.cc.Invoke(ctx, Node_NodeGetVolumeHealth_FullMethodName, in, out, opts...) + if err != nil { + return nil, err + } + return out, nil +} + +func (c *nodeClient) NodeGetStorageHealth(ctx context.Context, in *NodeGetStorageHealthRequest, opts ...grpc.CallOption) (*NodeGetStorageHealthResponse, error) { + out := new(NodeGetStorageHealthResponse) + err := c.cc.Invoke(ctx, Node_NodeGetStorageHealth_FullMethodName, in, out, opts...) + if err != nil { + return nil, err + } + return out, nil +} + func (c *nodeClient) NodeExpandVolume(ctx context.Context, in *NodeExpandVolumeRequest, opts ...grpc.CallOption) (*NodeExpandVolumeResponse, error) { out := new(NodeExpandVolumeResponse) err := c.cc.Invoke(ctx, Node_NodeExpandVolume_FullMethodName, in, out, opts...) @@ -1288,6 +1384,8 @@ type NodeServer interface { NodePublishVolume(context.Context, *NodePublishVolumeRequest) (*NodePublishVolumeResponse, error) NodeUnpublishVolume(context.Context, *NodeUnpublishVolumeRequest) (*NodeUnpublishVolumeResponse, error) NodeGetVolumeStats(context.Context, *NodeGetVolumeStatsRequest) (*NodeGetVolumeStatsResponse, error) + NodeGetVolumeHealth(context.Context, *NodeGetVolumeHealthRequest) (*NodeGetVolumeHealthResponse, error) + NodeGetStorageHealth(context.Context, *NodeGetStorageHealthRequest) (*NodeGetStorageHealthResponse, error) NodeExpandVolume(context.Context, *NodeExpandVolumeRequest) (*NodeExpandVolumeResponse, error) NodeGetCapabilities(context.Context, *NodeGetCapabilitiesRequest) (*NodeGetCapabilitiesResponse, error) NodeGetInfo(context.Context, *NodeGetInfoRequest) (*NodeGetInfoResponse, error) @@ -1313,6 +1411,12 @@ func (UnimplementedNodeServer) NodeUnpublishVolume(context.Context, *NodeUnpubli func (UnimplementedNodeServer) NodeGetVolumeStats(context.Context, *NodeGetVolumeStatsRequest) (*NodeGetVolumeStatsResponse, error) { return nil, status.Errorf(codes.Unimplemented, "method NodeGetVolumeStats not implemented") } +func (UnimplementedNodeServer) NodeGetVolumeHealth(context.Context, *NodeGetVolumeHealthRequest) (*NodeGetVolumeHealthResponse, error) { + return nil, status.Errorf(codes.Unimplemented, "method NodeGetVolumeHealth not implemented") +} +func (UnimplementedNodeServer) NodeGetStorageHealth(context.Context, *NodeGetStorageHealthRequest) (*NodeGetStorageHealthResponse, error) { + return nil, status.Errorf(codes.Unimplemented, "method NodeGetStorageHealth not implemented") +} func (UnimplementedNodeServer) NodeExpandVolume(context.Context, *NodeExpandVolumeRequest) (*NodeExpandVolumeResponse, error) { return nil, status.Errorf(codes.Unimplemented, "method NodeExpandVolume not implemented") } @@ -1425,6 +1529,42 @@ func _Node_NodeGetVolumeStats_Handler(srv interface{}, ctx context.Context, dec return interceptor(ctx, in, info, handler) } +func _Node_NodeGetVolumeHealth_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { + in := new(NodeGetVolumeHealthRequest) + if err := dec(in); err != nil { + return nil, err + } + if interceptor == nil { + return srv.(NodeServer).NodeGetVolumeHealth(ctx, in) + } + info := &grpc.UnaryServerInfo{ + Server: srv, + FullMethod: Node_NodeGetVolumeHealth_FullMethodName, + } + handler := func(ctx context.Context, req interface{}) (interface{}, error) { + return srv.(NodeServer).NodeGetVolumeHealth(ctx, req.(*NodeGetVolumeHealthRequest)) + } + return interceptor(ctx, in, info, handler) +} + +func _Node_NodeGetStorageHealth_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { + in := new(NodeGetStorageHealthRequest) + if err := dec(in); err != nil { + return nil, err + } + if interceptor == nil { + return srv.(NodeServer).NodeGetStorageHealth(ctx, in) + } + info := &grpc.UnaryServerInfo{ + Server: srv, + FullMethod: Node_NodeGetStorageHealth_FullMethodName, + } + handler := func(ctx context.Context, req interface{}) (interface{}, error) { + return srv.(NodeServer).NodeGetStorageHealth(ctx, req.(*NodeGetStorageHealthRequest)) + } + return interceptor(ctx, in, info, handler) +} + func _Node_NodeExpandVolume_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { in := new(NodeExpandVolumeRequest) if err := dec(in); err != nil { @@ -1506,6 +1646,14 @@ var Node_ServiceDesc = grpc.ServiceDesc{ MethodName: "NodeGetVolumeStats", Handler: _Node_NodeGetVolumeStats_Handler, }, + { + MethodName: "NodeGetVolumeHealth", + Handler: _Node_NodeGetVolumeHealth_Handler, + }, + { + MethodName: "NodeGetStorageHealth", + Handler: _Node_NodeGetStorageHealth_Handler, + }, { MethodName: "NodeExpandVolume", Handler: _Node_NodeExpandVolume_Handler, diff --git a/vendor/github.com/csi-addons/kubernetes-csi-addons/api/replication.storage/v1alpha1/groupversion_info.go b/vendor/github.com/csi-addons/kubernetes-csi-addons/api/replication.storage/v1alpha1/groupversion_info.go index 37182b68daf..db603f33f0e 100644 --- a/vendor/github.com/csi-addons/kubernetes-csi-addons/api/replication.storage/v1alpha1/groupversion_info.go +++ b/vendor/github.com/csi-addons/kubernetes-csi-addons/api/replication.storage/v1alpha1/groupversion_info.go @@ -20,8 +20,9 @@ limitations under the License. package v1alpha1 import ( + metav1 "k8s.io/apimachinery/pkg/apis/meta/v1" + "k8s.io/apimachinery/pkg/runtime" "k8s.io/apimachinery/pkg/runtime/schema" - "sigs.k8s.io/controller-runtime/pkg/scheme" ) var ( @@ -29,8 +30,25 @@ var ( GroupVersion = schema.GroupVersion{Group: "replication.storage.openshift.io", Version: "v1alpha1"} // SchemeBuilder is used to add go types to the GroupVersionKind scheme - SchemeBuilder = &scheme.Builder{GroupVersion: GroupVersion} + SchemeBuilder = runtime.NewSchemeBuilder(addKnownTypes) // AddToScheme adds the types in this group-version to the given scheme. AddToScheme = SchemeBuilder.AddToScheme ) + +func addKnownTypes(scheme *runtime.Scheme) error { + scheme.AddKnownTypes(GroupVersion, + &VolumeGroupReplication{}, + &VolumeGroupReplicationList{}, + &VolumeGroupReplicationClass{}, + &VolumeGroupReplicationClassList{}, + &VolumeGroupReplicationContent{}, + &VolumeGroupReplicationContentList{}, + &VolumeReplication{}, + &VolumeReplicationList{}, + &VolumeReplicationClass{}, + &VolumeReplicationClassList{}, + ) + metav1.AddToGroupVersion(scheme, GroupVersion) + return nil +} diff --git a/vendor/github.com/csi-addons/kubernetes-csi-addons/api/replication.storage/v1alpha1/volumegroupreplication_types.go b/vendor/github.com/csi-addons/kubernetes-csi-addons/api/replication.storage/v1alpha1/volumegroupreplication_types.go index 7782ce39b92..fd4353b0177 100644 --- a/vendor/github.com/csi-addons/kubernetes-csi-addons/api/replication.storage/v1alpha1/volumegroupreplication_types.go +++ b/vendor/github.com/csi-addons/kubernetes-csi-addons/api/replication.storage/v1alpha1/volumegroupreplication_types.go @@ -115,7 +115,3 @@ type VolumeGroupReplicationList struct { metav1.ListMeta `json:"metadata,omitempty"` Items []VolumeGroupReplication `json:"items"` } - -func init() { - SchemeBuilder.Register(&VolumeGroupReplication{}, &VolumeGroupReplicationList{}) -} diff --git a/vendor/github.com/csi-addons/kubernetes-csi-addons/api/replication.storage/v1alpha1/volumegroupreplicationclass_types.go b/vendor/github.com/csi-addons/kubernetes-csi-addons/api/replication.storage/v1alpha1/volumegroupreplicationclass_types.go index 8e56b63e7b8..53bae7849fa 100644 --- a/vendor/github.com/csi-addons/kubernetes-csi-addons/api/replication.storage/v1alpha1/volumegroupreplicationclass_types.go +++ b/vendor/github.com/csi-addons/kubernetes-csi-addons/api/replication.storage/v1alpha1/volumegroupreplicationclass_types.go @@ -63,7 +63,3 @@ type VolumeGroupReplicationClassList struct { metav1.ListMeta `json:"metadata,omitempty"` Items []VolumeGroupReplicationClass `json:"items"` } - -func init() { - SchemeBuilder.Register(&VolumeGroupReplicationClass{}, &VolumeGroupReplicationClassList{}) -} diff --git a/vendor/github.com/csi-addons/kubernetes-csi-addons/api/replication.storage/v1alpha1/volumegroupreplicationcontent_types.go b/vendor/github.com/csi-addons/kubernetes-csi-addons/api/replication.storage/v1alpha1/volumegroupreplicationcontent_types.go index 1de94534b38..329267861ec 100644 --- a/vendor/github.com/csi-addons/kubernetes-csi-addons/api/replication.storage/v1alpha1/volumegroupreplicationcontent_types.go +++ b/vendor/github.com/csi-addons/kubernetes-csi-addons/api/replication.storage/v1alpha1/volumegroupreplicationcontent_types.go @@ -78,12 +78,46 @@ type VolumeGroupReplicationContentSource struct { VolumeHandles []string `json:"volumeHandles"` } +// PersistentVolumeMapping contains the PV reference along with its +// source and destination volume handles. The destination handle is +// populated only when the SP supports GET_REPLICATION_DESTINATION_INFO +// and destination info is available. +type PersistentVolumeMapping struct { + // Name is the name of the PersistentVolume. + Name string `json:"name"` + + // VolumeHandle is the CSI volume handle of this PV on the + // source cluster (i.e. PV.Spec.CSI.VolumeHandle). + VolumeHandle string `json:"volumeHandle"` + + // DestinationVolumeHandle is the CSI volume handle on the + // destination/target cluster, as reported by the SP. + // This field is empty when destination info is not available. + // +optional + DestinationVolumeHandle string `json:"destinationVolumeHandle,omitempty"` +} + // VolumeGroupReplicationContentStatus defines the status of VolumeGroupReplicationContent type VolumeGroupReplicationContentStatus struct { // PersistentVolumeRefList is the list of PV for the group replication // The maximum number of allowed PV in the group is 100. + // Deprecated: Use PersistentVolumeMappingList instead, which includes + // source and destination volume handle information per PV. // +optional PersistentVolumeRefList []corev1.LocalObjectReference `json:"persistentVolumeRefList,omitempty"` + + // PersistentVolumeMappingList is the list of PVs for the group + // replication, enriched with source and destination volume handles. + // This replaces PersistentVolumeRefList. When both fields are + // present, consumers SHOULD prefer this field. + // The maximum number of allowed PVs in the group is 100. + // +optional + PersistentVolumeMappingList []PersistentVolumeMapping `json:"persistentVolumeMappingList,omitempty"` + + // DestinationVolumeGroupID is the volume group ID on the + // destination/target side, as reported by the SP. + // +optional + DestinationVolumeGroupID string `json:"destinationVolumeGroupID,omitempty"` } //+kubebuilder:object:root=true @@ -110,7 +144,3 @@ type VolumeGroupReplicationContentList struct { metav1.ListMeta `json:"metadata,omitempty"` Items []VolumeGroupReplicationContent `json:"items"` } - -func init() { - SchemeBuilder.Register(&VolumeGroupReplicationContent{}, &VolumeGroupReplicationContentList{}) -} diff --git a/vendor/github.com/csi-addons/kubernetes-csi-addons/api/replication.storage/v1alpha1/volumereplication_types.go b/vendor/github.com/csi-addons/kubernetes-csi-addons/api/replication.storage/v1alpha1/volumereplication_types.go index b6d473efff1..039a95f9be0 100644 --- a/vendor/github.com/csi-addons/kubernetes-csi-addons/api/replication.storage/v1alpha1/volumereplication_types.go +++ b/vendor/github.com/csi-addons/kubernetes-csi-addons/api/replication.storage/v1alpha1/volumereplication_types.go @@ -30,29 +30,33 @@ const ( // "ConditionDegraded" means the condition is not fulfilled. // "ConditionResyncing" means the condition is resyncing. const ( - ConditionCompleted = "Completed" - ConditionDegraded = "Degraded" - ConditionResyncing = "Resyncing" - ConditionValidated = "Validated" - ConditionReplicating = "Replicating" + ConditionCompleted = "Completed" + ConditionDegraded = "Degraded" + ConditionResyncing = "Resyncing" + ConditionValidated = "Validated" + ConditionReplicating = "Replicating" + ConditionDestinationInfoAvailable = "DestinationInfoAvailable" ) // These are valid messages for various conditions and states of volume replication. const ( - MessagePromoted = "is promoted to primary and replicating to secondary" - MessageHealthy = "is healthy" - MessageNotResyncing = "is not resyncing" - MessageValidated = "is validated and met all prerequisites" - MessageFailedPromoted = "failed to promote" - MessageFailedDemoted = "failed to demote" - MessageFailedPreCondition = "failed to meet prerequisite" - MessageDemoted = "is demoted to secondary" - MessageDegraded = "is degraded" - MessageResyncTriggered = "is resyncing changes from primary to secondary" - MessageResyncFailed = "failed to resync" - MessageReplicating = "is replicating" - MessageNotReplicating = "is not replicating" - MessageUnknownReplicationState = "replication status is unknown" + MessagePromoted = "is promoted to primary and replicating to secondary" + MessageHealthy = "is healthy" + MessageNotResyncing = "is not resyncing" + MessageValidated = "is validated and met all prerequisites" + MessageFailedPromoted = "failed to promote" + MessageFailedDemoted = "failed to demote" + MessageFailedPreCondition = "failed to meet prerequisite" + MessageDemoted = "is demoted to secondary" + MessageDegraded = "is degraded" + MessageResyncTriggered = "is resyncing changes from primary to secondary" + MessageResyncFailed = "failed to resync" + MessageReplicating = "is replicating" + MessageNotReplicating = "is not replicating" + MessageUnknownReplicationState = "replication status is unknown" + MessageDestinationInfoAvailable = "destination info is available" + MessageDestinationInfoPending = "destination info is pending update" + MessageDestinationInfoFailed = "failed to get destination info" ) type Source string @@ -95,6 +99,12 @@ const ( Replicating = "Replicating" // NotReplicating condition represents that the volume/group is not replicating. NotReplicating = "NotReplicating" + // DestinationInfoUpdated represents that the destination info has been updated. + DestinationInfoUpdated = "DestinationInfoUpdated" + // DestinationInfoPending represents that the destination info is pending update. + DestinationInfoPending = "DestinationInfoPending" + // FailedToGetDestinationInfo represents the failure to get destination info. + FailedToGetDestinationInfo = "FailedToGetDestinationInfo" ) // ReplicationState represents the replication operations to be performed on the volume. @@ -167,6 +177,11 @@ type VolumeReplicationStatus struct { LastSyncTime *metav1.Time `json:"lastSyncTime,omitempty"` LastSyncBytes *int64 `json:"lastSyncBytes,omitempty"` LastSyncDuration *metav1.Duration `json:"lastSyncDuration,omitempty"` + // DestinationVolumeID is the volume ID on the destination/target side. + // This field is set when the SP reports different source and destination + // volume IDs. + // +optional + DestinationVolumeID string `json:"destinationVolumeID,omitempty"` } // +kubebuilder:object:root=true @@ -198,7 +213,3 @@ type VolumeReplicationList struct { metav1.ListMeta `json:"metadata,omitempty"` Items []VolumeReplication `json:"items"` } - -func init() { - SchemeBuilder.Register(&VolumeReplication{}, &VolumeReplicationList{}) -} diff --git a/vendor/github.com/csi-addons/kubernetes-csi-addons/api/replication.storage/v1alpha1/volumereplicationclass_types.go b/vendor/github.com/csi-addons/kubernetes-csi-addons/api/replication.storage/v1alpha1/volumereplicationclass_types.go index 32e88d99801..a44dfb2e451 100644 --- a/vendor/github.com/csi-addons/kubernetes-csi-addons/api/replication.storage/v1alpha1/volumereplicationclass_types.go +++ b/vendor/github.com/csi-addons/kubernetes-csi-addons/api/replication.storage/v1alpha1/volumereplicationclass_types.go @@ -64,7 +64,3 @@ type VolumeReplicationClassList struct { metav1.ListMeta `json:"metadata,omitempty"` Items []VolumeReplicationClass `json:"items"` } - -func init() { - SchemeBuilder.Register(&VolumeReplicationClass{}, &VolumeReplicationClassList{}) -} diff --git a/vendor/github.com/csi-addons/kubernetes-csi-addons/api/replication.storage/v1alpha1/zz_generated.deepcopy.go b/vendor/github.com/csi-addons/kubernetes-csi-addons/api/replication.storage/v1alpha1/zz_generated.deepcopy.go index 0ae95b0e982..991dbc802ee 100644 --- a/vendor/github.com/csi-addons/kubernetes-csi-addons/api/replication.storage/v1alpha1/zz_generated.deepcopy.go +++ b/vendor/github.com/csi-addons/kubernetes-csi-addons/api/replication.storage/v1alpha1/zz_generated.deepcopy.go @@ -23,9 +23,24 @@ package v1alpha1 import ( corev1 "k8s.io/api/core/v1" "k8s.io/apimachinery/pkg/apis/meta/v1" - runtime "k8s.io/apimachinery/pkg/runtime" + "k8s.io/apimachinery/pkg/runtime" ) +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *PersistentVolumeMapping) DeepCopyInto(out *PersistentVolumeMapping) { + *out = *in +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new PersistentVolumeMapping. +func (in *PersistentVolumeMapping) DeepCopy() *PersistentVolumeMapping { + if in == nil { + return nil + } + out := new(PersistentVolumeMapping) + in.DeepCopyInto(out) + return out +} + // DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. func (in *VolumeGroupReplication) DeepCopyInto(out *VolumeGroupReplication) { *out = *in @@ -264,6 +279,11 @@ func (in *VolumeGroupReplicationContentStatus) DeepCopyInto(out *VolumeGroupRepl *out = make([]corev1.LocalObjectReference, len(*in)) copy(*out, *in) } + if in.PersistentVolumeMappingList != nil { + in, out := &in.PersistentVolumeMappingList, &out.PersistentVolumeMappingList + *out = make([]PersistentVolumeMapping, len(*in)) + copy(*out, *in) + } } // DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new VolumeGroupReplicationContentStatus. diff --git a/vendor/github.com/go-logr/logr/context_noslog.go b/vendor/github.com/go-logr/logr/context_noslog.go index f012f9a18e8..0a3d1a125e0 100644 --- a/vendor/github.com/go-logr/logr/context_noslog.go +++ b/vendor/github.com/go-logr/logr/context_noslog.go @@ -1,5 +1,4 @@ //go:build !go1.21 -// +build !go1.21 /* Copyright 2019 The logr Authors. diff --git a/vendor/github.com/go-logr/logr/context_slog.go b/vendor/github.com/go-logr/logr/context_slog.go index 065ef0b8280..c69eb01ba1b 100644 --- a/vendor/github.com/go-logr/logr/context_slog.go +++ b/vendor/github.com/go-logr/logr/context_slog.go @@ -1,5 +1,4 @@ //go:build go1.21 -// +build go1.21 /* Copyright 2019 The logr Authors. diff --git a/vendor/github.com/go-logr/logr/funcr/funcr.go b/vendor/github.com/go-logr/logr/funcr/funcr.go index b22c57d7137..7f4996e9e48 100644 --- a/vendor/github.com/go-logr/logr/funcr/funcr.go +++ b/vendor/github.com/go-logr/logr/funcr/funcr.go @@ -426,7 +426,7 @@ func (f Formatter) colon() byte { } func (f Formatter) pretty(value any) string { - return f.prettyWithFlags(value, 0, 0) + return f.prettyWithFlags(value, 0, 0, 0, nil) } const ( @@ -434,7 +434,13 @@ const ( ) // TODO: This is not fast. Most of the overhead goes here. -func (f Formatter) prettyWithFlags(value any, flags uint32, depth int) string { +// value: The value to render +// flags: Bitmask of flags (see above) +// depth: The current depth of nested structs, slices, arrays, and maps +// ptrDepth: The current depth of including pointer dereferences +// ptrMap: A map of pointers already seen, to avoid infinite recursion (usually +// nil unless ptrDepth is large) +func (f Formatter) prettyWithFlags(value any, flags uint32, depth int, ptrDepth int, ptrMap map[uintptr]bool) string { if depth > f.opts.MaxLogDepth { return `""` } @@ -504,7 +510,7 @@ func (f Formatter) prettyWithFlags(value any, flags uint32, depth int) string { // arbitrary keys might need escaping buf.WriteString(prettyString(k)) buf.WriteByte(f.colon()) - buf.WriteString(f.prettyWithFlags(v[i+1], 0, depth+1)) + buf.WriteString(f.prettyWithFlags(v[i+1], 0, depth+1, ptrDepth+1, ptrMap)) } if flags&flagRawStruct == 0 { buf.WriteByte('}') @@ -576,7 +582,7 @@ func (f Formatter) prettyWithFlags(value any, flags uint32, depth int) string { } printComma = true // if we got here, we are rendering a field if fld.Anonymous && fld.Type.Kind() == reflect.Struct && name == "" { - buf.WriteString(f.prettyWithFlags(v.Field(i).Interface(), flags|flagRawStruct, depth+1)) + buf.WriteString(f.prettyWithFlags(v.Field(i).Interface(), flags|flagRawStruct, depth+1, ptrDepth+1, ptrMap)) continue } if name == "" { @@ -585,7 +591,7 @@ func (f Formatter) prettyWithFlags(value any, flags uint32, depth int) string { // field names can't contain characters which need escaping buf.WriteString(f.quoted(name, false)) buf.WriteByte(f.colon()) - buf.WriteString(f.prettyWithFlags(v.Field(i).Interface(), 0, depth+1)) + buf.WriteString(f.prettyWithFlags(v.Field(i).Interface(), 0, depth+1, ptrDepth+1, ptrMap)) } if flags&flagRawStruct == 0 { buf.WriteByte('}') @@ -612,7 +618,7 @@ func (f Formatter) prettyWithFlags(value any, flags uint32, depth int) string { buf.WriteByte(f.comma()) } e := v.Index(i) - buf.WriteString(f.prettyWithFlags(e.Interface(), 0, depth+1)) + buf.WriteString(f.prettyWithFlags(e.Interface(), 0, depth+1, ptrDepth+1, ptrMap)) } buf.WriteByte(']') return buf.String() @@ -637,7 +643,8 @@ func (f Formatter) prettyWithFlags(value any, flags uint32, depth int) string { keystr = prettyString(keystr) } else { // prettyWithFlags will produce already-escaped values - keystr = f.prettyWithFlags(it.Key().Interface(), 0, depth+1) + // key depth is unrelated to overall depth + keystr = f.prettyWithFlags(it.Key().Interface(), 0, 0, ptrDepth, ptrMap) if t.Key().Kind() != reflect.String { // JSON only does string keys. Unlike Go's standard JSON, we'll // convert just about anything to a string. @@ -646,16 +653,34 @@ func (f Formatter) prettyWithFlags(value any, flags uint32, depth int) string { } buf.WriteString(keystr) buf.WriteByte(f.colon()) - buf.WriteString(f.prettyWithFlags(it.Value().Interface(), 0, depth+1)) + buf.WriteString(f.prettyWithFlags(it.Value().Interface(), 0, depth+1, ptrDepth+1, ptrMap)) i++ } buf.WriteByte('}') return buf.String() - case reflect.Ptr, reflect.Interface: + case reflect.Pointer, reflect.Interface: if v.IsNil() { return "null" } - return f.prettyWithFlags(v.Elem().Interface(), 0, depth) + // Special case: recursive pointers. For normal use we do not want to + // count pointer dereferences as depth, but if we see the same pointer + // again we have a recursion and need to stop. After a large number of + // pointer dereferences we will start tracking pointers to avoid the + // perf hit of doing it in the normal path. + // + // This should not happen accidentally (e.g. json decoding should never + // do this) but we can handle it gracefully. + if ptrMap != nil && ptrMap[uintptr(v.Pointer())] { + depth = f.opts.MaxLogDepth + 1 // force a depth error + } + const maxDepthFactor = 4 // arbitrary, but we want it large enough to not false-alert + if ptrDepth > f.opts.MaxLogDepth*maxDepthFactor && ptrMap == nil { + ptrMap = map[uintptr]bool{} + } + if ptrMap != nil { + ptrMap[(uintptr)(v.Pointer())] = true + } + return f.prettyWithFlags(v.Elem().Interface(), 0, depth, ptrDepth+1, ptrMap) } return fmt.Sprintf(`""`, t.Kind().String()) } @@ -697,7 +722,7 @@ func isEmpty(v reflect.Value) bool { return v.Float() == 0 case reflect.Complex64, reflect.Complex128: return v.Complex() == 0 - case reflect.Interface, reflect.Ptr: + case reflect.Interface, reflect.Pointer: return v.IsNil() } return false diff --git a/vendor/github.com/go-logr/logr/funcr/slogsink.go b/vendor/github.com/go-logr/logr/funcr/slogsink.go index 7bd84761e2d..8b519c91e13 100644 --- a/vendor/github.com/go-logr/logr/funcr/slogsink.go +++ b/vendor/github.com/go-logr/logr/funcr/slogsink.go @@ -1,5 +1,4 @@ //go:build go1.21 -// +build go1.21 /* Copyright 2023 The logr Authors. @@ -33,7 +32,7 @@ const extraSlogSinkDepth = 3 // 2 for slog, 1 for SlogSink func (l fnlogger) Handle(_ context.Context, record slog.Record) error { kvList := make([]any, 0, 2*record.NumAttrs()) record.Attrs(func(attr slog.Attr) bool { - kvList = attrToKVs(attr, kvList) + kvList = attrToKVs(attr, kvList, l.opts.MaxLogDepth) return true }) @@ -49,7 +48,7 @@ func (l fnlogger) Handle(_ context.Context, record slog.Record) error { func (l fnlogger) WithAttrs(attrs []slog.Attr) logr.SlogSink { kvList := make([]any, 0, 2*len(attrs)) for _, attr := range attrs { - kvList = attrToKVs(attr, kvList) + kvList = attrToKVs(attr, kvList, l.opts.MaxLogDepth) } l.AddValues(kvList) return &l @@ -61,14 +60,25 @@ func (l fnlogger) WithGroup(name string) logr.SlogSink { } // attrToKVs appends a slog.Attr to a logr-style kvList. It handle slog Groups -// and other details of slog. -func attrToKVs(attr slog.Attr, kvList []any) []any { +// and other details of slog. maxDepth bounds recursion into nested groups so a +// deeply-nested slog.Group cannot exhaust the stack; it is decremented per group +// level and starts at the Formatter's MaxLogDepth (past which the formatter would +// truncate the rendering anyway). +func attrToKVs(attr slog.Attr, kvList []any, maxDepth int) []any { attrVal := attr.Value.Resolve() if attrVal.Kind() == slog.KindGroup { + if maxDepth <= 0 { + // Nesting is too deep to build without risking a stack overflow. + // Stop here; the formatter truncates below MaxLogDepth regardless. + if attr.Key != "" { + kvList = append(kvList, attr.Key, "") + } + return kvList + } groupVal := attrVal.Group() grpKVs := make([]any, 0, 2*len(groupVal)) for _, attr := range groupVal { - grpKVs = attrToKVs(attr, grpKVs) + grpKVs = attrToKVs(attr, grpKVs, maxDepth-1) } if attr.Key == "" { // slog says we have to inline these diff --git a/vendor/github.com/go-logr/logr/sloghandler.go b/vendor/github.com/go-logr/logr/sloghandler.go index 82d1ba49481..befaf5510fa 100644 --- a/vendor/github.com/go-logr/logr/sloghandler.go +++ b/vendor/github.com/go-logr/logr/sloghandler.go @@ -1,5 +1,4 @@ //go:build go1.21 -// +build go1.21 /* Copyright 2023 The logr Authors. diff --git a/vendor/github.com/go-logr/logr/slogr.go b/vendor/github.com/go-logr/logr/slogr.go index 28a83d02439..bfe80eb8d68 100644 --- a/vendor/github.com/go-logr/logr/slogr.go +++ b/vendor/github.com/go-logr/logr/slogr.go @@ -1,5 +1,4 @@ //go:build go1.21 -// +build go1.21 /* Copyright 2023 The logr Authors. diff --git a/vendor/github.com/go-logr/logr/slogsink.go b/vendor/github.com/go-logr/logr/slogsink.go index 4060fcbc2b0..ab76ea99fe6 100644 --- a/vendor/github.com/go-logr/logr/slogsink.go +++ b/vendor/github.com/go-logr/logr/slogsink.go @@ -1,5 +1,4 @@ //go:build go1.21 -// +build go1.21 /* Copyright 2023 The logr Authors. diff --git a/vendor/github.com/google/fscrypt/actions/config.go b/vendor/github.com/google/fscrypt/actions/config.go index 7c7c0e619f6..bd4ae2847cd 100644 --- a/vendor/github.com/google/fscrypt/actions/config.go +++ b/vendor/github.com/google/fscrypt/actions/config.go @@ -24,6 +24,7 @@ import ( "bytes" "fmt" "log" + "math" "os" "runtime" "time" @@ -31,6 +32,7 @@ import ( "golang.org/x/sys/unix" "google.golang.org/protobuf/proto" + "github.com/google/fscrypt/cgroup" "github.com/google/fscrypt/crypto" "github.com/google/fscrypt/filesystem" "github.com/google/fscrypt/metadata" @@ -186,8 +188,9 @@ func getConfig() (*metadata.Config, error) { func getHashingCosts(target time.Duration) (*metadata.HashingCosts, error) { log.Printf("Finding hashing costs that take %v\n", target) - // Start out with the minimal possible costs that use all the CPUs. - parallelism := int64(runtime.NumCPU()) + // Start out with the minimal possible costs that use all the available + // CPUs, respecting cgroup limits when present. + parallelism := int64(effectiveCPUCount()) // golang.org/x/crypto/argon2 only supports parallelism up to 255. // For compatibility, don't use more than that amount. if parallelism > metadata.MaxParallelism { @@ -248,9 +251,25 @@ func getHashingCosts(target time.Duration) (*metadata.HashingCosts, error) { } } +// effectiveCPUCount returns the number of CPUs available to this process, +// taking cgroup limits into account. Falls back to runtime.NumCPU() when +// cgroup information is unavailable. +func effectiveCPUCount() int { + cg, err := cgroup.New() + if err != nil { + return runtime.NumCPU() + } + quota, err := cg.CPUQuota() + if err != nil || quota <= 0 { + return runtime.NumCPU() + } + cpus := int(math.Ceil(quota)) + return min(cpus, runtime.NumCPU()) +} + // memoryBytesLimit returns the maximum amount of memory we will use for // passphrase hashing. This will never be more than a reasonable maximum (for -// compatibility) or an 8th the available system RAM. +// compatibility) or an 8th the available RAM (considering cgroup limits). func memoryBytesLimit() int64 { // The sysinfo syscall only fails if given a bad address var info unix.Sysinfo_t @@ -258,6 +277,11 @@ func memoryBytesLimit() int64 { util.NeverError(err) totalRAMBytes := int64(info.Totalram) + if cg, err := cgroup.New(); err == nil { + if cgroupMem, err := cg.MemoryLimit(); err == nil && cgroupMem > 0 { + totalRAMBytes = util.MinInt64(totalRAMBytes, cgroupMem) + } + } return util.MinInt64(totalRAMBytes/8, maxMemoryBytes) } diff --git a/vendor/github.com/google/fscrypt/actions/recovery.go b/vendor/github.com/google/fscrypt/actions/recovery.go index 2bb8a23d380..3000be66bf4 100644 --- a/vendor/github.com/google/fscrypt/actions/recovery.go +++ b/vendor/github.com/google/fscrypt/actions/recovery.go @@ -23,6 +23,7 @@ import ( "os" "strconv" + "golang.org/x/sys/unix" "google.golang.org/protobuf/proto" "github.com/google/fscrypt/crypto" @@ -91,7 +92,7 @@ func AddRecoveryPassphrase(policy *Policy, dirname string) (*crypto.Key, *Protec // passphrase in a different location if they actually need it. func WriteRecoveryInstructions(recoveryPassphrase *crypto.Key, recoveryProtector *Protector, policy *Policy, path string) error { - file, err := os.OpenFile(path, os.O_WRONLY|os.O_CREATE, 0600) + file, err := os.OpenFile(path, os.O_WRONLY|os.O_CREATE|os.O_EXCL|unix.O_NOFOLLOW, 0600) if err != nil { return err } diff --git a/vendor/github.com/google/fscrypt/cgroup/cgroup.go b/vendor/github.com/google/fscrypt/cgroup/cgroup.go new file mode 100644 index 00000000000..dff81386398 --- /dev/null +++ b/vendor/github.com/google/fscrypt/cgroup/cgroup.go @@ -0,0 +1,175 @@ +/* + * cgroup.go - Read CPU and memory limits from Linux cgroups v2. + * + * Copyright 2026 Google LLC + * + * Licensed under the Apache License, Version 2.0 (the "License"); you may not + * use this file except in compliance with the License. You may obtain a copy of + * the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License 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 cgroup reads CPU and memory resource limits from Linux control +// groups (cgroup v2). +// +// References: +// - cgroups(7): https://man7.org/linux/man-pages/man7/cgroups.7.html +// - cgroup v2 (cpu.max, memory.max): https://docs.kernel.org/admin-guide/cgroup-v2.html +// - /proc/self/cgroup: https://man7.org/linux/man-pages/man7/cgroups.7.html (see "/proc files") +package cgroup + +import ( + "bufio" + "errors" + "fmt" + "os" + "path/filepath" + "strconv" + "strings" +) + +// Errors. +var ( + // ErrNoLimit indicates that no cgroup limit is set. + ErrNoLimit = errors.New("no cgroup limit set") + + // ErrV1Detected indicates that cgroup v1 controllers were found. Only v2 is + // supported. + ErrV1Detected = errors.New("cgroup v1 detected; only v2 is supported") +) + +// Cgroup provides access to cgroup v2 resource limits. Create one with +// New or NewFromRoot. +type Cgroup struct { + // cgroupDir is the resolved filesystem path to the cgroup directory + // (e.g. /sys/fs/cgroup/user.slice/...). + cgroupDir string +} + +// New returns a Cgroup by reading /proc/self/cgroup on the live system. +func New() (Cgroup, error) { + return NewFromRoot("/") +} + +// NewFromRoot is like New but resolves all filesystem paths relative to +// root instead of "/". This is useful for testing with a mock filesystem. +func NewFromRoot(root string) (Cgroup, error) { + groupPath, err := parseProcCgroup(filepath.Join(root, "proc/self/cgroup")) + if err != nil { + return Cgroup{}, err + } + return Cgroup{ + cgroupDir: filepath.Join(root, "sys/fs/cgroup", groupPath), + }, nil +} + +// CPUQuota returns the CPU quota as a fractional number of CPUs (e.g. 0.5 +// means half a core). Returns ErrNoLimit if no CPU limit is configured. +func (c Cgroup) CPUQuota() (float64, error) { + data, err := c.readFile("cpu.max") + if err != nil { + return 0, err + } + return parseCPUMax(data) +} + +// MemoryLimit returns the cgroup memory limit in bytes. Returns ErrNoLimit +// if no memory limit is configured. +func (c Cgroup) MemoryLimit() (int64, error) { + data, err := c.readFile("memory.max") + if err != nil { + return 0, err + } + return parseMemoryMax(data) +} + +func (c Cgroup) readFile(path string) (string, error) { + data, err := os.ReadFile(filepath.Join(c.cgroupDir, path)) + if err != nil { + if os.IsNotExist(err) { + return "", ErrNoLimit + } + return "", err + } + return strings.TrimSpace(string(data)), nil +} + +// parseProcCgroup parses /proc/self/cgroup and returns the cgroup v2 group +// path. The v2 entry is the line with hierarchy-ID "0" and an empty +// controller list: "0::". +// +// Returns an error if v1 controllers are detected or no v2 entry is found. +// +// https://man7.org/linux/man-pages/man7/cgroups.7.html +func parseProcCgroup(path string) (string, error) { + f, err := os.Open(path) + if err != nil { + return "", err + } + defer f.Close() + + var v2Path string + + scanner := bufio.NewScanner(f) + for scanner.Scan() { + parts := strings.SplitN(scanner.Text(), ":", 3) + if len(parts) != 3 { + continue + } + if parts[0] == "0" && parts[1] == "" { + v2Path = parts[2] + } else if parts[1] != "" { + return "", ErrV1Detected + } + } + if err := scanner.Err(); err != nil { + return "", err + } + if v2Path == "" { + return "", fmt.Errorf("no cgroup v2 entry found in %s", path) + } + return v2Path, nil +} + +func parseCPUMax(content string) (float64, error) { + fields := strings.Fields(content) + if len(fields) == 0 || len(fields) > 2 { + return 0, fmt.Errorf("unexpected cpu.max format: %q", content) + } + if fields[0] == "max" { + return 0, ErrNoLimit + } + quota, err := strconv.ParseFloat(fields[0], 64) + if err != nil { + return 0, fmt.Errorf("parsing cpu.max quota: %w", err) + } + period := 100000.0 + if len(fields) == 2 { + period, err = strconv.ParseFloat(fields[1], 64) + if err != nil { + return 0, fmt.Errorf("parsing cpu.max period: %w", err) + } + if period == 0 { + return 0, fmt.Errorf("cpu.max period is zero") + } + } + return quota / period, nil +} + +func parseMemoryMax(content string) (int64, error) { + if content == "max" { + return 0, ErrNoLimit + } + v, err := strconv.ParseInt(content, 10, 64) + if err != nil { + return 0, fmt.Errorf("parsing memory.max: %w", err) + } + return v, nil +} diff --git a/vendor/github.com/stretchr/testify/assert/assertions.go b/vendor/github.com/stretchr/testify/assert/assertions.go index 1419e47761a..166f63726cf 100644 --- a/vendor/github.com/stretchr/testify/assert/assertions.go +++ b/vendor/github.com/stretchr/testify/assert/assertions.go @@ -17,7 +17,7 @@ import ( "unicode" "unicode/utf8" - // Wrapper around gopkg.in/yaml.v3 + // Wrapper around go.yaml.in/yaml/v3 "github.com/stretchr/testify/assert/yaml" "github.com/stretchr/testify/internal/difflib" "github.com/stretchr/testify/internal/spew" diff --git a/vendor/github.com/stretchr/testify/assert/yaml/yaml_custom.go b/vendor/github.com/stretchr/testify/assert/yaml/yaml_custom.go index 5a74c4f4d5b..956227ca272 100644 --- a/vendor/github.com/stretchr/testify/assert/yaml/yaml_custom.go +++ b/vendor/github.com/stretchr/testify/assert/yaml/yaml_custom.go @@ -7,7 +7,7 @@ // go test -tags testify_yaml_custom // // This implementation can be used at build time to replace the default implementation -// to avoid linking with [gopkg.in/yaml.v3]. +// to avoid linking with [go.yaml.in/yaml/v3]. // // In your test package: // diff --git a/vendor/github.com/stretchr/testify/assert/yaml/yaml_default.go b/vendor/github.com/stretchr/testify/assert/yaml/yaml_default.go index 0bae80e34a3..dd89ac03aab 100644 --- a/vendor/github.com/stretchr/testify/assert/yaml/yaml_default.go +++ b/vendor/github.com/stretchr/testify/assert/yaml/yaml_default.go @@ -6,7 +6,7 @@ // indirection with an alternative implementation of this package that uses // another implementation of YAML deserialization. This allows to not either not // use YAML deserialization at all, or to use another implementation than -// [gopkg.in/yaml.v3] (for example for license compatibility reasons, see [PR #1120]). +// [go.yaml.in/yaml/v3] (for example for license compatibility reasons, see [PR #1120]). // // Alternative implementations are selected using build tags: // @@ -28,9 +28,9 @@ // [PR #1120]: https://github.com/stretchr/testify/pull/1120 package yaml -import goyaml "gopkg.in/yaml.v3" +import goyaml "go.yaml.in/yaml/v3" -// Unmarshal is just a wrapper of [gopkg.in/yaml.v3.Unmarshal]. +// Unmarshal is just a wrapper of [go.yaml.in/yaml/v3.Unmarshal]. func Unmarshal(in []byte, out interface{}) error { return goyaml.Unmarshal(in, out) } diff --git a/vendor/github.com/stretchr/testify/assert/yaml/yaml_fail.go b/vendor/github.com/stretchr/testify/assert/yaml/yaml_fail.go index 8041803fd2f..a51d2792508 100644 --- a/vendor/github.com/stretchr/testify/assert/yaml/yaml_fail.go +++ b/vendor/github.com/stretchr/testify/assert/yaml/yaml_fail.go @@ -3,7 +3,7 @@ // Package yaml is an implementation of YAML functions that always fail. // // This implementation can be used at build time to replace the default implementation -// to avoid linking with [gopkg.in/yaml.v3]: +// to avoid linking with [go.yaml.in/yaml/v3]: // // go test -tags testify_yaml_fail package yaml diff --git a/vendor/go.uber.org/zap/CHANGELOG.md b/vendor/go.uber.org/zap/CHANGELOG.md index 86e7e6f9820..53848733cb8 100644 --- a/vendor/go.uber.org/zap/CHANGELOG.md +++ b/vendor/go.uber.org/zap/CHANGELOG.md @@ -3,6 +3,10 @@ All notable changes to this project will be documented in this file. This project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html). +## 1.28.0 (27 Apr 2026) +Enhancements: +* [#1534][]: Add `zapcore.CheckPreWriteHook` and `CheckedEntry.Before` method for transforming entries before they are written to any Cores. + ## 1.27.1 (19 Nov 2025) Enhancements: * [#1501][]: prevent `Object` from panicking on nils diff --git a/vendor/go.uber.org/zap/zapcore/entry.go b/vendor/go.uber.org/zap/zapcore/entry.go index 841752f2ed6..e1fc07a1f5e 100644 --- a/vendor/go.uber.org/zap/zapcore/entry.go +++ b/vendor/go.uber.org/zap/zapcore/entry.go @@ -201,6 +201,14 @@ func (a CheckWriteAction) OnWrite(ce *CheckedEntry, _ []Field) { var _ CheckWriteHook = CheckWriteAction(0) +// CheckPreWriteHook is a function that transforms an Entry and its Fields +// before they are written to cores. Register one on a CheckedEntry with the +// Before method. +// +// Pre-write hooks run in the order they were added, before any Core's Write +// method is called. They may modify the Entry and Fields freely. +type CheckPreWriteHook func(Entry, []Field) (Entry, []Field) + // CheckedEntry is an Entry together with a collection of Cores that have // already agreed to log it. // @@ -213,6 +221,7 @@ type CheckedEntry struct { dirty bool // best-effort detection of pool misuse after CheckWriteHook cores []Core + before []CheckPreWriteHook } func (ce *CheckedEntry) reset() { @@ -225,6 +234,10 @@ func (ce *CheckedEntry) reset() { ce.cores[i] = nil } ce.cores = ce.cores[:0] + for i := range ce.before { + ce.before[i] = nil + } + ce.before = ce.before[:0] } // Write writes the entry to the stored Cores, returns any errors, and returns @@ -253,9 +266,14 @@ func (ce *CheckedEntry) Write(fields ...Field) { } ce.dirty = true + ent := ce.Entry + for i := range ce.before { + ent, fields = ce.before[i](ent, fields) + } + var err error for i := range ce.cores { - err = multierr.Append(err, ce.cores[i].Write(ce.Entry, fields)) + err = multierr.Append(err, ce.cores[i].Write(ent, fields)) } if err != nil && ce.ErrorOutput != nil { _, _ = fmt.Fprintf( @@ -295,6 +313,18 @@ func (ce *CheckedEntry) Should(ent Entry, should CheckWriteAction) *CheckedEntry return ce.After(ent, should) } +// Before adds a pre-write hook that transforms the Entry and Fields before +// they are written to any registered Cores. Multiple hooks run in the order +// they were added. It's safe to call this on nil CheckedEntry references. +func (ce *CheckedEntry) Before(ent Entry, hook CheckPreWriteHook) *CheckedEntry { + if ce == nil { + ce = getCheckedEntry() + ce.Entry = ent + } + ce.before = append(ce.before, hook) + return ce +} + // After sets this CheckEntry's CheckWriteHook, which will be called after this // log entry has been written. It's safe to call this on nil CheckedEntry // references. diff --git a/vendor/go.yaml.in/yaml/v3/parserc.go b/vendor/go.yaml.in/yaml/v3/parserc.go index 25fe823637a..f35829db4da 100644 --- a/vendor/go.yaml.in/yaml/v3/parserc.go +++ b/vendor/go.yaml.in/yaml/v3/parserc.go @@ -226,9 +226,9 @@ func yaml_parser_state_machine(parser *yaml_parser_t, event *yaml_event_t) bool } // Parse the production: -// stream ::= STREAM-START implicit_document? explicit_document* STREAM-END // -// ************ +// stream ::= STREAM-START implicit_document? explicit_document* STREAM-END +// ************ func yaml_parser_parse_stream_start(parser *yaml_parser_t, event *yaml_event_t) bool { token := peek_token(parser) if token == nil { @@ -249,13 +249,11 @@ func yaml_parser_parse_stream_start(parser *yaml_parser_t, event *yaml_event_t) } // Parse the productions: -// implicit_document ::= block_node DOCUMENT-END* -// -// * // -// explicit_document ::= DIRECTIVE* DOCUMENT-START block_node? DOCUMENT-END* -// -// ************************* +// implicit_document ::= block_node DOCUMENT-END* +// * +// explicit_document ::= DIRECTIVE* DOCUMENT-START block_node? DOCUMENT-END* +// ************************* func yaml_parser_parse_document_start(parser *yaml_parser_t, event *yaml_event_t, implicit bool) bool { token := peek_token(parser) @@ -359,9 +357,9 @@ func yaml_parser_parse_document_start(parser *yaml_parser_t, event *yaml_event_t } // Parse the productions: -// explicit_document ::= DIRECTIVE* DOCUMENT-START block_node? DOCUMENT-END* // -// *********** +// explicit_document ::= DIRECTIVE* DOCUMENT-START block_node? DOCUMENT-END* +// *********** func yaml_parser_parse_document_content(parser *yaml_parser_t, event *yaml_event_t) bool { token := peek_token(parser) if token == nil { @@ -382,11 +380,10 @@ func yaml_parser_parse_document_content(parser *yaml_parser_t, event *yaml_event } // Parse the productions: -// implicit_document ::= block_node DOCUMENT-END* -// -// ************* // -// explicit_document ::= DIRECTIVE* DOCUMENT-START block_node? DOCUMENT-END* +// implicit_document ::= block_node DOCUMENT-END* +// ************* +// explicit_document ::= DIRECTIVE* DOCUMENT-START block_node? DOCUMENT-END* func yaml_parser_parse_document_end(parser *yaml_parser_t, event *yaml_event_t) bool { token := peek_token(parser) if token == nil { @@ -432,42 +429,32 @@ func yaml_parser_set_event_comments(parser *yaml_parser_t, event *yaml_event_t) } // Parse the productions: -// block_node_or_indentless_sequence ::= -// -// ALIAS -// ***** -// | properties (block_content | indentless_block_sequence)? -// ********** * -// | block_content | indentless_block_sequence -// * -// -// block_node ::= ALIAS -// -// ***** -// | properties block_content? -// ********** * -// | block_content -// * -// -// flow_node ::= ALIAS -// -// ***** -// | properties flow_content? -// ********** * -// | flow_content -// * -// -// properties ::= TAG ANCHOR? | ANCHOR TAG? -// -// ************************* -// -// block_content ::= block_collection | flow_collection | SCALAR -// -// ****** // -// flow_content ::= flow_collection | SCALAR -// -// ****** +// block_node_or_indentless_sequence ::= +// ALIAS +// ***** +// | properties (block_content | indentless_block_sequence)? +// ********** * +// | block_content | indentless_block_sequence +// * +// block_node ::= ALIAS +// ***** +// | properties block_content? +// ********** * +// | block_content +// * +// flow_node ::= ALIAS +// ***** +// | properties flow_content? +// ********** * +// | flow_content +// * +// properties ::= TAG ANCHOR? | ANCHOR TAG? +// ************************* +// block_content ::= block_collection | flow_collection | SCALAR +// ****** +// flow_content ::= flow_collection | SCALAR +// ****** func yaml_parser_parse_node(parser *yaml_parser_t, event *yaml_event_t, block, indentless_sequence bool) bool { //defer trace("yaml_parser_parse_node", "block:", block, "indentless_sequence:", indentless_sequence)() @@ -697,9 +684,9 @@ func yaml_parser_parse_node(parser *yaml_parser_t, event *yaml_event_t, block, i } // Parse the productions: -// block_sequence ::= BLOCK-SEQUENCE-START (BLOCK-ENTRY block_node?)* BLOCK-END // -// ******************** *********** * ********* +// block_sequence ::= BLOCK-SEQUENCE-START (BLOCK-ENTRY block_node?)* BLOCK-END +// ******************** *********** * ********* func yaml_parser_parse_block_sequence_entry(parser *yaml_parser_t, event *yaml_event_t, first bool) bool { if first { token := peek_token(parser) @@ -755,9 +742,9 @@ func yaml_parser_parse_block_sequence_entry(parser *yaml_parser_t, event *yaml_e } // Parse the productions: -// indentless_sequence ::= (BLOCK-ENTRY block_node?)+ // -// *********** * +// indentless_sequence ::= (BLOCK-ENTRY block_node?)+ +// *********** * func yaml_parser_parse_indentless_sequence_entry(parser *yaml_parser_t, event *yaml_event_t) bool { token := peek_token(parser) if token == nil { @@ -821,15 +808,15 @@ func yaml_parser_split_stem_comment(parser *yaml_parser_t, stem_len int) { } // Parse the productions: -// block_mapping ::= BLOCK-MAPPING_START // -// ******************* -// ((KEY block_node_or_indentless_sequence?)? -// *** * -// (VALUE block_node_or_indentless_sequence?)?)* +// block_mapping ::= BLOCK-MAPPING_START +// ******************* +// ((KEY block_node_or_indentless_sequence?)? +// *** * +// (VALUE block_node_or_indentless_sequence?)?)* // -// BLOCK-END -// ********* +// BLOCK-END +// ********* func yaml_parser_parse_block_mapping_key(parser *yaml_parser_t, event *yaml_event_t, first bool) bool { if first { token := peek_token(parser) @@ -896,13 +883,14 @@ func yaml_parser_parse_block_mapping_key(parser *yaml_parser_t, event *yaml_even } // Parse the productions: -// block_mapping ::= BLOCK-MAPPING_START // -// ((KEY block_node_or_indentless_sequence?)? +// block_mapping ::= BLOCK-MAPPING_START +// +// ((KEY block_node_or_indentless_sequence?)? // -// (VALUE block_node_or_indentless_sequence?)?)* -// ***** * -// BLOCK-END +// (VALUE block_node_or_indentless_sequence?)?)* +// ***** * +// BLOCK-END func yaml_parser_parse_block_mapping_value(parser *yaml_parser_t, event *yaml_event_t) bool { token := peek_token(parser) if token == nil { @@ -929,19 +917,17 @@ func yaml_parser_parse_block_mapping_value(parser *yaml_parser_t, event *yaml_ev } // Parse the productions: -// flow_sequence ::= FLOW-SEQUENCE-START -// -// ******************* -// (flow_sequence_entry FLOW-ENTRY)* -// * ********** -// flow_sequence_entry? -// * -// FLOW-SEQUENCE-END -// ***************** // -// flow_sequence_entry ::= flow_node | KEY flow_node? (VALUE flow_node?)? -// -// * +// flow_sequence ::= FLOW-SEQUENCE-START +// ******************* +// (flow_sequence_entry FLOW-ENTRY)* +// * ********** +// flow_sequence_entry? +// * +// FLOW-SEQUENCE-END +// ***************** +// flow_sequence_entry ::= flow_node | KEY flow_node? (VALUE flow_node?)? +// * func yaml_parser_parse_flow_sequence_entry(parser *yaml_parser_t, event *yaml_event_t, first bool) bool { if first { token := peek_token(parser) @@ -1005,9 +991,9 @@ func yaml_parser_parse_flow_sequence_entry(parser *yaml_parser_t, event *yaml_ev } // Parse the productions: -// flow_sequence_entry ::= flow_node | KEY flow_node? (VALUE flow_node?)? // -// *** * +// flow_sequence_entry ::= flow_node | KEY flow_node? (VALUE flow_node?)? +// *** * func yaml_parser_parse_flow_sequence_entry_mapping_key(parser *yaml_parser_t, event *yaml_event_t) bool { token := peek_token(parser) if token == nil { @@ -1026,9 +1012,9 @@ func yaml_parser_parse_flow_sequence_entry_mapping_key(parser *yaml_parser_t, ev } // Parse the productions: -// flow_sequence_entry ::= flow_node | KEY flow_node? (VALUE flow_node?)? // -// ***** * +// flow_sequence_entry ::= flow_node | KEY flow_node? (VALUE flow_node?)? +// ***** * func yaml_parser_parse_flow_sequence_entry_mapping_value(parser *yaml_parser_t, event *yaml_event_t) bool { token := peek_token(parser) if token == nil { @@ -1050,9 +1036,9 @@ func yaml_parser_parse_flow_sequence_entry_mapping_value(parser *yaml_parser_t, } // Parse the productions: -// flow_sequence_entry ::= flow_node | KEY flow_node? (VALUE flow_node?)? // -// * +// flow_sequence_entry ::= flow_node | KEY flow_node? (VALUE flow_node?)? +// * func yaml_parser_parse_flow_sequence_entry_mapping_end(parser *yaml_parser_t, event *yaml_event_t) bool { token := peek_token(parser) if token == nil { @@ -1068,18 +1054,17 @@ func yaml_parser_parse_flow_sequence_entry_mapping_end(parser *yaml_parser_t, ev } // Parse the productions: -// flow_mapping ::= FLOW-MAPPING-START -// -// ****************** -// (flow_mapping_entry FLOW-ENTRY)* -// * ********** -// flow_mapping_entry? -// ****************** -// FLOW-MAPPING-END -// **************** // -// flow_mapping_entry ::= flow_node | KEY flow_node? (VALUE flow_node?)? -// - *** * +// flow_mapping ::= FLOW-MAPPING-START +// ****************** +// (flow_mapping_entry FLOW-ENTRY)* +// * ********** +// flow_mapping_entry? +// ****************** +// FLOW-MAPPING-END +// **************** +// flow_mapping_entry ::= flow_node | KEY flow_node? (VALUE flow_node?)? +// * *** * func yaml_parser_parse_flow_mapping_key(parser *yaml_parser_t, event *yaml_event_t, first bool) bool { if first { token := peek_token(parser) @@ -1144,8 +1129,9 @@ func yaml_parser_parse_flow_mapping_key(parser *yaml_parser_t, event *yaml_event } // Parse the productions: -// flow_mapping_entry ::= flow_node | KEY flow_node? (VALUE flow_node?)? -// - ***** * +// +// flow_mapping_entry ::= flow_node | KEY flow_node? (VALUE flow_node?)? +// * ***** * func yaml_parser_parse_flow_mapping_value(parser *yaml_parser_t, event *yaml_event_t, empty bool) bool { token := peek_token(parser) if token == nil { diff --git a/vendor/go.yaml.in/yaml/v3/yamlh.go b/vendor/go.yaml.in/yaml/v3/yamlh.go index f59aa40f640..07c442361ce 100644 --- a/vendor/go.yaml.in/yaml/v3/yamlh.go +++ b/vendor/go.yaml.in/yaml/v3/yamlh.go @@ -433,21 +433,19 @@ type yaml_document_t struct { // The prototype of a read handler. // -// The read handler is called when the parser needs to read more bytes from the -// source. The handler should write not more than size bytes to the buffer. -// The number of written bytes should be set to the size_read variable. +// The read handler is called when the parser needs to read more bytes from the +// source. The handler should write not more than size bytes to the buffer. +// The number of written bytes should be set to the size_read variable. // -// [in,out] data A pointer to an application data specified by +// [in,out] data A pointer to an application data specified by +// yaml_parser_set_input(). +// [out] buffer The buffer to write the data from the source. +// [in] size The size of the buffer. +// [out] size_read The actual number of bytes read from the source. // -// yaml_parser_set_input(). -// -// [out] buffer The buffer to write the data from the source. -// [in] size The size of the buffer. -// [out] size_read The actual number of bytes read from the source. -// -// On success, the handler should return 1. If the handler failed, -// the returned value should be 0. On EOF, the handler should set the -// size_read to 0 and return 1. +// On success, the handler should return 1. If the handler failed, +// the returned value should be 0. On EOF, the handler should set the +// size_read to 0 and return 1. type yaml_read_handler_t func(parser *yaml_parser_t, buffer []byte) (n int, err error) // This structure holds information about a potential simple key. @@ -655,19 +653,17 @@ type yaml_comment_t struct { // The prototype of a write handler. // -// The write handler is called when the emitter needs to flush the accumulated -// characters to the output. The handler should write @a size bytes of the -// @a buffer to the output. -// -// @param[in,out] data A pointer to an application data specified by -// -// yaml_emitter_set_output(). +// The write handler is called when the emitter needs to flush the accumulated +// characters to the output. The handler should write @a size bytes of the +// @a buffer to the output. // -// @param[in] buffer The buffer with bytes to be written. -// @param[in] size The size of the buffer. +// @param[in,out] data A pointer to an application data specified by +// yaml_emitter_set_output(). +// @param[in] buffer The buffer with bytes to be written. +// @param[in] size The size of the buffer. // -// @returns On success, the handler should return @c 1. If the handler failed, -// the returned value should be @c 0. +// @returns On success, the handler should return @c 1. If the handler failed, +// the returned value should be @c 0. type yaml_write_handler_t func(emitter *yaml_emitter_t, buffer []byte) error type yaml_emitter_state_t int diff --git a/vendor/golang.org/x/sync/singleflight/singleflight.go b/vendor/golang.org/x/sync/singleflight/singleflight.go new file mode 100644 index 00000000000..32e40bdc871 --- /dev/null +++ b/vendor/golang.org/x/sync/singleflight/singleflight.go @@ -0,0 +1,214 @@ +// Copyright 2013 The Go Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +// Package singleflight provides a duplicate function call suppression +// mechanism. +package singleflight // import "golang.org/x/sync/singleflight" + +import ( + "bytes" + "errors" + "fmt" + "runtime" + "runtime/debug" + "sync" +) + +// errGoexit indicates runtime.Goexit was called in +// the user-given function. +var errGoexit = errors.New("runtime.Goexit was called") + +// A panicError is an arbitrary value recovered from a panic +// with the stack trace during the execution of the given function. +type panicError struct { + value any + stack []byte +} + +// Error implements error interface. +func (p *panicError) Error() string { + return fmt.Sprintf("%v\n\n%s", p.value, p.stack) +} + +func (p *panicError) Unwrap() error { + err, ok := p.value.(error) + if !ok { + return nil + } + + return err +} + +func newPanicError(v any) error { + stack := debug.Stack() + + // The first line of the stack trace is of the form "goroutine N [status]:" + // but by the time the panic reaches Do the goroutine may no longer exist + // and its status will have changed. Trim out the misleading line. + if line := bytes.IndexByte(stack[:], '\n'); line >= 0 { + stack = stack[line+1:] + } + return &panicError{value: v, stack: stack} +} + +// call is an in-flight or completed singleflight.Do call +type call struct { + wg sync.WaitGroup + + // These fields are written once before the WaitGroup is done + // and are only read after the WaitGroup is done. + val any + err error + + // These fields are read and written with the singleflight + // mutex held before the WaitGroup is done, and are read but + // not written after the WaitGroup is done. + dups int + chans []chan<- Result +} + +// Group represents a class of work and forms a namespace in +// which units of work can be executed with duplicate suppression. +type Group struct { + mu sync.Mutex // protects m + m map[string]*call // lazily initialized +} + +// Result holds the results of Do, so they can be passed +// on a channel. +type Result struct { + Val any + Err error + Shared bool +} + +// Do executes and returns the results of the given function, making +// sure that only one execution is in-flight for a given key at a +// time. If a duplicate comes in, the duplicate caller waits for the +// original to complete and receives the same results. +// The return value shared indicates whether v was given to multiple callers. +func (g *Group) Do(key string, fn func() (any, error)) (v any, err error, shared bool) { + g.mu.Lock() + if g.m == nil { + g.m = make(map[string]*call) + } + if c, ok := g.m[key]; ok { + c.dups++ + g.mu.Unlock() + c.wg.Wait() + + if e, ok := c.err.(*panicError); ok { + panic(e) + } else if c.err == errGoexit { + runtime.Goexit() + } + return c.val, c.err, true + } + c := new(call) + c.wg.Add(1) + g.m[key] = c + g.mu.Unlock() + + g.doCall(c, key, fn) + return c.val, c.err, c.dups > 0 +} + +// DoChan is like Do but returns a channel that will receive the +// results when they are ready. +// +// The returned channel will not be closed. +func (g *Group) DoChan(key string, fn func() (any, error)) <-chan Result { + ch := make(chan Result, 1) + g.mu.Lock() + if g.m == nil { + g.m = make(map[string]*call) + } + if c, ok := g.m[key]; ok { + c.dups++ + c.chans = append(c.chans, ch) + g.mu.Unlock() + return ch + } + c := &call{chans: []chan<- Result{ch}} + c.wg.Add(1) + g.m[key] = c + g.mu.Unlock() + + go g.doCall(c, key, fn) + + return ch +} + +// doCall handles the single call for a key. +func (g *Group) doCall(c *call, key string, fn func() (any, error)) { + normalReturn := false + recovered := false + + // use double-defer to distinguish panic from runtime.Goexit, + // more details see https://golang.org/cl/134395 + defer func() { + // the given function invoked runtime.Goexit + if !normalReturn && !recovered { + c.err = errGoexit + } + + g.mu.Lock() + defer g.mu.Unlock() + c.wg.Done() + if g.m[key] == c { + delete(g.m, key) + } + + if e, ok := c.err.(*panicError); ok { + // In order to prevent the waiting channels from being blocked forever, + // needs to ensure that this panic cannot be recovered. + if len(c.chans) > 0 { + go panic(e) + select {} // Keep this goroutine around so that it will appear in the crash dump. + } else { + panic(e) + } + } else if c.err == errGoexit { + // Already in the process of goexit, no need to call again + } else { + // Normal return + for _, ch := range c.chans { + ch <- Result{c.val, c.err, c.dups > 0} + } + } + }() + + func() { + defer func() { + if !normalReturn { + // Ideally, we would wait to take a stack trace until we've determined + // whether this is a panic or a runtime.Goexit. + // + // Unfortunately, the only way we can distinguish the two is to see + // whether the recover stopped the goroutine from terminating, and by + // the time we know that, the part of the stack trace relevant to the + // panic has been discarded. + if r := recover(); r != nil { + c.err = newPanicError(r) + } + } + }() + + c.val, c.err = fn() + normalReturn = true + }() + + if !normalReturn { + recovered = true + } +} + +// Forget tells the singleflight to forget about a key. Future calls +// to Do for this key will call the function rather than waiting for +// an earlier call to complete. +func (g *Group) Forget(key string) { + g.mu.Lock() + delete(g.m, key) + g.mu.Unlock() +} diff --git a/vendor/modules.txt b/vendor/modules.txt index 7afeb92f9b4..fa428cd4050 100644 --- a/vendor/modules.txt +++ b/vendor/modules.txt @@ -4,7 +4,7 @@ cyphar.com/go-pathrs cyphar.com/go-pathrs/internal/fdutils cyphar.com/go-pathrs/internal/libpathrs cyphar.com/go-pathrs/procfs -# github.com/Azure/azure-sdk-for-go/sdk/azcore v1.22.0 +# github.com/Azure/azure-sdk-for-go/sdk/azcore v1.23.1 ## explicit; go 1.25.0 github.com/Azure/azure-sdk-for-go/sdk/azcore github.com/Azure/azure-sdk-for-go/sdk/azcore/arm/internal/resource @@ -26,7 +26,7 @@ github.com/Azure/azure-sdk-for-go/sdk/azcore/runtime github.com/Azure/azure-sdk-for-go/sdk/azcore/streaming github.com/Azure/azure-sdk-for-go/sdk/azcore/to github.com/Azure/azure-sdk-for-go/sdk/azcore/tracing -# github.com/Azure/azure-sdk-for-go/sdk/azidentity v1.14.0 +# github.com/Azure/azure-sdk-for-go/sdk/azidentity v1.14.1 ## explicit; go 1.25.0 github.com/Azure/azure-sdk-for-go/sdk/azidentity github.com/Azure/azure-sdk-for-go/sdk/azidentity/internal @@ -46,7 +46,7 @@ github.com/Azure/azure-sdk-for-go/sdk/security/keyvault/azsecrets # github.com/Azure/azure-sdk-for-go/sdk/security/keyvault/internal v1.2.0 ## explicit; go 1.23.0 github.com/Azure/azure-sdk-for-go/sdk/security/keyvault/internal -# github.com/AzureAD/microsoft-authentication-library-for-go v1.7.2 +# github.com/AzureAD/microsoft-authentication-library-for-go v1.8.0 ## explicit; go 1.18 github.com/AzureAD/microsoft-authentication-library-for-go/apps/cache github.com/AzureAD/microsoft-authentication-library-for-go/apps/confidential @@ -128,7 +128,7 @@ github.com/aws/aws-sdk-go/service/sso/ssoiface github.com/aws/aws-sdk-go/service/ssooidc github.com/aws/aws-sdk-go/service/sts github.com/aws/aws-sdk-go/service/sts/stsiface -# github.com/aws/aws-sdk-go-v2 v1.43.6 +# github.com/aws/aws-sdk-go-v2 v1.47.0 ## explicit; go 1.24 github.com/aws/aws-sdk-go-v2/aws github.com/aws/aws-sdk-go-v2/aws/defaults @@ -150,29 +150,30 @@ github.com/aws/aws-sdk-go-v2/internal/sdk github.com/aws/aws-sdk-go-v2/internal/strings github.com/aws/aws-sdk-go-v2/internal/sync/singleflight github.com/aws/aws-sdk-go-v2/internal/timeconv -# github.com/aws/aws-sdk-go-v2/internal/configsources v1.4.37 +github.com/aws/aws-sdk-go-v2/internal/timeouts +# github.com/aws/aws-sdk-go-v2/internal/configsources v1.5.3 ## explicit; go 1.24 github.com/aws/aws-sdk-go-v2/internal/configsources -# github.com/aws/aws-sdk-go-v2/internal/endpoints/v2 v2.7.37 +# github.com/aws/aws-sdk-go-v2/internal/endpoints/v2 v2.8.3 ## explicit; go 1.24 github.com/aws/aws-sdk-go-v2/internal/endpoints/v2 -# github.com/aws/aws-sdk-go-v2/internal/v4a v1.4.38 +# github.com/aws/aws-sdk-go-v2/internal/v4a v1.5.3 ## explicit; go 1.24 github.com/aws/aws-sdk-go-v2/internal/v4a github.com/aws/aws-sdk-go-v2/internal/v4a/internal/crypto github.com/aws/aws-sdk-go-v2/internal/v4a/internal/v4 -# github.com/aws/aws-sdk-go-v2/service/internal/accept-encoding v1.13.17 +# github.com/aws/aws-sdk-go-v2/service/internal/accept-encoding v1.13.19 ## explicit; go 1.24 github.com/aws/aws-sdk-go-v2/service/internal/accept-encoding -# github.com/aws/aws-sdk-go-v2/service/internal/presigned-url v1.13.37 +# github.com/aws/aws-sdk-go-v2/service/internal/presigned-url v1.14.3 ## explicit; go 1.24 github.com/aws/aws-sdk-go-v2/service/internal/presigned-url -# github.com/aws/aws-sdk-go-v2/service/sts v1.45.6 +# github.com/aws/aws-sdk-go-v2/service/sts v1.50.0 ## explicit; go 1.24 github.com/aws/aws-sdk-go-v2/service/sts github.com/aws/aws-sdk-go-v2/service/sts/internal/endpoints github.com/aws/aws-sdk-go-v2/service/sts/types -# github.com/aws/smithy-go v1.27.8 +# github.com/aws/smithy-go v1.28.1 ## explicit; go 1.24 github.com/aws/smithy-go github.com/aws/smithy-go/auth @@ -240,11 +241,11 @@ github.com/ceph/go-ceph/rbd/admin # github.com/cespare/xxhash/v2 v2.3.0 ## explicit; go 1.11 github.com/cespare/xxhash/v2 -# github.com/container-storage-interface/spec v1.12.0 -## explicit; go 1.23.0 -github.com/container-storage-interface/spec/lib/go/csi -# github.com/csi-addons/kubernetes-csi-addons v0.14.0 +# github.com/container-storage-interface/spec v1.13.0 ## explicit; go 1.25.0 +github.com/container-storage-interface/spec/lib/go/csi +# github.com/csi-addons/kubernetes-csi-addons v0.15.0 +## explicit; go 1.26.3 github.com/csi-addons/kubernetes-csi-addons/api/replication.storage/v1alpha1 # github.com/csi-addons/spec v0.2.1-0.20260515055340-d4a373713b9a ## explicit @@ -303,7 +304,7 @@ github.com/go-jose/go-jose/v4 github.com/go-jose/go-jose/v4/cipher github.com/go-jose/go-jose/v4/json github.com/go-jose/go-jose/v4/jwt -# github.com/go-logr/logr v1.4.3 +# github.com/go-logr/logr v1.4.4 ## explicit; go 1.18 github.com/go-logr/logr github.com/go-logr/logr/funcr @@ -330,9 +331,10 @@ github.com/golang-jwt/jwt/v5 ## explicit; go 1.17 github.com/golang/protobuf/proto github.com/golang/protobuf/ptypes/timestamp -# github.com/google/fscrypt v0.3.6 -## explicit; go 1.23.0 +# github.com/google/fscrypt v0.3.7 +## explicit; go 1.25.0 github.com/google/fscrypt/actions +github.com/google/fscrypt/cgroup github.com/google/fscrypt/crypto github.com/google/fscrypt/filesystem github.com/google/fscrypt/keyring @@ -501,7 +503,7 @@ github.com/sirupsen/logrus # github.com/spf13/pflag v1.0.9 ## explicit; go 1.12 github.com/spf13/pflag -# github.com/stretchr/testify v1.12.0 +# github.com/stretchr/testify v1.12.1 ## explicit; go 1.17 github.com/stretchr/testify/assert github.com/stretchr/testify/assert/yaml @@ -554,7 +556,7 @@ go.uber.org/automaxprocs/maxprocs # go.uber.org/multierr v1.11.0 ## explicit; go 1.19 go.uber.org/multierr -# go.uber.org/zap v1.27.1 +# go.uber.org/zap v1.28.0 ## explicit; go 1.19 go.uber.org/zap go.uber.org/zap/buffer @@ -568,7 +570,7 @@ go.uber.org/zap/zapcore # go.yaml.in/yaml/v2 v2.4.4 ## explicit; go 1.15 go.yaml.in/yaml/v2 -# go.yaml.in/yaml/v3 v3.0.4 +# go.yaml.in/yaml/v3 v3.0.5 ## explicit; go 1.16 go.yaml.in/yaml/v3 # golang.org/x/crypto v0.55.0 @@ -597,6 +599,7 @@ golang.org/x/oauth2/internal # golang.org/x/sync v0.22.0 ## explicit; go 1.25.0 golang.org/x/sync/errgroup +golang.org/x/sync/singleflight # golang.org/x/sys v0.47.0 ## explicit; go 1.25.0 golang.org/x/sys/cpu @@ -1263,7 +1266,6 @@ sigs.k8s.io/controller-runtime/pkg/metrics/server sigs.k8s.io/controller-runtime/pkg/predicate sigs.k8s.io/controller-runtime/pkg/reconcile sigs.k8s.io/controller-runtime/pkg/recorder -sigs.k8s.io/controller-runtime/pkg/scheme sigs.k8s.io/controller-runtime/pkg/source sigs.k8s.io/controller-runtime/pkg/webhook sigs.k8s.io/controller-runtime/pkg/webhook/admission diff --git a/vendor/sigs.k8s.io/controller-runtime/pkg/scheme/scheme.go b/vendor/sigs.k8s.io/controller-runtime/pkg/scheme/scheme.go deleted file mode 100644 index 30f6d89a0a2..00000000000 --- a/vendor/sigs.k8s.io/controller-runtime/pkg/scheme/scheme.go +++ /dev/null @@ -1,122 +0,0 @@ -/* -Copyright 2018 The Kubernetes Authors. - -Licensed under the Apache License, Version 2.0 (the "License"); -you may not use this file except in compliance with the License. -You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - -Unless required by applicable law or agreed to in writing, software -distributed under the License 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 scheme contains utilities for gradually building Schemes, -// which contain information associating Go types with Kubernetes -// groups, versions, and kinds. -// -// Each API group should define a utility function -// called AddToScheme for adding its types to a Scheme: -// -// // in package myapigroupv1... -// var ( -// SchemeGroupVersion = schema.GroupVersion{Group: "my.api.group", Version: "v1"} -// SchemeBuilder = &scheme.Builder{GroupVersion: SchemeGroupVersion} -// AddToScheme = SchemeBuilder.AddToScheme -// ) -// -// func init() { -// SchemeBuilder.Register(&MyType{}, &MyTypeList) -// } -// var ( -// scheme *runtime.Scheme = runtime.NewScheme() -// ) -// -// This also true of the built-in Kubernetes types. Then, in the entrypoint for -// your manager, assemble the scheme containing exactly the types you need, -// panicing if scheme registration failed. For instance, if our controller needs -// types from the core/v1 API group (e.g. Pod), plus types from my.api.group/v1: -// -// func init() { -// utilruntime.Must(myapigroupv1.AddToScheme(scheme)) -// utilruntime.Must(kubernetesscheme.AddToScheme(scheme)) -// } -// -// func main() { -// mgr := controllers.NewManager(context.Background(), controllers.GetConfigOrDie(), manager.Options{ -// Scheme: scheme, -// }) -// // ... -// } -package scheme - -import ( - metav1 "k8s.io/apimachinery/pkg/apis/meta/v1" - "k8s.io/apimachinery/pkg/runtime" - "k8s.io/apimachinery/pkg/runtime/schema" -) - -// Builder builds a new Scheme for mapping go types to Kubernetes GroupVersionKinds. -// -// Deprecated: This helper is only useful in api packages, but api packages should be -// easy to import and hence have minimal dependencies. Typically, these dependencies -// include only the standard library, k8s.io/apimachinery and other api packages. -// -// Use the apimachinery builder instead: -// -// import ( -// metav1 "k8s.io/apimachinery/pkg/apis/meta/v1" -// "k8s.io/apimachinery/pkg/runtime" -// "k8s.io/apimachinery/pkg/runtime/schema" -// ) -// -// const GroupName = "" -// -// var ( -// SchemeGroupVersion = schema.GroupVersion{Group: GroupName, Version: "v1"} -// SchemeBuilder = runtime.NewSchemeBuilder(addKnownTypes) -// AddToScheme = SchemeBuilder.AddToScheme -// ) -// -// func addKnownTypes(scheme *runtime.Scheme) error { -// scheme.AddKnownTypes(SchemeGroupVersion, -// &Pod{}, -// ) -// -// metav1.AddToGroupVersion(scheme, SchemeGroupVersion) -// return nil -// } -type Builder struct { - GroupVersion schema.GroupVersion - runtime.SchemeBuilder -} - -// Register adds one or more objects to the SchemeBuilder so they can be added to a Scheme. Register mutates bld. -func (bld *Builder) Register(object ...runtime.Object) *Builder { - bld.SchemeBuilder.Register(func(scheme *runtime.Scheme) error { - scheme.AddKnownTypes(bld.GroupVersion, object...) - metav1.AddToGroupVersion(scheme, bld.GroupVersion) - return nil - }) - return bld -} - -// RegisterAll registers all types from the Builder argument. RegisterAll mutates bld. -func (bld *Builder) RegisterAll(b *Builder) *Builder { - bld.SchemeBuilder = append(bld.SchemeBuilder, b.SchemeBuilder...) - return bld -} - -// AddToScheme adds all registered types to s. -func (bld *Builder) AddToScheme(s *runtime.Scheme) error { - return bld.SchemeBuilder.AddToScheme(s) -} - -// Build returns a new Scheme containing the registered types. -func (bld *Builder) Build() (*runtime.Scheme, error) { - s := runtime.NewScheme() - return s, bld.AddToScheme(s) -}