Update vendor csi spec and csi-test to 1.0.0-rc2
This commit is contained in:
6
vendor/github.com/kubernetes-csi/csi-test/.gitignore
generated
vendored
6
vendor/github.com/kubernetes-csi/csi-test/.gitignore
generated
vendored
@@ -11,3 +11,9 @@
|
||||
*.out
|
||||
bin/mock
|
||||
cmd/csi-sanity/csi-sanity
|
||||
|
||||
# JetBrains GoLand
|
||||
.idea
|
||||
|
||||
# Vim
|
||||
*.swp
|
||||
|
4
vendor/github.com/kubernetes-csi/csi-test/.travis.yml
generated
vendored
4
vendor/github.com/kubernetes-csi/csi-test/.travis.yml
generated
vendored
@@ -1,4 +1,7 @@
|
||||
language: go
|
||||
sudo: required
|
||||
services:
|
||||
- docker
|
||||
matrix:
|
||||
include:
|
||||
- go: 1.10.3
|
||||
@@ -6,6 +9,7 @@ script:
|
||||
- make test
|
||||
after_success:
|
||||
- if [ "${TRAVIS_BRANCH}" == "master" ] && [ "${TRAVIS_PULL_REQUEST}" == "false" ]; then
|
||||
make container
|
||||
docker login -u "${DOCKER_USERNAME}" -p "${DOCKER_PASSWORD}" quay.io;
|
||||
make push;
|
||||
fi
|
||||
|
22
vendor/github.com/kubernetes-csi/csi-test/CONTRIBUTING.md
generated
vendored
Normal file
22
vendor/github.com/kubernetes-csi/csi-test/CONTRIBUTING.md
generated
vendored
Normal file
@@ -0,0 +1,22 @@
|
||||
# Contributing Guidelines
|
||||
|
||||
Welcome to Kubernetes. We are excited about the prospect of you joining our [community](https://github.com/kubernetes/community)! The Kubernetes community abides by the CNCF [code of conduct](https://github.com/cncf/foundation/blob/master/code-of-conduct.md). Here is an excerpt:
|
||||
|
||||
_As contributors and maintainers of this project, and in the interest of fostering an open and welcoming community, we pledge to respect all people who contribute through reporting issues, posting feature requests, updating documentation, submitting pull requests or patches, and other activities._
|
||||
|
||||
## Getting Started
|
||||
|
||||
We have full documentation on how to get started contributing here:
|
||||
|
||||
- [Contributor License Agreement](https://git.k8s.io/community/CLA.md) Kubernetes projects require that you sign a Contributor License Agreement (CLA) before we can accept your pull requests
|
||||
- [Kubernetes Contributor Guide](http://git.k8s.io/community/contributors/guide) - Main contributor documentation, or you can just jump directly to the [contributing section](http://git.k8s.io/community/contributors/guide#contributing)
|
||||
- [Contributor Cheat Sheet](https://git.k8s.io/community/contributors/guide/contributor-cheatsheet.md) - Common resources for existing developers
|
||||
|
||||
## Mentorship
|
||||
|
||||
- [Mentoring Initiatives](https://git.k8s.io/community/mentoring) - We have a diverse set of mentorship programs available that are always looking for volunteers!
|
||||
|
||||
## Contact Information
|
||||
|
||||
- [Slack channel](https://kubernetes.slack.com/messages/sig-storage)
|
||||
- [Mailing list](https://groups.google.com/forum/#!forum/kubernetes-sig-storage)
|
68
vendor/github.com/kubernetes-csi/csi-test/Gopkg.lock
generated
vendored
68
vendor/github.com/kubernetes-csi/csi-test/Gopkg.lock
generated
vendored
@@ -2,18 +2,23 @@
|
||||
|
||||
|
||||
[[projects]]
|
||||
digest = "1:26ee2356254e58b9872ba736f66aff1c54a26f08c7d16afbf49695131a87d454"
|
||||
name = "github.com/container-storage-interface/spec"
|
||||
packages = ["lib/go/csi/v0"]
|
||||
revision = "2178fdeea87f1150a17a63252eee28d4d8141f72"
|
||||
version = "v0.3.0"
|
||||
packages = ["lib/go/csi"]
|
||||
pruneopts = "UT"
|
||||
revision = "8efcc85c45550571fba8134182013ed7dc34038a"
|
||||
version = "v1.0.0-rc2"
|
||||
|
||||
[[projects]]
|
||||
digest = "1:bc38c7c481812e178d85160472e231c5e1c9a7f5845d67e23ee4e706933c10d8"
|
||||
name = "github.com/golang/mock"
|
||||
packages = ["gomock"]
|
||||
pruneopts = "UT"
|
||||
revision = "c34cdb4725f4c3844d095133c6e40e448b86589b"
|
||||
version = "v1.1.1"
|
||||
|
||||
[[projects]]
|
||||
digest = "1:588beb9f80d2b0afddf05663b32d01c867da419458b560471d81cca0286e76b8"
|
||||
name = "github.com/golang/protobuf"
|
||||
packages = [
|
||||
"proto",
|
||||
@@ -22,12 +27,14 @@
|
||||
"ptypes/any",
|
||||
"ptypes/duration",
|
||||
"ptypes/timestamp",
|
||||
"ptypes/wrappers"
|
||||
"ptypes/wrappers",
|
||||
]
|
||||
revision = "b4deda0973fb4c70b50d226b1af49f3da59f5265"
|
||||
version = "v1.1.0"
|
||||
pruneopts = "UT"
|
||||
revision = "aa810b61a9c79d51363740d207bb46cf8e620ed5"
|
||||
version = "v1.2.0"
|
||||
|
||||
[[projects]]
|
||||
digest = "1:72f35d3e412bc67b121e15ea4c88a3b3da8bcbc2264339e7ffa4a1865799840c"
|
||||
name = "github.com/onsi/ginkgo"
|
||||
packages = [
|
||||
".",
|
||||
@@ -47,12 +54,14 @@
|
||||
"reporters/stenographer",
|
||||
"reporters/stenographer/support/go-colorable",
|
||||
"reporters/stenographer/support/go-isatty",
|
||||
"types"
|
||||
"types",
|
||||
]
|
||||
pruneopts = "UT"
|
||||
revision = "fa5fabab2a1bfbd924faf4c067d07ae414e2aedf"
|
||||
version = "v1.5.0"
|
||||
|
||||
[[projects]]
|
||||
digest = "1:d0c2c4e2d0006cd28c220a549cda1de8e67abc65ed4c572421492bbf0492ceaf"
|
||||
name = "github.com/onsi/gomega"
|
||||
packages = [
|
||||
".",
|
||||
@@ -66,25 +75,31 @@
|
||||
"matchers/support/goraph/edge",
|
||||
"matchers/support/goraph/node",
|
||||
"matchers/support/goraph/util",
|
||||
"types"
|
||||
"types",
|
||||
]
|
||||
pruneopts = "UT"
|
||||
revision = "62bff4df71bdbc266561a0caee19f0594b17c240"
|
||||
version = "v1.4.0"
|
||||
|
||||
[[projects]]
|
||||
digest = "1:9e9193aa51197513b3abcb108970d831fbcf40ef96aa845c4f03276e1fa316d2"
|
||||
name = "github.com/sirupsen/logrus"
|
||||
packages = ["."]
|
||||
pruneopts = "UT"
|
||||
revision = "c155da19408a8799da419ed3eeb0cb5db0ad5dbc"
|
||||
version = "v1.0.5"
|
||||
|
||||
[[projects]]
|
||||
branch = "master"
|
||||
digest = "1:3f3a05ae0b95893d90b9b3b5afdb79a9b3d96e4e36e099d841ae602e4aca0da8"
|
||||
name = "golang.org/x/crypto"
|
||||
packages = ["ssh/terminal"]
|
||||
pruneopts = "UT"
|
||||
revision = "8ac0e0d97ce45cd83d1d7243c060cb8461dda5e9"
|
||||
|
||||
[[projects]]
|
||||
branch = "master"
|
||||
digest = "1:0bb2e6ef036484991ed446a6c698698b8901766981d4d22cc8e53fedb09709ac"
|
||||
name = "golang.org/x/net"
|
||||
packages = [
|
||||
"context",
|
||||
@@ -96,20 +111,24 @@
|
||||
"http2/hpack",
|
||||
"idna",
|
||||
"internal/timeseries",
|
||||
"trace"
|
||||
"trace",
|
||||
]
|
||||
pruneopts = "UT"
|
||||
revision = "1e491301e022f8f977054da4c2d852decd59571f"
|
||||
|
||||
[[projects]]
|
||||
branch = "master"
|
||||
digest = "1:8fbfc6ea1a8a078697633be97f07dd83a83d32a96959d42195464c13c25be374"
|
||||
name = "golang.org/x/sys"
|
||||
packages = [
|
||||
"unix",
|
||||
"windows"
|
||||
"windows",
|
||||
]
|
||||
pruneopts = "UT"
|
||||
revision = "9527bec2660bd847c050fda93a0f0c6dee0800bb"
|
||||
|
||||
[[projects]]
|
||||
digest = "1:436b24586f8fee329e0dd65fd67c817681420cda1d7f934345c13fe78c212a73"
|
||||
name = "golang.org/x/text"
|
||||
packages = [
|
||||
"collate",
|
||||
@@ -137,18 +156,22 @@
|
||||
"unicode/bidi",
|
||||
"unicode/cldr",
|
||||
"unicode/norm",
|
||||
"unicode/rangetable"
|
||||
"unicode/rangetable",
|
||||
]
|
||||
pruneopts = "UT"
|
||||
revision = "f21a4dfb5e38f5895301dc265a8def02365cc3d0"
|
||||
version = "v0.3.0"
|
||||
|
||||
[[projects]]
|
||||
branch = "master"
|
||||
digest = "1:601e63e7d4577f907118bec825902505291918859d223bce015539e79f1160e3"
|
||||
name = "google.golang.org/genproto"
|
||||
packages = ["googleapis/rpc/status"]
|
||||
pruneopts = "UT"
|
||||
revision = "32ee49c4dd805befd833990acba36cb75042378c"
|
||||
|
||||
[[projects]]
|
||||
digest = "1:7a977fdcd5abff03e94f92e7b374ef37e91c7c389581e5c4348fa98616e6c6be"
|
||||
name = "google.golang.org/grpc"
|
||||
packages = [
|
||||
".",
|
||||
@@ -176,20 +199,39 @@
|
||||
"stats",
|
||||
"status",
|
||||
"tap",
|
||||
"transport"
|
||||
"transport",
|
||||
]
|
||||
pruneopts = "UT"
|
||||
revision = "7a6a684ca69eb4cae85ad0a484f2e531598c047b"
|
||||
version = "v1.12.2"
|
||||
|
||||
[[projects]]
|
||||
digest = "1:342378ac4dcb378a5448dd723f0784ae519383532f5e70ade24132c4c8693202"
|
||||
name = "gopkg.in/yaml.v2"
|
||||
packages = ["."]
|
||||
pruneopts = "UT"
|
||||
revision = "5420a8b6744d3b0345ab293f6fcba19c978f1183"
|
||||
version = "v2.2.1"
|
||||
|
||||
[solve-meta]
|
||||
analyzer-name = "dep"
|
||||
analyzer-version = 1
|
||||
inputs-digest = "5dd480018adbb94025564b74bad8dd269cc516183b7b428317f6dd04b07726f4"
|
||||
input-imports = [
|
||||
"github.com/container-storage-interface/spec/lib/go/csi",
|
||||
"github.com/golang/mock/gomock",
|
||||
"github.com/golang/protobuf/proto",
|
||||
"github.com/golang/protobuf/ptypes",
|
||||
"github.com/golang/protobuf/ptypes/wrappers",
|
||||
"github.com/onsi/ginkgo",
|
||||
"github.com/onsi/gomega",
|
||||
"github.com/sirupsen/logrus",
|
||||
"golang.org/x/net/context",
|
||||
"google.golang.org/grpc",
|
||||
"google.golang.org/grpc/codes",
|
||||
"google.golang.org/grpc/connectivity",
|
||||
"google.golang.org/grpc/reflection",
|
||||
"google.golang.org/grpc/status",
|
||||
"gopkg.in/yaml.v2",
|
||||
]
|
||||
solver-name = "gps-cdcl"
|
||||
solver-version = 1
|
||||
|
4
vendor/github.com/kubernetes-csi/csi-test/Gopkg.toml
generated
vendored
4
vendor/github.com/kubernetes-csi/csi-test/Gopkg.toml
generated
vendored
@@ -27,7 +27,7 @@
|
||||
|
||||
[[constraint]]
|
||||
name = "github.com/container-storage-interface/spec"
|
||||
version = "~0.3.0"
|
||||
version = "v1.0.0-rc2"
|
||||
|
||||
[[constraint]]
|
||||
name = "github.com/golang/mock"
|
||||
@@ -35,7 +35,7 @@
|
||||
|
||||
[[constraint]]
|
||||
name = "github.com/golang/protobuf"
|
||||
version = "v1.1.0"
|
||||
version = "v1.2.0"
|
||||
|
||||
[[constraint]]
|
||||
name = "github.com/onsi/ginkgo"
|
||||
|
2
vendor/github.com/kubernetes-csi/csi-test/Makefile
generated
vendored
2
vendor/github.com/kubernetes-csi/csi-test/Makefile
generated
vendored
@@ -38,7 +38,7 @@ container: $(APP)
|
||||
push: container
|
||||
docker push $(IMAGE_NAME):$(IMAGE_VERSION)
|
||||
|
||||
test:
|
||||
test: $(APP)
|
||||
files=$$(find ./ -name '*.go' | grep -v '^./vendor' ); \
|
||||
if [ $$(gofmt -d $$files | wc -l) -ne 0 ]; then \
|
||||
echo "formatting errors:"; \
|
||||
|
13
vendor/github.com/kubernetes-csi/csi-test/README.md
generated
vendored
13
vendor/github.com/kubernetes-csi/csi-test/README.md
generated
vendored
@@ -27,3 +27,16 @@ CSI driver.
|
||||
|
||||
* Master is for CSI v0.4.0. Please see the branches for other CSI releases.
|
||||
* Only Golang 1.9+ supported. See [gRPC issue](https://github.com/grpc/grpc-go/issues/711#issuecomment-326626790)
|
||||
|
||||
## Community, discussion, contribution, and support
|
||||
|
||||
Learn how to engage with the Kubernetes community on the [community page](http://kubernetes.io/community/).
|
||||
|
||||
You can reach the maintainers of this project at:
|
||||
|
||||
- [Slack channel](https://kubernetes.slack.com/messages/sig-storage)
|
||||
- [Mailing list](https://groups.google.com/forum/#!forum/kubernetes-sig-storage)
|
||||
|
||||
### Code of conduct
|
||||
|
||||
Participation in the Kubernetes community is governed by the [Kubernetes Code of Conduct](code-of-conduct.md).
|
||||
|
1
vendor/github.com/kubernetes-csi/csi-test/cmd/csi-sanity/sanity_test.go
generated
vendored
1
vendor/github.com/kubernetes-csi/csi-test/cmd/csi-sanity/sanity_test.go
generated
vendored
@@ -41,6 +41,7 @@ func init() {
|
||||
flag.StringVar(&config.StagingPath, prefix+"stagingdir", os.TempDir()+"/csi", "Mount point for NodeStage if staging is supported")
|
||||
flag.StringVar(&config.SecretsFile, prefix+"secrets", "", "CSI secrets file")
|
||||
flag.Int64Var(&config.TestVolumeSize, prefix+"testvolumesize", sanity.DefTestVolumeSize, "Base volume size used for provisioned volumes")
|
||||
flag.StringVar(&config.TestVolumeParametersFile, prefix+"testvolumeparameters", "", "YAML file of volume parameters for provisioned volumes")
|
||||
flag.Parse()
|
||||
}
|
||||
|
||||
|
63
vendor/github.com/kubernetes-csi/csi-test/driver/driver.go
generated
vendored
63
vendor/github.com/kubernetes-csi/csi-test/driver/driver.go
generated
vendored
@@ -14,20 +14,22 @@ See the License for the specific language governing permissions and
|
||||
limitations under the License.
|
||||
*/
|
||||
|
||||
//go:generate mockgen -package=driver -destination=driver.mock.go github.com/container-storage-interface/spec/lib/go/csi/v0 IdentityServer,ControllerServer,NodeServer
|
||||
//go:generate mockgen -package=driver -destination=driver.mock.go github.com/container-storage-interface/spec/lib/go/csi IdentityServer,ControllerServer,NodeServer
|
||||
|
||||
package driver
|
||||
|
||||
import (
|
||||
"context"
|
||||
"encoding/json"
|
||||
"errors"
|
||||
"fmt"
|
||||
"net"
|
||||
"sync"
|
||||
|
||||
"google.golang.org/grpc/codes"
|
||||
"google.golang.org/grpc/status"
|
||||
|
||||
"github.com/container-storage-interface/spec/lib/go/csi/v0"
|
||||
"github.com/container-storage-interface/spec/lib/go/csi"
|
||||
"google.golang.org/grpc"
|
||||
"google.golang.org/grpc/reflection"
|
||||
)
|
||||
@@ -102,7 +104,7 @@ func (c *CSIDriver) Start(l net.Listener) error {
|
||||
|
||||
// Create a new grpc server
|
||||
c.server = grpc.NewServer(
|
||||
grpc.UnaryInterceptor(c.authInterceptor),
|
||||
grpc.UnaryInterceptor(c.callInterceptor),
|
||||
)
|
||||
|
||||
// Register Mock servers
|
||||
@@ -162,22 +164,49 @@ func (c *CSIDriver) SetDefaultCreds() {
|
||||
}
|
||||
}
|
||||
|
||||
func (c *CSIDriver) authInterceptor(ctx context.Context, req interface{}, info *grpc.UnaryServerInfo, handler grpc.UnaryHandler) (interface{}, error) {
|
||||
func (c *CSIDriver) callInterceptor(ctx context.Context, req interface{}, info *grpc.UnaryServerInfo, handler grpc.UnaryHandler) (interface{}, error) {
|
||||
err := c.authInterceptor(req)
|
||||
if err != nil {
|
||||
logGRPC(info.FullMethod, req, nil, err)
|
||||
return nil, err
|
||||
}
|
||||
rsp, err := handler(ctx, req)
|
||||
logGRPC(info.FullMethod, req, rsp, err)
|
||||
return rsp, err
|
||||
}
|
||||
|
||||
func (c *CSIDriver) authInterceptor(req interface{}) error {
|
||||
if c.creds != nil {
|
||||
authenticated, authErr := isAuthenticated(req, c.creds)
|
||||
if !authenticated {
|
||||
if authErr == ErrNoCredentials {
|
||||
return nil, status.Error(codes.InvalidArgument, authErr.Error())
|
||||
return status.Error(codes.InvalidArgument, authErr.Error())
|
||||
}
|
||||
if authErr == ErrAuthFailed {
|
||||
return nil, status.Error(codes.Unauthenticated, authErr.Error())
|
||||
return status.Error(codes.Unauthenticated, authErr.Error())
|
||||
}
|
||||
}
|
||||
}
|
||||
return nil
|
||||
}
|
||||
|
||||
h, err := handler(ctx, req)
|
||||
|
||||
return h, err
|
||||
func logGRPC(method string, request, reply interface{}, err error) {
|
||||
// Log JSON with the request and response for easier parsing
|
||||
logMessage := struct {
|
||||
Method string
|
||||
Request interface{}
|
||||
Response interface{}
|
||||
Error string
|
||||
}{
|
||||
Method: method,
|
||||
Request: request,
|
||||
Response: reply,
|
||||
}
|
||||
if err != nil {
|
||||
logMessage.Error = err.Error()
|
||||
}
|
||||
msg, _ := json.Marshal(logMessage)
|
||||
fmt.Printf("gRPCCall: %s\n", msg)
|
||||
}
|
||||
|
||||
func isAuthenticated(req interface{}, creds *CSICreds) (bool, error) {
|
||||
@@ -204,35 +233,35 @@ func isAuthenticated(req interface{}, creds *CSICreds) (bool, error) {
|
||||
}
|
||||
|
||||
func authenticateCreateVolume(req *csi.CreateVolumeRequest, creds *CSICreds) (bool, error) {
|
||||
return credsCheck(req.GetControllerCreateSecrets(), creds.CreateVolumeSecret)
|
||||
return credsCheck(req.GetSecrets(), creds.CreateVolumeSecret)
|
||||
}
|
||||
|
||||
func authenticateDeleteVolume(req *csi.DeleteVolumeRequest, creds *CSICreds) (bool, error) {
|
||||
return credsCheck(req.GetControllerDeleteSecrets(), creds.DeleteVolumeSecret)
|
||||
return credsCheck(req.GetSecrets(), creds.DeleteVolumeSecret)
|
||||
}
|
||||
|
||||
func authenticateControllerPublishVolume(req *csi.ControllerPublishVolumeRequest, creds *CSICreds) (bool, error) {
|
||||
return credsCheck(req.GetControllerPublishSecrets(), creds.ControllerPublishVolumeSecret)
|
||||
return credsCheck(req.GetSecrets(), creds.ControllerPublishVolumeSecret)
|
||||
}
|
||||
|
||||
func authenticateControllerUnpublishVolume(req *csi.ControllerUnpublishVolumeRequest, creds *CSICreds) (bool, error) {
|
||||
return credsCheck(req.GetControllerUnpublishSecrets(), creds.ControllerUnpublishVolumeSecret)
|
||||
return credsCheck(req.GetSecrets(), creds.ControllerUnpublishVolumeSecret)
|
||||
}
|
||||
|
||||
func authenticateNodeStageVolume(req *csi.NodeStageVolumeRequest, creds *CSICreds) (bool, error) {
|
||||
return credsCheck(req.GetNodeStageSecrets(), creds.NodeStageVolumeSecret)
|
||||
return credsCheck(req.GetSecrets(), creds.NodeStageVolumeSecret)
|
||||
}
|
||||
|
||||
func authenticateNodePublishVolume(req *csi.NodePublishVolumeRequest, creds *CSICreds) (bool, error) {
|
||||
return credsCheck(req.GetNodePublishSecrets(), creds.NodePublishVolumeSecret)
|
||||
return credsCheck(req.GetSecrets(), creds.NodePublishVolumeSecret)
|
||||
}
|
||||
|
||||
func authenticateCreateSnapshot(req *csi.CreateSnapshotRequest, creds *CSICreds) (bool, error) {
|
||||
return credsCheck(req.GetCreateSnapshotSecrets(), creds.CreateSnapshotSecret)
|
||||
return credsCheck(req.GetSecrets(), creds.CreateSnapshotSecret)
|
||||
}
|
||||
|
||||
func authenticateDeleteSnapshot(req *csi.DeleteSnapshotRequest, creds *CSICreds) (bool, error) {
|
||||
return credsCheck(req.GetDeleteSnapshotSecrets(), creds.DeleteSnapshotSecret)
|
||||
return credsCheck(req.GetSecrets(), creds.DeleteSnapshotSecret)
|
||||
}
|
||||
|
||||
func credsCheck(secrets map[string]string, secretVal string) (bool, error) {
|
||||
|
110
vendor/github.com/kubernetes-csi/csi-test/driver/driver.mock.go
generated
vendored
110
vendor/github.com/kubernetes-csi/csi-test/driver/driver.mock.go
generated
vendored
@@ -1,12 +1,12 @@
|
||||
// Code generated by MockGen. DO NOT EDIT.
|
||||
// Source: github.com/container-storage-interface/spec/lib/go/csi/v0 (interfaces: IdentityServer,ControllerServer,NodeServer)
|
||||
// Source: github.com/container-storage-interface/spec/lib/go/csi (interfaces: IdentityServer,ControllerServer,NodeServer)
|
||||
|
||||
// Package driver is a generated GoMock package.
|
||||
package driver
|
||||
|
||||
import (
|
||||
context "context"
|
||||
v0 "github.com/container-storage-interface/spec/lib/go/csi/v0"
|
||||
csi "github.com/container-storage-interface/spec/lib/go/csi"
|
||||
gomock "github.com/golang/mock/gomock"
|
||||
reflect "reflect"
|
||||
)
|
||||
@@ -35,9 +35,9 @@ func (m *MockIdentityServer) EXPECT() *MockIdentityServerMockRecorder {
|
||||
}
|
||||
|
||||
// GetPluginCapabilities mocks base method
|
||||
func (m *MockIdentityServer) GetPluginCapabilities(arg0 context.Context, arg1 *v0.GetPluginCapabilitiesRequest) (*v0.GetPluginCapabilitiesResponse, error) {
|
||||
func (m *MockIdentityServer) GetPluginCapabilities(arg0 context.Context, arg1 *csi.GetPluginCapabilitiesRequest) (*csi.GetPluginCapabilitiesResponse, error) {
|
||||
ret := m.ctrl.Call(m, "GetPluginCapabilities", arg0, arg1)
|
||||
ret0, _ := ret[0].(*v0.GetPluginCapabilitiesResponse)
|
||||
ret0, _ := ret[0].(*csi.GetPluginCapabilitiesResponse)
|
||||
ret1, _ := ret[1].(error)
|
||||
return ret0, ret1
|
||||
}
|
||||
@@ -48,9 +48,9 @@ func (mr *MockIdentityServerMockRecorder) GetPluginCapabilities(arg0, arg1 inter
|
||||
}
|
||||
|
||||
// GetPluginInfo mocks base method
|
||||
func (m *MockIdentityServer) GetPluginInfo(arg0 context.Context, arg1 *v0.GetPluginInfoRequest) (*v0.GetPluginInfoResponse, error) {
|
||||
func (m *MockIdentityServer) GetPluginInfo(arg0 context.Context, arg1 *csi.GetPluginInfoRequest) (*csi.GetPluginInfoResponse, error) {
|
||||
ret := m.ctrl.Call(m, "GetPluginInfo", arg0, arg1)
|
||||
ret0, _ := ret[0].(*v0.GetPluginInfoResponse)
|
||||
ret0, _ := ret[0].(*csi.GetPluginInfoResponse)
|
||||
ret1, _ := ret[1].(error)
|
||||
return ret0, ret1
|
||||
}
|
||||
@@ -61,9 +61,9 @@ func (mr *MockIdentityServerMockRecorder) GetPluginInfo(arg0, arg1 interface{})
|
||||
}
|
||||
|
||||
// Probe mocks base method
|
||||
func (m *MockIdentityServer) Probe(arg0 context.Context, arg1 *v0.ProbeRequest) (*v0.ProbeResponse, error) {
|
||||
func (m *MockIdentityServer) Probe(arg0 context.Context, arg1 *csi.ProbeRequest) (*csi.ProbeResponse, error) {
|
||||
ret := m.ctrl.Call(m, "Probe", arg0, arg1)
|
||||
ret0, _ := ret[0].(*v0.ProbeResponse)
|
||||
ret0, _ := ret[0].(*csi.ProbeResponse)
|
||||
ret1, _ := ret[1].(error)
|
||||
return ret0, ret1
|
||||
}
|
||||
@@ -97,9 +97,9 @@ func (m *MockControllerServer) EXPECT() *MockControllerServerMockRecorder {
|
||||
}
|
||||
|
||||
// ControllerGetCapabilities mocks base method
|
||||
func (m *MockControllerServer) ControllerGetCapabilities(arg0 context.Context, arg1 *v0.ControllerGetCapabilitiesRequest) (*v0.ControllerGetCapabilitiesResponse, error) {
|
||||
func (m *MockControllerServer) ControllerGetCapabilities(arg0 context.Context, arg1 *csi.ControllerGetCapabilitiesRequest) (*csi.ControllerGetCapabilitiesResponse, error) {
|
||||
ret := m.ctrl.Call(m, "ControllerGetCapabilities", arg0, arg1)
|
||||
ret0, _ := ret[0].(*v0.ControllerGetCapabilitiesResponse)
|
||||
ret0, _ := ret[0].(*csi.ControllerGetCapabilitiesResponse)
|
||||
ret1, _ := ret[1].(error)
|
||||
return ret0, ret1
|
||||
}
|
||||
@@ -110,9 +110,9 @@ func (mr *MockControllerServerMockRecorder) ControllerGetCapabilities(arg0, arg1
|
||||
}
|
||||
|
||||
// ControllerPublishVolume mocks base method
|
||||
func (m *MockControllerServer) ControllerPublishVolume(arg0 context.Context, arg1 *v0.ControllerPublishVolumeRequest) (*v0.ControllerPublishVolumeResponse, error) {
|
||||
func (m *MockControllerServer) ControllerPublishVolume(arg0 context.Context, arg1 *csi.ControllerPublishVolumeRequest) (*csi.ControllerPublishVolumeResponse, error) {
|
||||
ret := m.ctrl.Call(m, "ControllerPublishVolume", arg0, arg1)
|
||||
ret0, _ := ret[0].(*v0.ControllerPublishVolumeResponse)
|
||||
ret0, _ := ret[0].(*csi.ControllerPublishVolumeResponse)
|
||||
ret1, _ := ret[1].(error)
|
||||
return ret0, ret1
|
||||
}
|
||||
@@ -123,9 +123,9 @@ func (mr *MockControllerServerMockRecorder) ControllerPublishVolume(arg0, arg1 i
|
||||
}
|
||||
|
||||
// ControllerUnpublishVolume mocks base method
|
||||
func (m *MockControllerServer) ControllerUnpublishVolume(arg0 context.Context, arg1 *v0.ControllerUnpublishVolumeRequest) (*v0.ControllerUnpublishVolumeResponse, error) {
|
||||
func (m *MockControllerServer) ControllerUnpublishVolume(arg0 context.Context, arg1 *csi.ControllerUnpublishVolumeRequest) (*csi.ControllerUnpublishVolumeResponse, error) {
|
||||
ret := m.ctrl.Call(m, "ControllerUnpublishVolume", arg0, arg1)
|
||||
ret0, _ := ret[0].(*v0.ControllerUnpublishVolumeResponse)
|
||||
ret0, _ := ret[0].(*csi.ControllerUnpublishVolumeResponse)
|
||||
ret1, _ := ret[1].(error)
|
||||
return ret0, ret1
|
||||
}
|
||||
@@ -136,9 +136,9 @@ func (mr *MockControllerServerMockRecorder) ControllerUnpublishVolume(arg0, arg1
|
||||
}
|
||||
|
||||
// CreateSnapshot mocks base method
|
||||
func (m *MockControllerServer) CreateSnapshot(arg0 context.Context, arg1 *v0.CreateSnapshotRequest) (*v0.CreateSnapshotResponse, error) {
|
||||
func (m *MockControllerServer) CreateSnapshot(arg0 context.Context, arg1 *csi.CreateSnapshotRequest) (*csi.CreateSnapshotResponse, error) {
|
||||
ret := m.ctrl.Call(m, "CreateSnapshot", arg0, arg1)
|
||||
ret0, _ := ret[0].(*v0.CreateSnapshotResponse)
|
||||
ret0, _ := ret[0].(*csi.CreateSnapshotResponse)
|
||||
ret1, _ := ret[1].(error)
|
||||
return ret0, ret1
|
||||
}
|
||||
@@ -149,9 +149,9 @@ func (mr *MockControllerServerMockRecorder) CreateSnapshot(arg0, arg1 interface{
|
||||
}
|
||||
|
||||
// CreateVolume mocks base method
|
||||
func (m *MockControllerServer) CreateVolume(arg0 context.Context, arg1 *v0.CreateVolumeRequest) (*v0.CreateVolumeResponse, error) {
|
||||
func (m *MockControllerServer) CreateVolume(arg0 context.Context, arg1 *csi.CreateVolumeRequest) (*csi.CreateVolumeResponse, error) {
|
||||
ret := m.ctrl.Call(m, "CreateVolume", arg0, arg1)
|
||||
ret0, _ := ret[0].(*v0.CreateVolumeResponse)
|
||||
ret0, _ := ret[0].(*csi.CreateVolumeResponse)
|
||||
ret1, _ := ret[1].(error)
|
||||
return ret0, ret1
|
||||
}
|
||||
@@ -162,9 +162,9 @@ func (mr *MockControllerServerMockRecorder) CreateVolume(arg0, arg1 interface{})
|
||||
}
|
||||
|
||||
// DeleteSnapshot mocks base method
|
||||
func (m *MockControllerServer) DeleteSnapshot(arg0 context.Context, arg1 *v0.DeleteSnapshotRequest) (*v0.DeleteSnapshotResponse, error) {
|
||||
func (m *MockControllerServer) DeleteSnapshot(arg0 context.Context, arg1 *csi.DeleteSnapshotRequest) (*csi.DeleteSnapshotResponse, error) {
|
||||
ret := m.ctrl.Call(m, "DeleteSnapshot", arg0, arg1)
|
||||
ret0, _ := ret[0].(*v0.DeleteSnapshotResponse)
|
||||
ret0, _ := ret[0].(*csi.DeleteSnapshotResponse)
|
||||
ret1, _ := ret[1].(error)
|
||||
return ret0, ret1
|
||||
}
|
||||
@@ -175,9 +175,9 @@ func (mr *MockControllerServerMockRecorder) DeleteSnapshot(arg0, arg1 interface{
|
||||
}
|
||||
|
||||
// DeleteVolume mocks base method
|
||||
func (m *MockControllerServer) DeleteVolume(arg0 context.Context, arg1 *v0.DeleteVolumeRequest) (*v0.DeleteVolumeResponse, error) {
|
||||
func (m *MockControllerServer) DeleteVolume(arg0 context.Context, arg1 *csi.DeleteVolumeRequest) (*csi.DeleteVolumeResponse, error) {
|
||||
ret := m.ctrl.Call(m, "DeleteVolume", arg0, arg1)
|
||||
ret0, _ := ret[0].(*v0.DeleteVolumeResponse)
|
||||
ret0, _ := ret[0].(*csi.DeleteVolumeResponse)
|
||||
ret1, _ := ret[1].(error)
|
||||
return ret0, ret1
|
||||
}
|
||||
@@ -188,9 +188,9 @@ func (mr *MockControllerServerMockRecorder) DeleteVolume(arg0, arg1 interface{})
|
||||
}
|
||||
|
||||
// GetCapacity mocks base method
|
||||
func (m *MockControllerServer) GetCapacity(arg0 context.Context, arg1 *v0.GetCapacityRequest) (*v0.GetCapacityResponse, error) {
|
||||
func (m *MockControllerServer) GetCapacity(arg0 context.Context, arg1 *csi.GetCapacityRequest) (*csi.GetCapacityResponse, error) {
|
||||
ret := m.ctrl.Call(m, "GetCapacity", arg0, arg1)
|
||||
ret0, _ := ret[0].(*v0.GetCapacityResponse)
|
||||
ret0, _ := ret[0].(*csi.GetCapacityResponse)
|
||||
ret1, _ := ret[1].(error)
|
||||
return ret0, ret1
|
||||
}
|
||||
@@ -201,9 +201,9 @@ func (mr *MockControllerServerMockRecorder) GetCapacity(arg0, arg1 interface{})
|
||||
}
|
||||
|
||||
// ListSnapshots mocks base method
|
||||
func (m *MockControllerServer) ListSnapshots(arg0 context.Context, arg1 *v0.ListSnapshotsRequest) (*v0.ListSnapshotsResponse, error) {
|
||||
func (m *MockControllerServer) ListSnapshots(arg0 context.Context, arg1 *csi.ListSnapshotsRequest) (*csi.ListSnapshotsResponse, error) {
|
||||
ret := m.ctrl.Call(m, "ListSnapshots", arg0, arg1)
|
||||
ret0, _ := ret[0].(*v0.ListSnapshotsResponse)
|
||||
ret0, _ := ret[0].(*csi.ListSnapshotsResponse)
|
||||
ret1, _ := ret[1].(error)
|
||||
return ret0, ret1
|
||||
}
|
||||
@@ -214,9 +214,9 @@ func (mr *MockControllerServerMockRecorder) ListSnapshots(arg0, arg1 interface{}
|
||||
}
|
||||
|
||||
// ListVolumes mocks base method
|
||||
func (m *MockControllerServer) ListVolumes(arg0 context.Context, arg1 *v0.ListVolumesRequest) (*v0.ListVolumesResponse, error) {
|
||||
func (m *MockControllerServer) ListVolumes(arg0 context.Context, arg1 *csi.ListVolumesRequest) (*csi.ListVolumesResponse, error) {
|
||||
ret := m.ctrl.Call(m, "ListVolumes", arg0, arg1)
|
||||
ret0, _ := ret[0].(*v0.ListVolumesResponse)
|
||||
ret0, _ := ret[0].(*csi.ListVolumesResponse)
|
||||
ret1, _ := ret[1].(error)
|
||||
return ret0, ret1
|
||||
}
|
||||
@@ -227,9 +227,9 @@ func (mr *MockControllerServerMockRecorder) ListVolumes(arg0, arg1 interface{})
|
||||
}
|
||||
|
||||
// ValidateVolumeCapabilities mocks base method
|
||||
func (m *MockControllerServer) ValidateVolumeCapabilities(arg0 context.Context, arg1 *v0.ValidateVolumeCapabilitiesRequest) (*v0.ValidateVolumeCapabilitiesResponse, error) {
|
||||
func (m *MockControllerServer) ValidateVolumeCapabilities(arg0 context.Context, arg1 *csi.ValidateVolumeCapabilitiesRequest) (*csi.ValidateVolumeCapabilitiesResponse, error) {
|
||||
ret := m.ctrl.Call(m, "ValidateVolumeCapabilities", arg0, arg1)
|
||||
ret0, _ := ret[0].(*v0.ValidateVolumeCapabilitiesResponse)
|
||||
ret0, _ := ret[0].(*csi.ValidateVolumeCapabilitiesResponse)
|
||||
ret1, _ := ret[1].(error)
|
||||
return ret0, ret1
|
||||
}
|
||||
@@ -263,9 +263,9 @@ func (m *MockNodeServer) EXPECT() *MockNodeServerMockRecorder {
|
||||
}
|
||||
|
||||
// NodeGetCapabilities mocks base method
|
||||
func (m *MockNodeServer) NodeGetCapabilities(arg0 context.Context, arg1 *v0.NodeGetCapabilitiesRequest) (*v0.NodeGetCapabilitiesResponse, error) {
|
||||
func (m *MockNodeServer) NodeGetCapabilities(arg0 context.Context, arg1 *csi.NodeGetCapabilitiesRequest) (*csi.NodeGetCapabilitiesResponse, error) {
|
||||
ret := m.ctrl.Call(m, "NodeGetCapabilities", arg0, arg1)
|
||||
ret0, _ := ret[0].(*v0.NodeGetCapabilitiesResponse)
|
||||
ret0, _ := ret[0].(*csi.NodeGetCapabilitiesResponse)
|
||||
ret1, _ := ret[1].(error)
|
||||
return ret0, ret1
|
||||
}
|
||||
@@ -275,23 +275,10 @@ func (mr *MockNodeServerMockRecorder) NodeGetCapabilities(arg0, arg1 interface{}
|
||||
return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "NodeGetCapabilities", reflect.TypeOf((*MockNodeServer)(nil).NodeGetCapabilities), arg0, arg1)
|
||||
}
|
||||
|
||||
// NodeGetId mocks base method
|
||||
func (m *MockNodeServer) NodeGetId(arg0 context.Context, arg1 *v0.NodeGetIdRequest) (*v0.NodeGetIdResponse, error) {
|
||||
ret := m.ctrl.Call(m, "NodeGetId", arg0, arg1)
|
||||
ret0, _ := ret[0].(*v0.NodeGetIdResponse)
|
||||
ret1, _ := ret[1].(error)
|
||||
return ret0, ret1
|
||||
}
|
||||
|
||||
// NodeGetId indicates an expected call of NodeGetId
|
||||
func (mr *MockNodeServerMockRecorder) NodeGetId(arg0, arg1 interface{}) *gomock.Call {
|
||||
return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "NodeGetId", reflect.TypeOf((*MockNodeServer)(nil).NodeGetId), arg0, arg1)
|
||||
}
|
||||
|
||||
// NodeGetInfo mocks base method
|
||||
func (m *MockNodeServer) NodeGetInfo(arg0 context.Context, arg1 *v0.NodeGetInfoRequest) (*v0.NodeGetInfoResponse, error) {
|
||||
func (m *MockNodeServer) NodeGetInfo(arg0 context.Context, arg1 *csi.NodeGetInfoRequest) (*csi.NodeGetInfoResponse, error) {
|
||||
ret := m.ctrl.Call(m, "NodeGetInfo", arg0, arg1)
|
||||
ret0, _ := ret[0].(*v0.NodeGetInfoResponse)
|
||||
ret0, _ := ret[0].(*csi.NodeGetInfoResponse)
|
||||
ret1, _ := ret[1].(error)
|
||||
return ret0, ret1
|
||||
}
|
||||
@@ -301,10 +288,23 @@ func (mr *MockNodeServerMockRecorder) NodeGetInfo(arg0, arg1 interface{}) *gomoc
|
||||
return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "NodeGetInfo", reflect.TypeOf((*MockNodeServer)(nil).NodeGetInfo), arg0, arg1)
|
||||
}
|
||||
|
||||
// NodeGetVolumeStats mocks base method
|
||||
func (m *MockNodeServer) NodeGetVolumeStats(arg0 context.Context, arg1 *csi.NodeGetVolumeStatsRequest) (*csi.NodeGetVolumeStatsResponse, error) {
|
||||
ret := m.ctrl.Call(m, "NodeGetVolumeStats", arg0, arg1)
|
||||
ret0, _ := ret[0].(*csi.NodeGetVolumeStatsResponse)
|
||||
ret1, _ := ret[1].(error)
|
||||
return ret0, ret1
|
||||
}
|
||||
|
||||
// NodeGetVolumeStats indicates an expected call of NodeGetVolumeStats
|
||||
func (mr *MockNodeServerMockRecorder) NodeGetVolumeStats(arg0, arg1 interface{}) *gomock.Call {
|
||||
return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "NodeGetVolumeStats", reflect.TypeOf((*MockNodeServer)(nil).NodeGetVolumeStats), arg0, arg1)
|
||||
}
|
||||
|
||||
// NodePublishVolume mocks base method
|
||||
func (m *MockNodeServer) NodePublishVolume(arg0 context.Context, arg1 *v0.NodePublishVolumeRequest) (*v0.NodePublishVolumeResponse, error) {
|
||||
func (m *MockNodeServer) NodePublishVolume(arg0 context.Context, arg1 *csi.NodePublishVolumeRequest) (*csi.NodePublishVolumeResponse, error) {
|
||||
ret := m.ctrl.Call(m, "NodePublishVolume", arg0, arg1)
|
||||
ret0, _ := ret[0].(*v0.NodePublishVolumeResponse)
|
||||
ret0, _ := ret[0].(*csi.NodePublishVolumeResponse)
|
||||
ret1, _ := ret[1].(error)
|
||||
return ret0, ret1
|
||||
}
|
||||
@@ -315,9 +315,9 @@ func (mr *MockNodeServerMockRecorder) NodePublishVolume(arg0, arg1 interface{})
|
||||
}
|
||||
|
||||
// NodeStageVolume mocks base method
|
||||
func (m *MockNodeServer) NodeStageVolume(arg0 context.Context, arg1 *v0.NodeStageVolumeRequest) (*v0.NodeStageVolumeResponse, error) {
|
||||
func (m *MockNodeServer) NodeStageVolume(arg0 context.Context, arg1 *csi.NodeStageVolumeRequest) (*csi.NodeStageVolumeResponse, error) {
|
||||
ret := m.ctrl.Call(m, "NodeStageVolume", arg0, arg1)
|
||||
ret0, _ := ret[0].(*v0.NodeStageVolumeResponse)
|
||||
ret0, _ := ret[0].(*csi.NodeStageVolumeResponse)
|
||||
ret1, _ := ret[1].(error)
|
||||
return ret0, ret1
|
||||
}
|
||||
@@ -328,9 +328,9 @@ func (mr *MockNodeServerMockRecorder) NodeStageVolume(arg0, arg1 interface{}) *g
|
||||
}
|
||||
|
||||
// NodeUnpublishVolume mocks base method
|
||||
func (m *MockNodeServer) NodeUnpublishVolume(arg0 context.Context, arg1 *v0.NodeUnpublishVolumeRequest) (*v0.NodeUnpublishVolumeResponse, error) {
|
||||
func (m *MockNodeServer) NodeUnpublishVolume(arg0 context.Context, arg1 *csi.NodeUnpublishVolumeRequest) (*csi.NodeUnpublishVolumeResponse, error) {
|
||||
ret := m.ctrl.Call(m, "NodeUnpublishVolume", arg0, arg1)
|
||||
ret0, _ := ret[0].(*v0.NodeUnpublishVolumeResponse)
|
||||
ret0, _ := ret[0].(*csi.NodeUnpublishVolumeResponse)
|
||||
ret1, _ := ret[1].(error)
|
||||
return ret0, ret1
|
||||
}
|
||||
@@ -341,9 +341,9 @@ func (mr *MockNodeServerMockRecorder) NodeUnpublishVolume(arg0, arg1 interface{}
|
||||
}
|
||||
|
||||
// NodeUnstageVolume mocks base method
|
||||
func (m *MockNodeServer) NodeUnstageVolume(arg0 context.Context, arg1 *v0.NodeUnstageVolumeRequest) (*v0.NodeUnstageVolumeResponse, error) {
|
||||
func (m *MockNodeServer) NodeUnstageVolume(arg0 context.Context, arg1 *csi.NodeUnstageVolumeRequest) (*csi.NodeUnstageVolumeResponse, error) {
|
||||
ret := m.ctrl.Call(m, "NodeUnstageVolume", arg0, arg1)
|
||||
ret0, _ := ret[0].(*v0.NodeUnstageVolumeResponse)
|
||||
ret0, _ := ret[0].(*csi.NodeUnstageVolumeResponse)
|
||||
ret1, _ := ret[1].(error)
|
||||
return ret0, ret1
|
||||
}
|
||||
|
18
vendor/github.com/kubernetes-csi/csi-test/hack/_apitest/api_test.go
generated
vendored
Normal file
18
vendor/github.com/kubernetes-csi/csi-test/hack/_apitest/api_test.go
generated
vendored
Normal file
@@ -0,0 +1,18 @@
|
||||
package apitest
|
||||
|
||||
import (
|
||||
"os"
|
||||
"testing"
|
||||
|
||||
"github.com/kubernetes-csi/csi-test/pkg/sanity"
|
||||
)
|
||||
|
||||
func TestMyDriver(t *testing.T) {
|
||||
config := &sanity.Config{
|
||||
TargetPath: os.TempDir() + "/csi",
|
||||
StagingPath: os.TempDir() + "/csi",
|
||||
Address: "/tmp/e2e-csi-sanity.sock",
|
||||
}
|
||||
|
||||
sanity.Test(t, config)
|
||||
}
|
42
vendor/github.com/kubernetes-csi/csi-test/hack/_embedded/embedded_test.go
generated
vendored
Normal file
42
vendor/github.com/kubernetes-csi/csi-test/hack/_embedded/embedded_test.go
generated
vendored
Normal file
@@ -0,0 +1,42 @@
|
||||
package embedded
|
||||
|
||||
import (
|
||||
"os"
|
||||
"testing"
|
||||
|
||||
"github.com/kubernetes-csi/csi-test/pkg/sanity"
|
||||
. "github.com/onsi/ginkgo"
|
||||
. "github.com/onsi/gomega"
|
||||
)
|
||||
|
||||
func TestMyDriverGinkgo(t *testing.T) {
|
||||
RegisterFailHandler(Fail)
|
||||
RunSpecs(t, "CSI Sanity Test Suite")
|
||||
}
|
||||
|
||||
// The test suite into which the sanity tests get embedded may already
|
||||
// have before/after suite functions. There can only be one such
|
||||
// function. Here we define empty ones because then Ginkgo
|
||||
// will start complaining at runtime when invoking the embedded case
|
||||
// in hack/e2e.sh if a PR adds back such functions in the sanity test
|
||||
// code.
|
||||
var _ = BeforeSuite(func() {})
|
||||
var _ = AfterSuite(func() {})
|
||||
|
||||
var _ = Describe("MyCSIDriver", func() {
|
||||
Context("Config A", func() {
|
||||
config := &sanity.Config{
|
||||
TargetPath: os.TempDir() + "/csi",
|
||||
StagingPath: os.TempDir() + "/csi",
|
||||
Address: "/tmp/e2e-csi-sanity.sock",
|
||||
}
|
||||
|
||||
BeforeEach(func() {})
|
||||
|
||||
AfterEach(func() {})
|
||||
|
||||
Describe("CSI Driver Test Suite", func() {
|
||||
sanity.GinkgoTest(config)
|
||||
})
|
||||
})
|
||||
})
|
24
vendor/github.com/kubernetes-csi/csi-test/hack/e2e.sh
generated
vendored
24
vendor/github.com/kubernetes-csi/csi-test/hack/e2e.sh
generated
vendored
@@ -35,7 +35,26 @@ runTestWithCreds()
|
||||
fi
|
||||
}
|
||||
|
||||
go build -o bin/mock ./mock || exit 1
|
||||
runTestAPI()
|
||||
{
|
||||
CSI_ENDPOINT=$1 ./bin/mock &
|
||||
local pid=$!
|
||||
|
||||
GOCACHE=off go test -v ./hack/_apitest/api_test.go; ret=$?
|
||||
|
||||
if [ $ret -ne 0 ] ; then
|
||||
exit $ret
|
||||
fi
|
||||
|
||||
GOCACHE=off go test -v ./hack/_embedded/embedded_test.go; ret=$?
|
||||
kill -9 $pid
|
||||
|
||||
if [ $ret -ne 0 ] ; then
|
||||
exit $ret
|
||||
fi
|
||||
}
|
||||
|
||||
make
|
||||
|
||||
cd cmd/csi-sanity
|
||||
make clean install || exit 1
|
||||
@@ -47,4 +66,7 @@ rm -f $UDS
|
||||
runTestWithCreds "${UDS}" "${UDS}"
|
||||
rm -f $UDS
|
||||
|
||||
runTestAPI "${UDS}"
|
||||
rm -f $UDS
|
||||
|
||||
exit 0
|
||||
|
22
vendor/github.com/kubernetes-csi/csi-test/mock/README.md
generated
vendored
22
vendor/github.com/kubernetes-csi/csi-test/mock/README.md
generated
vendored
@@ -1,2 +1,22 @@
|
||||
# Mock CSI Driver
|
||||
Extremely simple mock driver used to test `csi-sanity` based on `rexray/gocsi/mock`
|
||||
Extremely simple mock driver used to test `csi-sanity` based on `rexray/gocsi/mock`.
|
||||
It can be used for testing of Container Orchestrators that implement client side
|
||||
of CSI interface.
|
||||
|
||||
```
|
||||
Usage of mock:
|
||||
-disable-attach
|
||||
Disables RPC_PUBLISH_UNPUBLISH_VOLUME capability.
|
||||
-name string
|
||||
CSI driver name. (default "io.kubernetes.storage.mock")
|
||||
```
|
||||
|
||||
It prints all received CSI messages to stdout encoded as json, so a test can check that
|
||||
CO sent the right CSI message.
|
||||
|
||||
Example of such output:
|
||||
|
||||
```
|
||||
gRPCCall: {"Method":"/csi.v0.Controller/ControllerGetCapabilities","Request":{},"Response":{"capabilities":[{"Type":{"Rpc":{"type":1}}},{"Type":{"Rpc":{"type":3}}},{"Type":{"Rpc":{"type":4}}},{"Type":{"Rpc":{"type":6}}},{"Type":{"Rpc":{"type":5}}},{"Type":{"Rpc":{"type":2}}}]},"Error":""}
|
||||
gRPCCall: {"Method":"/csi.v0.Controller/ControllerPublishVolume","Request":{"volume_id":"12","node_id":"some-fake-node-id","volume_capability":{"AccessType":{"Mount":{}},"access_mode":{"mode":1}}},"Response":null,"Error":"rpc error: code = NotFound desc = Not matching Node ID some-fake-node-id to Mock Node ID io.kubernetes.storage.mock"}
|
||||
```
|
||||
|
10
vendor/github.com/kubernetes-csi/csi-test/mock/cache/SnapshotCache.go
generated
vendored
10
vendor/github.com/kubernetes-csi/csi-test/mock/cache/SnapshotCache.go
generated
vendored
@@ -4,7 +4,7 @@ import (
|
||||
"strings"
|
||||
"sync"
|
||||
|
||||
"github.com/container-storage-interface/spec/lib/go/csi/v0"
|
||||
"github.com/container-storage-interface/spec/lib/go/csi"
|
||||
)
|
||||
|
||||
type SnapshotCache interface {
|
||||
@@ -12,7 +12,7 @@ type SnapshotCache interface {
|
||||
|
||||
Delete(i int)
|
||||
|
||||
List(status csi.SnapshotStatus_Type) []csi.Snapshot
|
||||
List(ready bool) []csi.Snapshot
|
||||
|
||||
FindSnapshot(k, v string) (int, Snapshot)
|
||||
}
|
||||
@@ -49,13 +49,13 @@ func (snap *snapshotCache) Delete(i int) {
|
||||
snap.snapshots = snap.snapshots[:len(snap.snapshots)-1]
|
||||
}
|
||||
|
||||
func (snap *snapshotCache) List(status csi.SnapshotStatus_Type) []csi.Snapshot {
|
||||
func (snap *snapshotCache) List(ready bool) []csi.Snapshot {
|
||||
snap.snapshotsRWL.RLock()
|
||||
defer snap.snapshotsRWL.RUnlock()
|
||||
|
||||
snapshots := make([]csi.Snapshot, 0)
|
||||
for _, v := range snap.snapshots {
|
||||
if v.SnapshotCSI.GetStatus() != nil && v.SnapshotCSI.GetStatus().Type == status {
|
||||
if v.SnapshotCSI.GetReadyToUse() {
|
||||
snapshots = append(snapshots, v.SnapshotCSI)
|
||||
}
|
||||
}
|
||||
@@ -71,7 +71,7 @@ func (snap *snapshotCache) FindSnapshot(k, v string) (int, Snapshot) {
|
||||
for i, vi := range snap.snapshots {
|
||||
switch k {
|
||||
case "id":
|
||||
if strings.EqualFold(v, vi.SnapshotCSI.Id) {
|
||||
if strings.EqualFold(v, vi.SnapshotCSI.GetSnapshotId()) {
|
||||
return i, vi
|
||||
}
|
||||
case "sourceVolumeId":
|
||||
|
9
vendor/github.com/kubernetes-csi/csi-test/mock/main.go
generated
vendored
9
vendor/github.com/kubernetes-csi/csi-test/mock/main.go
generated
vendored
@@ -16,6 +16,7 @@ limitations under the License.
|
||||
package main
|
||||
|
||||
import (
|
||||
"flag"
|
||||
"fmt"
|
||||
"net"
|
||||
"os"
|
||||
@@ -28,6 +29,12 @@ import (
|
||||
)
|
||||
|
||||
func main() {
|
||||
var config service.Config
|
||||
flag.BoolVar(&config.DisableAttach, "disable-attach", false, "Disables RPC_PUBLISH_UNPUBLISH_VOLUME capability.")
|
||||
flag.StringVar(&config.DriverName, "name", service.Name, "CSI driver name.")
|
||||
flag.Int64Var(&config.AttachLimit, "attach-limit", 0, "number of attachable volumes on a node")
|
||||
flag.Parse()
|
||||
|
||||
endpoint := os.Getenv("CSI_ENDPOINT")
|
||||
if len(endpoint) == 0 {
|
||||
fmt.Println("CSI_ENDPOINT must be defined and must be a path")
|
||||
@@ -39,7 +46,7 @@ func main() {
|
||||
}
|
||||
|
||||
// Create mock driver
|
||||
s := service.New()
|
||||
s := service.New(config)
|
||||
servers := &driver.CSIDriverServers{
|
||||
Controller: s,
|
||||
Identity: s,
|
||||
|
128
vendor/github.com/kubernetes-csi/csi-test/mock/service/controller.go
generated
vendored
128
vendor/github.com/kubernetes-csi/csi-test/mock/service/controller.go
generated
vendored
@@ -12,7 +12,7 @@ import (
|
||||
"google.golang.org/grpc/codes"
|
||||
"google.golang.org/grpc/status"
|
||||
|
||||
"github.com/container-storage-interface/spec/lib/go/csi/v0"
|
||||
"github.com/container-storage-interface/spec/lib/go/csi"
|
||||
)
|
||||
|
||||
const (
|
||||
@@ -62,7 +62,7 @@ func (s *service) CreateVolume(
|
||||
s.volsRWL.Lock()
|
||||
defer s.volsRWL.Unlock()
|
||||
s.vols = append(s.vols, v)
|
||||
MockVolumes[v.Id] = Volume{
|
||||
MockVolumes[v.GetVolumeId()] = Volume{
|
||||
VolumeCSI: v,
|
||||
NodeID: "",
|
||||
ISStaged: false,
|
||||
@@ -108,6 +108,10 @@ func (s *service) ControllerPublishVolume(
|
||||
req *csi.ControllerPublishVolumeRequest) (
|
||||
*csi.ControllerPublishVolumeResponse, error) {
|
||||
|
||||
if s.config.DisableAttach {
|
||||
return nil, status.Error(codes.Unimplemented, "ControllerPublish is not supported")
|
||||
}
|
||||
|
||||
if len(req.VolumeId) == 0 {
|
||||
return nil, status.Error(codes.InvalidArgument, "Volume ID cannot be empty")
|
||||
}
|
||||
@@ -136,10 +140,10 @@ func (s *service) ControllerPublishVolume(
|
||||
devPathKey := path.Join(req.NodeId, "dev")
|
||||
|
||||
// Check to see if the volume is already published.
|
||||
if device := v.Attributes[devPathKey]; device != "" {
|
||||
if device := v.VolumeContext[devPathKey]; device != "" {
|
||||
var volRo bool
|
||||
var roVal string
|
||||
if ro, ok := v.Attributes[ReadOnlyKey]; ok {
|
||||
if ro, ok := v.VolumeContext[ReadOnlyKey]; ok {
|
||||
roVal = ro
|
||||
}
|
||||
|
||||
@@ -155,7 +159,7 @@ func (s *service) ControllerPublishVolume(
|
||||
}
|
||||
|
||||
return &csi.ControllerPublishVolumeResponse{
|
||||
PublishInfo: map[string]string{
|
||||
PublishContext: map[string]string{
|
||||
"device": device,
|
||||
"readonly": roVal,
|
||||
},
|
||||
@@ -171,12 +175,12 @@ func (s *service) ControllerPublishVolume(
|
||||
|
||||
// Publish the volume.
|
||||
device := "/dev/mock"
|
||||
v.Attributes[devPathKey] = device
|
||||
v.Attributes[ReadOnlyKey] = roVal
|
||||
v.VolumeContext[devPathKey] = device
|
||||
v.VolumeContext[ReadOnlyKey] = roVal
|
||||
s.vols[i] = v
|
||||
|
||||
return &csi.ControllerPublishVolumeResponse{
|
||||
PublishInfo: map[string]string{
|
||||
PublishContext: map[string]string{
|
||||
"device": device,
|
||||
"readonly": roVal,
|
||||
},
|
||||
@@ -188,6 +192,10 @@ func (s *service) ControllerUnpublishVolume(
|
||||
req *csi.ControllerUnpublishVolumeRequest) (
|
||||
*csi.ControllerUnpublishVolumeResponse, error) {
|
||||
|
||||
if s.config.DisableAttach {
|
||||
return nil, status.Error(codes.Unimplemented, "ControllerPublish is not supported")
|
||||
}
|
||||
|
||||
if len(req.VolumeId) == 0 {
|
||||
return nil, status.Error(codes.InvalidArgument, "Volume ID cannot be empty")
|
||||
}
|
||||
@@ -215,13 +223,13 @@ func (s *service) ControllerUnpublishVolume(
|
||||
devPathKey := path.Join(nodeID, "dev")
|
||||
|
||||
// Check to see if the volume is already unpublished.
|
||||
if v.Attributes[devPathKey] == "" {
|
||||
if v.VolumeContext[devPathKey] == "" {
|
||||
return &csi.ControllerUnpublishVolumeResponse{}, nil
|
||||
}
|
||||
|
||||
// Unpublish the volume.
|
||||
delete(v.Attributes, devPathKey)
|
||||
delete(v.Attributes, ReadOnlyKey)
|
||||
delete(v.VolumeContext, devPathKey)
|
||||
delete(v.VolumeContext, ReadOnlyKey)
|
||||
s.vols[i] = v
|
||||
|
||||
return &csi.ControllerUnpublishVolumeResponse{}, nil
|
||||
@@ -244,7 +252,11 @@ func (s *service) ValidateVolumeCapabilities(
|
||||
}
|
||||
|
||||
return &csi.ValidateVolumeCapabilitiesResponse{
|
||||
Supported: true,
|
||||
Confirmed: &csi.ValidateVolumeCapabilitiesResponse_Confirmed{
|
||||
VolumeContext: req.GetVolumeContext(),
|
||||
VolumeCapabilities: req.GetVolumeCapabilities(),
|
||||
Parameters: req.GetParameters(),
|
||||
},
|
||||
}, nil
|
||||
}
|
||||
|
||||
@@ -338,51 +350,56 @@ func (s *service) ControllerGetCapabilities(
|
||||
req *csi.ControllerGetCapabilitiesRequest) (
|
||||
*csi.ControllerGetCapabilitiesResponse, error) {
|
||||
|
||||
return &csi.ControllerGetCapabilitiesResponse{
|
||||
Capabilities: []*csi.ControllerServiceCapability{
|
||||
{
|
||||
Type: &csi.ControllerServiceCapability_Rpc{
|
||||
Rpc: &csi.ControllerServiceCapability_RPC{
|
||||
Type: csi.ControllerServiceCapability_RPC_CREATE_DELETE_VOLUME,
|
||||
},
|
||||
},
|
||||
},
|
||||
{
|
||||
Type: &csi.ControllerServiceCapability_Rpc{
|
||||
Rpc: &csi.ControllerServiceCapability_RPC{
|
||||
Type: csi.ControllerServiceCapability_RPC_PUBLISH_UNPUBLISH_VOLUME,
|
||||
},
|
||||
},
|
||||
},
|
||||
{
|
||||
Type: &csi.ControllerServiceCapability_Rpc{
|
||||
Rpc: &csi.ControllerServiceCapability_RPC{
|
||||
Type: csi.ControllerServiceCapability_RPC_LIST_VOLUMES,
|
||||
},
|
||||
},
|
||||
},
|
||||
{
|
||||
Type: &csi.ControllerServiceCapability_Rpc{
|
||||
Rpc: &csi.ControllerServiceCapability_RPC{
|
||||
Type: csi.ControllerServiceCapability_RPC_GET_CAPACITY,
|
||||
},
|
||||
},
|
||||
},
|
||||
{
|
||||
Type: &csi.ControllerServiceCapability_Rpc{
|
||||
Rpc: &csi.ControllerServiceCapability_RPC{
|
||||
Type: csi.ControllerServiceCapability_RPC_LIST_SNAPSHOTS,
|
||||
},
|
||||
},
|
||||
},
|
||||
{
|
||||
Type: &csi.ControllerServiceCapability_Rpc{
|
||||
Rpc: &csi.ControllerServiceCapability_RPC{
|
||||
Type: csi.ControllerServiceCapability_RPC_CREATE_DELETE_SNAPSHOT,
|
||||
},
|
||||
caps := []*csi.ControllerServiceCapability{
|
||||
{
|
||||
Type: &csi.ControllerServiceCapability_Rpc{
|
||||
Rpc: &csi.ControllerServiceCapability_RPC{
|
||||
Type: csi.ControllerServiceCapability_RPC_CREATE_DELETE_VOLUME,
|
||||
},
|
||||
},
|
||||
},
|
||||
{
|
||||
Type: &csi.ControllerServiceCapability_Rpc{
|
||||
Rpc: &csi.ControllerServiceCapability_RPC{
|
||||
Type: csi.ControllerServiceCapability_RPC_LIST_VOLUMES,
|
||||
},
|
||||
},
|
||||
},
|
||||
{
|
||||
Type: &csi.ControllerServiceCapability_Rpc{
|
||||
Rpc: &csi.ControllerServiceCapability_RPC{
|
||||
Type: csi.ControllerServiceCapability_RPC_GET_CAPACITY,
|
||||
},
|
||||
},
|
||||
},
|
||||
{
|
||||
Type: &csi.ControllerServiceCapability_Rpc{
|
||||
Rpc: &csi.ControllerServiceCapability_RPC{
|
||||
Type: csi.ControllerServiceCapability_RPC_LIST_SNAPSHOTS,
|
||||
},
|
||||
},
|
||||
},
|
||||
{
|
||||
Type: &csi.ControllerServiceCapability_Rpc{
|
||||
Rpc: &csi.ControllerServiceCapability_RPC{
|
||||
Type: csi.ControllerServiceCapability_RPC_CREATE_DELETE_SNAPSHOT,
|
||||
},
|
||||
},
|
||||
},
|
||||
}
|
||||
|
||||
if !s.config.DisableAttach {
|
||||
caps = append(caps, &csi.ControllerServiceCapability{
|
||||
Type: &csi.ControllerServiceCapability_Rpc{
|
||||
Rpc: &csi.ControllerServiceCapability_RPC{
|
||||
Type: csi.ControllerServiceCapability_RPC_PUBLISH_UNPUBLISH_VOLUME,
|
||||
},
|
||||
},
|
||||
})
|
||||
}
|
||||
|
||||
return &csi.ControllerGetCapabilitiesResponse{
|
||||
Capabilities: caps,
|
||||
}, nil
|
||||
}
|
||||
|
||||
@@ -497,7 +514,8 @@ func getAllSnapshots(s *service, req *csi.ListSnapshotsRequest) (*csi.ListSnapsh
|
||||
// Copy the mock snapshots into a new slice in order to avoid
|
||||
// locking the service's snapshot slice for the duration of the
|
||||
// ListSnapshots RPC.
|
||||
snapshots := s.snapshots.List(csi.SnapshotStatus_READY)
|
||||
readyToUse := true
|
||||
snapshots := s.snapshots.List(readyToUse)
|
||||
|
||||
var (
|
||||
ulenSnapshots = int32(len(snapshots))
|
||||
|
4
vendor/github.com/kubernetes-csi/csi-test/mock/service/identity.go
generated
vendored
4
vendor/github.com/kubernetes-csi/csi-test/mock/service/identity.go
generated
vendored
@@ -3,7 +3,7 @@ package service
|
||||
import (
|
||||
"golang.org/x/net/context"
|
||||
|
||||
"github.com/container-storage-interface/spec/lib/go/csi/v0"
|
||||
"github.com/container-storage-interface/spec/lib/go/csi"
|
||||
"github.com/golang/protobuf/ptypes/wrappers"
|
||||
)
|
||||
|
||||
@@ -13,7 +13,7 @@ func (s *service) GetPluginInfo(
|
||||
*csi.GetPluginInfoResponse, error) {
|
||||
|
||||
return &csi.GetPluginInfoResponse{
|
||||
Name: Name,
|
||||
Name: s.config.DriverName,
|
||||
VendorVersion: VendorVersion,
|
||||
Manifest: Manifest,
|
||||
}, nil
|
||||
|
68
vendor/github.com/kubernetes-csi/csi-test/mock/service/node.go
generated
vendored
68
vendor/github.com/kubernetes-csi/csi-test/mock/service/node.go
generated
vendored
@@ -8,7 +8,7 @@ import (
|
||||
|
||||
"golang.org/x/net/context"
|
||||
|
||||
"github.com/container-storage-interface/spec/lib/go/csi/v0"
|
||||
"github.com/container-storage-interface/spec/lib/go/csi"
|
||||
)
|
||||
|
||||
func (s *service) NodeStageVolume(
|
||||
@@ -16,11 +16,15 @@ func (s *service) NodeStageVolume(
|
||||
req *csi.NodeStageVolumeRequest) (
|
||||
*csi.NodeStageVolumeResponse, error) {
|
||||
|
||||
device, ok := req.PublishInfo["device"]
|
||||
device, ok := req.PublishContext["device"]
|
||||
if !ok {
|
||||
return nil, status.Error(
|
||||
codes.InvalidArgument,
|
||||
"stage volume info 'device' key required")
|
||||
if s.config.DisableAttach {
|
||||
device = "mock device"
|
||||
} else {
|
||||
return nil, status.Error(
|
||||
codes.InvalidArgument,
|
||||
"stage volume info 'device' key required")
|
||||
}
|
||||
}
|
||||
|
||||
if len(req.GetVolumeId()) == 0 {
|
||||
@@ -48,14 +52,14 @@ func (s *service) NodeStageVolume(
|
||||
nodeStgPathKey := path.Join(s.nodeID, req.StagingTargetPath)
|
||||
|
||||
// Check to see if the volume has already been staged.
|
||||
if v.Attributes[nodeStgPathKey] != "" {
|
||||
if v.VolumeContext[nodeStgPathKey] != "" {
|
||||
// TODO: Check for the capabilities to be equal. Return "ALREADY_EXISTS"
|
||||
// if the capabilities don't match.
|
||||
return &csi.NodeStageVolumeResponse{}, nil
|
||||
}
|
||||
|
||||
// Stage the volume.
|
||||
v.Attributes[nodeStgPathKey] = device
|
||||
v.VolumeContext[nodeStgPathKey] = device
|
||||
s.vols[i] = v
|
||||
|
||||
return &csi.NodeStageVolumeResponse{}, nil
|
||||
@@ -87,12 +91,12 @@ func (s *service) NodeUnstageVolume(
|
||||
nodeStgPathKey := path.Join(s.nodeID, req.StagingTargetPath)
|
||||
|
||||
// Check to see if the volume has already been unstaged.
|
||||
if v.Attributes[nodeStgPathKey] == "" {
|
||||
if v.VolumeContext[nodeStgPathKey] == "" {
|
||||
return &csi.NodeUnstageVolumeResponse{}, nil
|
||||
}
|
||||
|
||||
// Unpublish the volume.
|
||||
delete(v.Attributes, nodeStgPathKey)
|
||||
delete(v.VolumeContext, nodeStgPathKey)
|
||||
s.vols[i] = v
|
||||
|
||||
return &csi.NodeUnstageVolumeResponse{}, nil
|
||||
@@ -103,11 +107,15 @@ func (s *service) NodePublishVolume(
|
||||
req *csi.NodePublishVolumeRequest) (
|
||||
*csi.NodePublishVolumeResponse, error) {
|
||||
|
||||
device, ok := req.PublishInfo["device"]
|
||||
device, ok := req.PublishContext["device"]
|
||||
if !ok {
|
||||
return nil, status.Error(
|
||||
codes.InvalidArgument,
|
||||
"publish volume info 'device' key required")
|
||||
if s.config.DisableAttach {
|
||||
device = "mock device"
|
||||
} else {
|
||||
return nil, status.Error(
|
||||
codes.InvalidArgument,
|
||||
"stage volume info 'device' key required")
|
||||
}
|
||||
}
|
||||
|
||||
if len(req.GetVolumeId()) == 0 {
|
||||
@@ -135,7 +143,7 @@ func (s *service) NodePublishVolume(
|
||||
nodeMntPathKey := path.Join(s.nodeID, req.TargetPath)
|
||||
|
||||
// Check to see if the volume has already been published.
|
||||
if v.Attributes[nodeMntPathKey] != "" {
|
||||
if v.VolumeContext[nodeMntPathKey] != "" {
|
||||
|
||||
// Requests marked Readonly fail due to volumes published by
|
||||
// the Mock driver supporting only RW mode.
|
||||
@@ -148,9 +156,9 @@ func (s *service) NodePublishVolume(
|
||||
|
||||
// Publish the volume.
|
||||
if req.GetStagingTargetPath() != "" {
|
||||
v.Attributes[nodeMntPathKey] = req.GetStagingTargetPath()
|
||||
v.VolumeContext[nodeMntPathKey] = req.GetStagingTargetPath()
|
||||
} else {
|
||||
v.Attributes[nodeMntPathKey] = device
|
||||
v.VolumeContext[nodeMntPathKey] = device
|
||||
}
|
||||
s.vols[i] = v
|
||||
|
||||
@@ -182,27 +190,17 @@ func (s *service) NodeUnpublishVolume(
|
||||
nodeMntPathKey := path.Join(s.nodeID, req.TargetPath)
|
||||
|
||||
// Check to see if the volume has already been unpublished.
|
||||
if v.Attributes[nodeMntPathKey] == "" {
|
||||
if v.VolumeContext[nodeMntPathKey] == "" {
|
||||
return &csi.NodeUnpublishVolumeResponse{}, nil
|
||||
}
|
||||
|
||||
// Unpublish the volume.
|
||||
delete(v.Attributes, nodeMntPathKey)
|
||||
delete(v.VolumeContext, nodeMntPathKey)
|
||||
s.vols[i] = v
|
||||
|
||||
return &csi.NodeUnpublishVolumeResponse{}, nil
|
||||
}
|
||||
|
||||
func (s *service) NodeGetId(
|
||||
ctx context.Context,
|
||||
req *csi.NodeGetIdRequest) (
|
||||
*csi.NodeGetIdResponse, error) {
|
||||
|
||||
return &csi.NodeGetIdResponse{
|
||||
NodeId: s.nodeID,
|
||||
}, nil
|
||||
}
|
||||
|
||||
func (s *service) NodeGetCapabilities(
|
||||
ctx context.Context,
|
||||
req *csi.NodeGetCapabilitiesRequest) (
|
||||
@@ -230,7 +228,17 @@ func (s *service) NodeGetCapabilities(
|
||||
|
||||
func (s *service) NodeGetInfo(ctx context.Context,
|
||||
req *csi.NodeGetInfoRequest) (*csi.NodeGetInfoResponse, error) {
|
||||
return &csi.NodeGetInfoResponse{
|
||||
csiNodeResponse := &csi.NodeGetInfoResponse{
|
||||
NodeId: s.nodeID,
|
||||
}, nil
|
||||
}
|
||||
if s.config.AttachLimit > 0 {
|
||||
csiNodeResponse.MaxVolumesPerNode = s.config.AttachLimit
|
||||
}
|
||||
return csiNodeResponse, nil
|
||||
}
|
||||
|
||||
func (s *service) NodeGetVolumeStats(ctx context.Context,
|
||||
req *csi.NodeGetVolumeStatsRequest) (*csi.NodeGetVolumeStatsResponse, error) {
|
||||
return &csi.NodeGetVolumeStatsResponse{}, nil
|
||||
|
||||
}
|
||||
|
38
vendor/github.com/kubernetes-csi/csi-test/mock/service/service.go
generated
vendored
38
vendor/github.com/kubernetes-csi/csi-test/mock/service/service.go
generated
vendored
@@ -5,11 +5,12 @@ import (
|
||||
"strings"
|
||||
"sync"
|
||||
"sync/atomic"
|
||||
"time"
|
||||
|
||||
"github.com/container-storage-interface/spec/lib/go/csi/v0"
|
||||
"github.com/container-storage-interface/spec/lib/go/csi"
|
||||
"github.com/kubernetes-csi/csi-test/mock/cache"
|
||||
"golang.org/x/net/context"
|
||||
|
||||
"github.com/golang/protobuf/ptypes"
|
||||
)
|
||||
|
||||
const (
|
||||
@@ -25,6 +26,12 @@ var Manifest = map[string]string{
|
||||
"url": "https://github.com/kubernetes-csi/csi-test/mock",
|
||||
}
|
||||
|
||||
type Config struct {
|
||||
DisableAttach bool
|
||||
DriverName string
|
||||
AttachLimit int64
|
||||
}
|
||||
|
||||
// Service is the CSI Mock service provider.
|
||||
type Service interface {
|
||||
csi.ControllerServer
|
||||
@@ -40,6 +47,7 @@ type service struct {
|
||||
volsNID uint64
|
||||
snapshots cache.SnapshotCache
|
||||
snapshotsNID uint64
|
||||
config Config
|
||||
}
|
||||
|
||||
type Volume struct {
|
||||
@@ -55,8 +63,11 @@ type Volume struct {
|
||||
var MockVolumes map[string]Volume
|
||||
|
||||
// New returns a new Service.
|
||||
func New() Service {
|
||||
s := &service{nodeID: Name}
|
||||
func New(config Config) Service {
|
||||
s := &service{
|
||||
nodeID: config.DriverName,
|
||||
config: config,
|
||||
}
|
||||
s.snapshots = cache.NewSnapshotCache()
|
||||
s.vols = []csi.Volume{
|
||||
s.newVolume("Mock Volume 1", gib100),
|
||||
@@ -83,8 +94,8 @@ const (
|
||||
|
||||
func (s *service) newVolume(name string, capcity int64) csi.Volume {
|
||||
return csi.Volume{
|
||||
Id: fmt.Sprintf("%d", atomic.AddUint64(&s.volsNID, 1)),
|
||||
Attributes: map[string]string{"name": name},
|
||||
VolumeId: fmt.Sprintf("%d", atomic.AddUint64(&s.volsNID, 1)),
|
||||
VolumeContext: map[string]string{"name": name},
|
||||
CapacityBytes: capcity,
|
||||
}
|
||||
}
|
||||
@@ -101,11 +112,11 @@ func (s *service) findVolNoLock(k, v string) (volIdx int, volInfo csi.Volume) {
|
||||
for i, vi := range s.vols {
|
||||
switch k {
|
||||
case "id":
|
||||
if strings.EqualFold(v, vi.Id) {
|
||||
if strings.EqualFold(v, vi.GetVolumeId()) {
|
||||
return i, vi
|
||||
}
|
||||
case "name":
|
||||
if n, ok := vi.Attributes["name"]; ok && strings.EqualFold(v, n) {
|
||||
if n, ok := vi.VolumeContext["name"]; ok && strings.EqualFold(v, n) {
|
||||
return i, vi
|
||||
}
|
||||
}
|
||||
@@ -121,17 +132,16 @@ func (s *service) findVolByName(
|
||||
}
|
||||
|
||||
func (s *service) newSnapshot(name, sourceVolumeId string, parameters map[string]string) cache.Snapshot {
|
||||
|
||||
ptime := ptypes.TimestampNow()
|
||||
return cache.Snapshot{
|
||||
Name: name,
|
||||
Parameters: parameters,
|
||||
SnapshotCSI: csi.Snapshot{
|
||||
Id: fmt.Sprintf("%d", atomic.AddUint64(&s.snapshotsNID, 1)),
|
||||
CreatedAt: time.Now().UnixNano(),
|
||||
SnapshotId: fmt.Sprintf("%d", atomic.AddUint64(&s.snapshotsNID, 1)),
|
||||
CreationTime: ptime,
|
||||
SourceVolumeId: sourceVolumeId,
|
||||
Status: &csi.SnapshotStatus{
|
||||
Type: csi.SnapshotStatus_READY,
|
||||
Details: "snapshot ready",
|
||||
},
|
||||
ReadyToUse: true,
|
||||
},
|
||||
}
|
||||
}
|
||||
|
14
vendor/github.com/kubernetes-csi/csi-test/pkg/sanity/README.md
generated
vendored
14
vendor/github.com/kubernetes-csi/csi-test/pkg/sanity/README.md
generated
vendored
@@ -39,13 +39,13 @@ var _ = Describe("MyCSIDriver", func () {
|
||||
Context("Config A", func () {
|
||||
var config &sanity.Config
|
||||
|
||||
BeforeEach() {
|
||||
... setup driver and config...
|
||||
}
|
||||
BeforeEach(func() {
|
||||
//... setup driver and config...
|
||||
})
|
||||
|
||||
AfterEach() {
|
||||
...tear down driver...
|
||||
}
|
||||
AfterEach(func() {
|
||||
//...tear down driver...
|
||||
})
|
||||
|
||||
Describe("CSI sanity", func() {
|
||||
sanity.GinkgoTest(config)
|
||||
@@ -53,7 +53,7 @@ var _ = Describe("MyCSIDriver", func () {
|
||||
})
|
||||
|
||||
Context("Config B", func () {
|
||||
...
|
||||
// other configs
|
||||
})
|
||||
})
|
||||
```
|
||||
|
12
vendor/github.com/kubernetes-csi/csi-test/pkg/sanity/cleanup.go
generated
vendored
12
vendor/github.com/kubernetes-csi/csi-test/pkg/sanity/cleanup.go
generated
vendored
@@ -20,7 +20,7 @@ import (
|
||||
"context"
|
||||
"log"
|
||||
|
||||
"github.com/container-storage-interface/spec/lib/go/csi/v0"
|
||||
"github.com/container-storage-interface/spec/lib/go/csi"
|
||||
|
||||
. "github.com/onsi/ginkgo"
|
||||
)
|
||||
@@ -61,8 +61,8 @@ func (cl *Cleanup) RegisterVolume(name string, info VolumeInfo) {
|
||||
// MaybeRegisterVolume adds or updates an entry for the volume with
|
||||
// the given name if CreateVolume was successful.
|
||||
func (cl *Cleanup) MaybeRegisterVolume(name string, vol *csi.CreateVolumeResponse, err error) {
|
||||
if err == nil && vol.GetVolume().GetId() != "" {
|
||||
cl.RegisterVolume(name, VolumeInfo{VolumeID: vol.GetVolume().GetId()})
|
||||
if err == nil && vol.GetVolume().GetVolumeId() != "" {
|
||||
cl.RegisterVolume(name, VolumeInfo{VolumeID: vol.GetVolume().GetVolumeId()})
|
||||
}
|
||||
}
|
||||
|
||||
@@ -112,7 +112,7 @@ func (cl *Cleanup) DeleteVolumes() {
|
||||
&csi.ControllerUnpublishVolumeRequest{
|
||||
VolumeId: info.VolumeID,
|
||||
NodeId: info.NodeID,
|
||||
ControllerUnpublishSecrets: cl.Context.Secrets.ControllerUnpublishVolumeSecret,
|
||||
Secrets: cl.Context.Secrets.ControllerUnpublishVolumeSecret,
|
||||
},
|
||||
); err != nil {
|
||||
logger.Printf("warning: ControllerUnpublishVolume: %s", err)
|
||||
@@ -122,8 +122,8 @@ func (cl *Cleanup) DeleteVolumes() {
|
||||
if _, err := cl.ControllerClient.DeleteVolume(
|
||||
ctx,
|
||||
&csi.DeleteVolumeRequest{
|
||||
VolumeId: info.VolumeID,
|
||||
ControllerDeleteSecrets: cl.Context.Secrets.DeleteVolumeSecret,
|
||||
VolumeId: info.VolumeID,
|
||||
Secrets: cl.Context.Secrets.DeleteVolumeSecret,
|
||||
},
|
||||
); err != nil {
|
||||
logger.Printf("error: DeleteVolume: %s", err)
|
||||
|
434
vendor/github.com/kubernetes-csi/csi-test/pkg/sanity/controller.go
generated
vendored
434
vendor/github.com/kubernetes-csi/csi-test/pkg/sanity/controller.go
generated
vendored
@@ -23,11 +23,12 @@ import (
|
||||
"google.golang.org/grpc/codes"
|
||||
"google.golang.org/grpc/status"
|
||||
|
||||
"github.com/container-storage-interface/spec/lib/go/csi/v0"
|
||||
"github.com/container-storage-interface/spec/lib/go/csi"
|
||||
|
||||
"strconv"
|
||||
|
||||
. "github.com/onsi/ginkgo"
|
||||
. "github.com/onsi/gomega"
|
||||
"strconv"
|
||||
)
|
||||
|
||||
const (
|
||||
@@ -35,6 +36,8 @@ const (
|
||||
// provisioned volumes. 10GB by default, can be overridden by
|
||||
// setting Config.TestVolumeSize.
|
||||
DefTestVolumeSize int64 = 10 * 1024 * 1024 * 1024
|
||||
|
||||
MaxNameLength int = 128
|
||||
)
|
||||
|
||||
func TestVolumeSize(sc *SanityContext) int64 {
|
||||
@@ -46,14 +49,14 @@ func TestVolumeSize(sc *SanityContext) int64 {
|
||||
|
||||
func verifyVolumeInfo(v *csi.Volume) {
|
||||
Expect(v).NotTo(BeNil())
|
||||
Expect(v.GetId()).NotTo(BeEmpty())
|
||||
Expect(v.GetVolumeId()).NotTo(BeEmpty())
|
||||
}
|
||||
|
||||
func verifySnapshotInfo(snapshot *csi.Snapshot) {
|
||||
Expect(snapshot).NotTo(BeNil())
|
||||
Expect(snapshot.GetId()).NotTo(BeEmpty())
|
||||
Expect(snapshot.GetSnapshotId()).NotTo(BeEmpty())
|
||||
Expect(snapshot.GetSourceVolumeId()).NotTo(BeEmpty())
|
||||
Expect(snapshot.GetCreatedAt()).NotTo(BeZero())
|
||||
Expect(snapshot.GetCreationTime()).NotTo(BeZero())
|
||||
}
|
||||
|
||||
func isControllerCapabilitySupported(
|
||||
@@ -182,7 +185,8 @@ var _ = DescribeSanity("Controller Service", func(sc *SanityContext) {
|
||||
vol, err := c.CreateVolume(
|
||||
context.Background(),
|
||||
&csi.CreateVolumeRequest{
|
||||
ControllerCreateSecrets: sc.Secrets.CreateVolumeSecret,
|
||||
Secrets: sc.Secrets.CreateVolumeSecret,
|
||||
Parameters: sc.Config.TestVolumeParameters,
|
||||
},
|
||||
)
|
||||
cl.MaybeRegisterVolume("", vol, err)
|
||||
@@ -198,8 +202,9 @@ var _ = DescribeSanity("Controller Service", func(sc *SanityContext) {
|
||||
vol, err := c.CreateVolume(
|
||||
context.Background(),
|
||||
&csi.CreateVolumeRequest{
|
||||
Name: name,
|
||||
ControllerCreateSecrets: sc.Secrets.CreateVolumeSecret,
|
||||
Name: name,
|
||||
Secrets: sc.Secrets.CreateVolumeSecret,
|
||||
Parameters: sc.Config.TestVolumeParameters,
|
||||
},
|
||||
)
|
||||
cl.MaybeRegisterVolume(name, vol, err)
|
||||
@@ -229,22 +234,23 @@ var _ = DescribeSanity("Controller Service", func(sc *SanityContext) {
|
||||
},
|
||||
},
|
||||
},
|
||||
ControllerCreateSecrets: sc.Secrets.CreateVolumeSecret,
|
||||
Secrets: sc.Secrets.CreateVolumeSecret,
|
||||
Parameters: sc.Config.TestVolumeParameters,
|
||||
},
|
||||
)
|
||||
Expect(err).NotTo(HaveOccurred())
|
||||
Expect(vol).NotTo(BeNil())
|
||||
Expect(vol.GetVolume()).NotTo(BeNil())
|
||||
Expect(vol.GetVolume().GetId()).NotTo(BeEmpty())
|
||||
cl.RegisterVolume(name, VolumeInfo{VolumeID: vol.GetVolume().GetId()})
|
||||
Expect(vol.GetVolume().GetVolumeId()).NotTo(BeEmpty())
|
||||
cl.RegisterVolume(name, VolumeInfo{VolumeID: vol.GetVolume().GetVolumeId()})
|
||||
|
||||
By("cleaning up deleting the volume")
|
||||
|
||||
_, err = c.DeleteVolume(
|
||||
context.Background(),
|
||||
&csi.DeleteVolumeRequest{
|
||||
VolumeId: vol.GetVolume().GetId(),
|
||||
ControllerDeleteSecrets: sc.Secrets.DeleteVolumeSecret,
|
||||
VolumeId: vol.GetVolume().GetVolumeId(),
|
||||
Secrets: sc.Secrets.DeleteVolumeSecret,
|
||||
},
|
||||
)
|
||||
Expect(err).NotTo(HaveOccurred())
|
||||
@@ -273,7 +279,8 @@ var _ = DescribeSanity("Controller Service", func(sc *SanityContext) {
|
||||
CapacityRange: &csi.CapacityRange{
|
||||
RequiredBytes: TestVolumeSize(sc),
|
||||
},
|
||||
ControllerCreateSecrets: sc.Secrets.CreateVolumeSecret,
|
||||
Secrets: sc.Secrets.CreateVolumeSecret,
|
||||
Parameters: sc.Config.TestVolumeParameters,
|
||||
},
|
||||
)
|
||||
if serverError, ok := status.FromError(err); ok &&
|
||||
@@ -283,8 +290,8 @@ var _ = DescribeSanity("Controller Service", func(sc *SanityContext) {
|
||||
Expect(err).NotTo(HaveOccurred())
|
||||
Expect(vol).NotTo(BeNil())
|
||||
Expect(vol.GetVolume()).NotTo(BeNil())
|
||||
Expect(vol.GetVolume().GetId()).NotTo(BeEmpty())
|
||||
cl.RegisterVolume(name, VolumeInfo{VolumeID: vol.GetVolume().GetId()})
|
||||
Expect(vol.GetVolume().GetVolumeId()).NotTo(BeEmpty())
|
||||
cl.RegisterVolume(name, VolumeInfo{VolumeID: vol.GetVolume().GetVolumeId()})
|
||||
Expect(vol.GetVolume().GetCapacityBytes()).To(BeNumerically(">=", TestVolumeSize(sc)))
|
||||
|
||||
By("cleaning up deleting the volume")
|
||||
@@ -292,14 +299,14 @@ var _ = DescribeSanity("Controller Service", func(sc *SanityContext) {
|
||||
_, err = c.DeleteVolume(
|
||||
context.Background(),
|
||||
&csi.DeleteVolumeRequest{
|
||||
VolumeId: vol.GetVolume().GetId(),
|
||||
ControllerDeleteSecrets: sc.Secrets.DeleteVolumeSecret,
|
||||
VolumeId: vol.GetVolume().GetVolumeId(),
|
||||
Secrets: sc.Secrets.DeleteVolumeSecret,
|
||||
},
|
||||
)
|
||||
Expect(err).NotTo(HaveOccurred())
|
||||
cl.UnregisterVolume(name)
|
||||
})
|
||||
It("should not fail when requesting to create a volume with already exisiting name and same capacity.", func() {
|
||||
It("should not fail when requesting to create a volume with already existing name and same capacity.", func() {
|
||||
|
||||
By("creating a volume")
|
||||
name := uniqueString("sanity-controller-create-twice")
|
||||
@@ -322,14 +329,15 @@ var _ = DescribeSanity("Controller Service", func(sc *SanityContext) {
|
||||
CapacityRange: &csi.CapacityRange{
|
||||
RequiredBytes: size,
|
||||
},
|
||||
ControllerCreateSecrets: sc.Secrets.CreateVolumeSecret,
|
||||
Secrets: sc.Secrets.CreateVolumeSecret,
|
||||
Parameters: sc.Config.TestVolumeParameters,
|
||||
},
|
||||
)
|
||||
Expect(err).NotTo(HaveOccurred())
|
||||
Expect(vol1).NotTo(BeNil())
|
||||
Expect(vol1.GetVolume()).NotTo(BeNil())
|
||||
Expect(vol1.GetVolume().GetId()).NotTo(BeEmpty())
|
||||
cl.RegisterVolume(name, VolumeInfo{VolumeID: vol1.GetVolume().GetId()})
|
||||
Expect(vol1.GetVolume().GetVolumeId()).NotTo(BeEmpty())
|
||||
cl.RegisterVolume(name, VolumeInfo{VolumeID: vol1.GetVolume().GetVolumeId()})
|
||||
Expect(vol1.GetVolume().GetCapacityBytes()).To(BeNumerically(">=", size))
|
||||
|
||||
vol2, err := c.CreateVolume(
|
||||
@@ -349,29 +357,30 @@ var _ = DescribeSanity("Controller Service", func(sc *SanityContext) {
|
||||
CapacityRange: &csi.CapacityRange{
|
||||
RequiredBytes: size,
|
||||
},
|
||||
ControllerCreateSecrets: sc.Secrets.CreateVolumeSecret,
|
||||
Secrets: sc.Secrets.CreateVolumeSecret,
|
||||
Parameters: sc.Config.TestVolumeParameters,
|
||||
},
|
||||
)
|
||||
Expect(err).NotTo(HaveOccurred())
|
||||
Expect(vol2).NotTo(BeNil())
|
||||
Expect(vol2.GetVolume()).NotTo(BeNil())
|
||||
Expect(vol2.GetVolume().GetId()).NotTo(BeEmpty())
|
||||
Expect(vol2.GetVolume().GetVolumeId()).NotTo(BeEmpty())
|
||||
Expect(vol2.GetVolume().GetCapacityBytes()).To(BeNumerically(">=", size))
|
||||
Expect(vol1.GetVolume().GetId()).To(Equal(vol2.GetVolume().GetId()))
|
||||
Expect(vol1.GetVolume().GetVolumeId()).To(Equal(vol2.GetVolume().GetVolumeId()))
|
||||
|
||||
By("cleaning up deleting the volume")
|
||||
|
||||
_, err = c.DeleteVolume(
|
||||
context.Background(),
|
||||
&csi.DeleteVolumeRequest{
|
||||
VolumeId: vol1.GetVolume().GetId(),
|
||||
ControllerDeleteSecrets: sc.Secrets.DeleteVolumeSecret,
|
||||
VolumeId: vol1.GetVolume().GetVolumeId(),
|
||||
Secrets: sc.Secrets.DeleteVolumeSecret,
|
||||
},
|
||||
)
|
||||
Expect(err).NotTo(HaveOccurred())
|
||||
cl.UnregisterVolume(name)
|
||||
})
|
||||
It("should fail when requesting to create a volume with already exisiting name and different capacity.", func() {
|
||||
It("should fail when requesting to create a volume with already existing name and different capacity.", func() {
|
||||
|
||||
By("creating a volume")
|
||||
name := uniqueString("sanity-controller-create-twice-different")
|
||||
@@ -395,14 +404,15 @@ var _ = DescribeSanity("Controller Service", func(sc *SanityContext) {
|
||||
RequiredBytes: size1,
|
||||
LimitBytes: size1,
|
||||
},
|
||||
ControllerCreateSecrets: sc.Secrets.CreateVolumeSecret,
|
||||
Secrets: sc.Secrets.CreateVolumeSecret,
|
||||
Parameters: sc.Config.TestVolumeParameters,
|
||||
},
|
||||
)
|
||||
Expect(err).ToNot(HaveOccurred())
|
||||
Expect(vol1).NotTo(BeNil())
|
||||
Expect(vol1.GetVolume()).NotTo(BeNil())
|
||||
Expect(vol1.GetVolume().GetId()).NotTo(BeEmpty())
|
||||
cl.RegisterVolume(name, VolumeInfo{VolumeID: vol1.GetVolume().GetId()})
|
||||
Expect(vol1.GetVolume().GetVolumeId()).NotTo(BeEmpty())
|
||||
cl.RegisterVolume(name, VolumeInfo{VolumeID: vol1.GetVolume().GetVolumeId()})
|
||||
size2 := 2 * TestVolumeSize(sc)
|
||||
|
||||
_, err = c.CreateVolume(
|
||||
@@ -423,7 +433,8 @@ var _ = DescribeSanity("Controller Service", func(sc *SanityContext) {
|
||||
RequiredBytes: size2,
|
||||
LimitBytes: size2,
|
||||
},
|
||||
ControllerCreateSecrets: sc.Secrets.CreateVolumeSecret,
|
||||
Secrets: sc.Secrets.CreateVolumeSecret,
|
||||
Parameters: sc.Config.TestVolumeParameters,
|
||||
},
|
||||
)
|
||||
Expect(err).To(HaveOccurred())
|
||||
@@ -436,8 +447,59 @@ var _ = DescribeSanity("Controller Service", func(sc *SanityContext) {
|
||||
_, err = c.DeleteVolume(
|
||||
context.Background(),
|
||||
&csi.DeleteVolumeRequest{
|
||||
VolumeId: vol1.GetVolume().GetId(),
|
||||
ControllerDeleteSecrets: sc.Secrets.DeleteVolumeSecret,
|
||||
VolumeId: vol1.GetVolume().GetVolumeId(),
|
||||
Secrets: sc.Secrets.DeleteVolumeSecret,
|
||||
},
|
||||
)
|
||||
Expect(err).NotTo(HaveOccurred())
|
||||
cl.UnregisterVolume(name)
|
||||
})
|
||||
|
||||
It("should not fail when creating volume with maximum-length name", func() {
|
||||
|
||||
nameBytes := make([]byte, MaxNameLength)
|
||||
for i := 0; i < MaxNameLength; i++ {
|
||||
nameBytes[i] = 'a'
|
||||
}
|
||||
name := string(nameBytes)
|
||||
By("creating a volume")
|
||||
size := TestVolumeSize(sc)
|
||||
|
||||
vol, err := c.CreateVolume(
|
||||
context.Background(),
|
||||
&csi.CreateVolumeRequest{
|
||||
Name: name,
|
||||
VolumeCapabilities: []*csi.VolumeCapability{
|
||||
{
|
||||
AccessType: &csi.VolumeCapability_Mount{
|
||||
Mount: &csi.VolumeCapability_MountVolume{},
|
||||
},
|
||||
AccessMode: &csi.VolumeCapability_AccessMode{
|
||||
Mode: csi.VolumeCapability_AccessMode_SINGLE_NODE_WRITER,
|
||||
},
|
||||
},
|
||||
},
|
||||
CapacityRange: &csi.CapacityRange{
|
||||
RequiredBytes: size,
|
||||
},
|
||||
Secrets: sc.Secrets.CreateVolumeSecret,
|
||||
Parameters: sc.Config.TestVolumeParameters,
|
||||
},
|
||||
)
|
||||
Expect(err).NotTo(HaveOccurred())
|
||||
Expect(vol).NotTo(BeNil())
|
||||
Expect(vol.GetVolume()).NotTo(BeNil())
|
||||
Expect(vol.GetVolume().GetVolumeId()).NotTo(BeEmpty())
|
||||
cl.RegisterVolume(name, VolumeInfo{VolumeID: vol.GetVolume().GetVolumeId()})
|
||||
Expect(vol.GetVolume().GetCapacityBytes()).To(BeNumerically(">=", size))
|
||||
|
||||
By("cleaning up deleting the volume")
|
||||
|
||||
_, err = c.DeleteVolume(
|
||||
context.Background(),
|
||||
&csi.DeleteVolumeRequest{
|
||||
VolumeId: vol.GetVolume().GetVolumeId(),
|
||||
Secrets: sc.Secrets.DeleteVolumeSecret,
|
||||
},
|
||||
)
|
||||
Expect(err).NotTo(HaveOccurred())
|
||||
@@ -457,7 +519,7 @@ var _ = DescribeSanity("Controller Service", func(sc *SanityContext) {
|
||||
_, err := c.DeleteVolume(
|
||||
context.Background(),
|
||||
&csi.DeleteVolumeRequest{
|
||||
ControllerDeleteSecrets: sc.Secrets.DeleteVolumeSecret,
|
||||
Secrets: sc.Secrets.DeleteVolumeSecret,
|
||||
},
|
||||
)
|
||||
Expect(err).To(HaveOccurred())
|
||||
@@ -472,8 +534,8 @@ var _ = DescribeSanity("Controller Service", func(sc *SanityContext) {
|
||||
_, err := c.DeleteVolume(
|
||||
context.Background(),
|
||||
&csi.DeleteVolumeRequest{
|
||||
VolumeId: "reallyfakevolumeid",
|
||||
ControllerDeleteSecrets: sc.Secrets.DeleteVolumeSecret,
|
||||
VolumeId: "reallyfakevolumeid",
|
||||
Secrets: sc.Secrets.DeleteVolumeSecret,
|
||||
},
|
||||
)
|
||||
Expect(err).NotTo(HaveOccurred())
|
||||
@@ -499,14 +561,15 @@ var _ = DescribeSanity("Controller Service", func(sc *SanityContext) {
|
||||
},
|
||||
},
|
||||
},
|
||||
ControllerCreateSecrets: sc.Secrets.CreateVolumeSecret,
|
||||
Secrets: sc.Secrets.CreateVolumeSecret,
|
||||
Parameters: sc.Config.TestVolumeParameters,
|
||||
},
|
||||
)
|
||||
Expect(err).NotTo(HaveOccurred())
|
||||
Expect(vol).NotTo(BeNil())
|
||||
Expect(vol.GetVolume()).NotTo(BeNil())
|
||||
Expect(vol.GetVolume().GetId()).NotTo(BeEmpty())
|
||||
cl.RegisterVolume(name, VolumeInfo{VolumeID: vol.GetVolume().GetId()})
|
||||
Expect(vol.GetVolume().GetVolumeId()).NotTo(BeEmpty())
|
||||
cl.RegisterVolume(name, VolumeInfo{VolumeID: vol.GetVolume().GetVolumeId()})
|
||||
|
||||
// Delete Volume
|
||||
By("deleting a volume")
|
||||
@@ -514,8 +577,8 @@ var _ = DescribeSanity("Controller Service", func(sc *SanityContext) {
|
||||
_, err = c.DeleteVolume(
|
||||
context.Background(),
|
||||
&csi.DeleteVolumeRequest{
|
||||
VolumeId: vol.GetVolume().GetId(),
|
||||
ControllerDeleteSecrets: sc.Secrets.DeleteVolumeSecret,
|
||||
VolumeId: vol.GetVolume().GetVolumeId(),
|
||||
Secrets: sc.Secrets.DeleteVolumeSecret,
|
||||
},
|
||||
)
|
||||
Expect(err).NotTo(HaveOccurred())
|
||||
@@ -570,21 +633,22 @@ var _ = DescribeSanity("Controller Service", func(sc *SanityContext) {
|
||||
},
|
||||
},
|
||||
},
|
||||
ControllerCreateSecrets: sc.Secrets.CreateVolumeSecret,
|
||||
Secrets: sc.Secrets.CreateVolumeSecret,
|
||||
Parameters: sc.Config.TestVolumeParameters,
|
||||
},
|
||||
)
|
||||
Expect(err).NotTo(HaveOccurred())
|
||||
Expect(vol).NotTo(BeNil())
|
||||
Expect(vol.GetVolume()).NotTo(BeNil())
|
||||
Expect(vol.GetVolume().GetId()).NotTo(BeEmpty())
|
||||
cl.RegisterVolume(name, VolumeInfo{VolumeID: vol.GetVolume().GetId()})
|
||||
Expect(vol.GetVolume().GetVolumeId()).NotTo(BeEmpty())
|
||||
cl.RegisterVolume(name, VolumeInfo{VolumeID: vol.GetVolume().GetVolumeId()})
|
||||
|
||||
// ValidateVolumeCapabilities
|
||||
By("validating volume capabilities")
|
||||
valivolcap, err := c.ValidateVolumeCapabilities(
|
||||
context.Background(),
|
||||
&csi.ValidateVolumeCapabilitiesRequest{
|
||||
VolumeId: vol.GetVolume().GetId(),
|
||||
VolumeId: vol.GetVolume().GetVolumeId(),
|
||||
VolumeCapabilities: []*csi.VolumeCapability{
|
||||
{
|
||||
AccessType: &csi.VolumeCapability_Mount{
|
||||
@@ -598,15 +662,20 @@ var _ = DescribeSanity("Controller Service", func(sc *SanityContext) {
|
||||
})
|
||||
Expect(err).NotTo(HaveOccurred())
|
||||
Expect(valivolcap).NotTo(BeNil())
|
||||
Expect(valivolcap.GetSupported()).To(BeTrue())
|
||||
|
||||
// If confirmation is provided then it is REQUIRED to provide
|
||||
// the volume capabilities
|
||||
if valivolcap.GetConfirmed() != nil {
|
||||
Expect(valivolcap.GetConfirmed().GetVolumeCapabilities()).NotTo(BeEmpty())
|
||||
}
|
||||
|
||||
By("cleaning up deleting the volume")
|
||||
|
||||
_, err = c.DeleteVolume(
|
||||
context.Background(),
|
||||
&csi.DeleteVolumeRequest{
|
||||
VolumeId: vol.GetVolume().GetId(),
|
||||
ControllerDeleteSecrets: sc.Secrets.DeleteVolumeSecret,
|
||||
VolumeId: vol.GetVolume().GetVolumeId(),
|
||||
Secrets: sc.Secrets.DeleteVolumeSecret,
|
||||
},
|
||||
)
|
||||
Expect(err).NotTo(HaveOccurred())
|
||||
@@ -651,7 +720,7 @@ var _ = DescribeSanity("Controller Service", func(sc *SanityContext) {
|
||||
_, err := c.ControllerPublishVolume(
|
||||
context.Background(),
|
||||
&csi.ControllerPublishVolumeRequest{
|
||||
ControllerPublishSecrets: sc.Secrets.ControllerPublishVolumeSecret,
|
||||
Secrets: sc.Secrets.ControllerPublishVolumeSecret,
|
||||
},
|
||||
)
|
||||
Expect(err).To(HaveOccurred())
|
||||
@@ -666,8 +735,8 @@ var _ = DescribeSanity("Controller Service", func(sc *SanityContext) {
|
||||
_, err := c.ControllerPublishVolume(
|
||||
context.Background(),
|
||||
&csi.ControllerPublishVolumeRequest{
|
||||
VolumeId: "id",
|
||||
ControllerPublishSecrets: sc.Secrets.ControllerPublishVolumeSecret,
|
||||
VolumeId: "id",
|
||||
Secrets: sc.Secrets.ControllerPublishVolumeSecret,
|
||||
},
|
||||
)
|
||||
Expect(err).To(HaveOccurred())
|
||||
@@ -684,7 +753,7 @@ var _ = DescribeSanity("Controller Service", func(sc *SanityContext) {
|
||||
&csi.ControllerPublishVolumeRequest{
|
||||
VolumeId: "id",
|
||||
NodeId: "fakenode",
|
||||
ControllerPublishSecrets: sc.Secrets.ControllerPublishVolumeSecret,
|
||||
Secrets: sc.Secrets.ControllerPublishVolumeSecret,
|
||||
},
|
||||
)
|
||||
Expect(err).To(HaveOccurred())
|
||||
@@ -714,19 +783,20 @@ var _ = DescribeSanity("Controller Service", func(sc *SanityContext) {
|
||||
},
|
||||
},
|
||||
},
|
||||
ControllerCreateSecrets: sc.Secrets.CreateVolumeSecret,
|
||||
Secrets: sc.Secrets.CreateVolumeSecret,
|
||||
Parameters: sc.Config.TestVolumeParameters,
|
||||
},
|
||||
)
|
||||
Expect(err).NotTo(HaveOccurred())
|
||||
Expect(vol).NotTo(BeNil())
|
||||
Expect(vol.GetVolume()).NotTo(BeNil())
|
||||
Expect(vol.GetVolume().GetId()).NotTo(BeEmpty())
|
||||
cl.RegisterVolume(name, VolumeInfo{VolumeID: vol.GetVolume().GetId()})
|
||||
Expect(vol.GetVolume().GetVolumeId()).NotTo(BeEmpty())
|
||||
cl.RegisterVolume(name, VolumeInfo{VolumeID: vol.GetVolume().GetVolumeId()})
|
||||
|
||||
By("getting a node id")
|
||||
nid, err := n.NodeGetId(
|
||||
nid, err := n.NodeGetInfo(
|
||||
context.Background(),
|
||||
&csi.NodeGetIdRequest{})
|
||||
&csi.NodeGetInfoRequest{})
|
||||
Expect(err).NotTo(HaveOccurred())
|
||||
Expect(nid).NotTo(BeNil())
|
||||
Expect(nid.GetNodeId()).NotTo(BeEmpty())
|
||||
@@ -737,7 +807,7 @@ var _ = DescribeSanity("Controller Service", func(sc *SanityContext) {
|
||||
conpubvol, err := c.ControllerPublishVolume(
|
||||
context.Background(),
|
||||
&csi.ControllerPublishVolumeRequest{
|
||||
VolumeId: vol.GetVolume().GetId(),
|
||||
VolumeId: vol.GetVolume().GetVolumeId(),
|
||||
NodeId: nid.GetNodeId(),
|
||||
VolumeCapability: &csi.VolumeCapability{
|
||||
AccessType: &csi.VolumeCapability_Mount{
|
||||
@@ -747,12 +817,12 @@ var _ = DescribeSanity("Controller Service", func(sc *SanityContext) {
|
||||
Mode: csi.VolumeCapability_AccessMode_SINGLE_NODE_WRITER,
|
||||
},
|
||||
},
|
||||
Readonly: false,
|
||||
ControllerPublishSecrets: sc.Secrets.ControllerPublishVolumeSecret,
|
||||
Readonly: false,
|
||||
Secrets: sc.Secrets.ControllerPublishVolumeSecret,
|
||||
},
|
||||
)
|
||||
Expect(err).NotTo(HaveOccurred())
|
||||
cl.RegisterVolume(name, VolumeInfo{VolumeID: vol.GetVolume().GetId(), NodeID: nid.GetNodeId()})
|
||||
cl.RegisterVolume(name, VolumeInfo{VolumeID: vol.GetVolume().GetVolumeId(), NodeID: nid.GetNodeId()})
|
||||
Expect(conpubvol).NotTo(BeNil())
|
||||
|
||||
By("cleaning up unpublishing the volume")
|
||||
@@ -760,10 +830,10 @@ var _ = DescribeSanity("Controller Service", func(sc *SanityContext) {
|
||||
conunpubvol, err := c.ControllerUnpublishVolume(
|
||||
context.Background(),
|
||||
&csi.ControllerUnpublishVolumeRequest{
|
||||
VolumeId: vol.GetVolume().GetId(),
|
||||
VolumeId: vol.GetVolume().GetVolumeId(),
|
||||
// NodeID is optional in ControllerUnpublishVolume
|
||||
NodeId: nid.GetNodeId(),
|
||||
ControllerUnpublishSecrets: sc.Secrets.ControllerUnpublishVolumeSecret,
|
||||
NodeId: nid.GetNodeId(),
|
||||
Secrets: sc.Secrets.ControllerUnpublishVolumeSecret,
|
||||
},
|
||||
)
|
||||
Expect(err).NotTo(HaveOccurred())
|
||||
@@ -774,8 +844,8 @@ var _ = DescribeSanity("Controller Service", func(sc *SanityContext) {
|
||||
_, err = c.DeleteVolume(
|
||||
context.Background(),
|
||||
&csi.DeleteVolumeRequest{
|
||||
VolumeId: vol.GetVolume().GetId(),
|
||||
ControllerDeleteSecrets: sc.Secrets.DeleteVolumeSecret,
|
||||
VolumeId: vol.GetVolume().GetVolumeId(),
|
||||
Secrets: sc.Secrets.DeleteVolumeSecret,
|
||||
},
|
||||
)
|
||||
Expect(err).NotTo(HaveOccurred())
|
||||
@@ -799,8 +869,8 @@ var _ = DescribeSanity("Controller Service", func(sc *SanityContext) {
|
||||
Mode: csi.VolumeCapability_AccessMode_SINGLE_NODE_WRITER,
|
||||
},
|
||||
},
|
||||
Readonly: false,
|
||||
ControllerPublishSecrets: sc.Secrets.ControllerPublishVolumeSecret,
|
||||
Readonly: false,
|
||||
Secrets: sc.Secrets.ControllerPublishVolumeSecret,
|
||||
},
|
||||
)
|
||||
Expect(err).To(HaveOccurred())
|
||||
@@ -831,14 +901,15 @@ var _ = DescribeSanity("Controller Service", func(sc *SanityContext) {
|
||||
},
|
||||
},
|
||||
},
|
||||
ControllerCreateSecrets: sc.Secrets.CreateVolumeSecret,
|
||||
Secrets: sc.Secrets.CreateVolumeSecret,
|
||||
Parameters: sc.Config.TestVolumeParameters,
|
||||
},
|
||||
)
|
||||
Expect(err).NotTo(HaveOccurred())
|
||||
Expect(vol).NotTo(BeNil())
|
||||
Expect(vol.GetVolume()).NotTo(BeNil())
|
||||
Expect(vol.GetVolume().GetId()).NotTo(BeEmpty())
|
||||
cl.RegisterVolume(name, VolumeInfo{VolumeID: vol.GetVolume().GetId()})
|
||||
Expect(vol.GetVolume().GetVolumeId()).NotTo(BeEmpty())
|
||||
cl.RegisterVolume(name, VolumeInfo{VolumeID: vol.GetVolume().GetVolumeId()})
|
||||
|
||||
// ControllerPublishVolume
|
||||
By("calling controllerpublish on that volume")
|
||||
@@ -846,7 +917,7 @@ var _ = DescribeSanity("Controller Service", func(sc *SanityContext) {
|
||||
conpubvol, err := c.ControllerPublishVolume(
|
||||
context.Background(),
|
||||
&csi.ControllerPublishVolumeRequest{
|
||||
VolumeId: vol.GetVolume().GetId(),
|
||||
VolumeId: vol.GetVolume().GetVolumeId(),
|
||||
NodeId: "some-fake-node-id",
|
||||
VolumeCapability: &csi.VolumeCapability{
|
||||
AccessType: &csi.VolumeCapability_Mount{
|
||||
@@ -856,8 +927,8 @@ var _ = DescribeSanity("Controller Service", func(sc *SanityContext) {
|
||||
Mode: csi.VolumeCapability_AccessMode_SINGLE_NODE_WRITER,
|
||||
},
|
||||
},
|
||||
Readonly: false,
|
||||
ControllerPublishSecrets: sc.Secrets.ControllerPublishVolumeSecret,
|
||||
Readonly: false,
|
||||
Secrets: sc.Secrets.ControllerPublishVolumeSecret,
|
||||
},
|
||||
)
|
||||
Expect(err).To(HaveOccurred())
|
||||
@@ -872,8 +943,8 @@ var _ = DescribeSanity("Controller Service", func(sc *SanityContext) {
|
||||
_, err = c.DeleteVolume(
|
||||
context.Background(),
|
||||
&csi.DeleteVolumeRequest{
|
||||
VolumeId: vol.GetVolume().GetId(),
|
||||
ControllerDeleteSecrets: sc.Secrets.DeleteVolumeSecret,
|
||||
VolumeId: vol.GetVolume().GetVolumeId(),
|
||||
Secrets: sc.Secrets.DeleteVolumeSecret,
|
||||
},
|
||||
)
|
||||
Expect(err).NotTo(HaveOccurred())
|
||||
@@ -900,19 +971,20 @@ var _ = DescribeSanity("Controller Service", func(sc *SanityContext) {
|
||||
},
|
||||
},
|
||||
},
|
||||
ControllerCreateSecrets: sc.Secrets.CreateVolumeSecret,
|
||||
Secrets: sc.Secrets.CreateVolumeSecret,
|
||||
Parameters: sc.Config.TestVolumeParameters,
|
||||
},
|
||||
)
|
||||
Expect(err).NotTo(HaveOccurred())
|
||||
Expect(vol).NotTo(BeNil())
|
||||
Expect(vol.GetVolume()).NotTo(BeNil())
|
||||
Expect(vol.GetVolume().GetId()).NotTo(BeEmpty())
|
||||
cl.RegisterVolume(name, VolumeInfo{VolumeID: vol.GetVolume().GetId()})
|
||||
Expect(vol.GetVolume().GetVolumeId()).NotTo(BeEmpty())
|
||||
cl.RegisterVolume(name, VolumeInfo{VolumeID: vol.GetVolume().GetVolumeId()})
|
||||
|
||||
By("getting a node id")
|
||||
nid, err := n.NodeGetId(
|
||||
nid, err := n.NodeGetInfo(
|
||||
context.Background(),
|
||||
&csi.NodeGetIdRequest{})
|
||||
&csi.NodeGetInfoRequest{})
|
||||
Expect(err).NotTo(HaveOccurred())
|
||||
Expect(nid).NotTo(BeNil())
|
||||
Expect(nid.GetNodeId()).NotTo(BeEmpty())
|
||||
@@ -921,7 +993,7 @@ var _ = DescribeSanity("Controller Service", func(sc *SanityContext) {
|
||||
By("calling controllerpublish on that volume")
|
||||
|
||||
pubReq := &csi.ControllerPublishVolumeRequest{
|
||||
VolumeId: vol.GetVolume().GetId(),
|
||||
VolumeId: vol.GetVolume().GetVolumeId(),
|
||||
NodeId: nid.GetNodeId(),
|
||||
VolumeCapability: &csi.VolumeCapability{
|
||||
AccessType: &csi.VolumeCapability_Mount{
|
||||
@@ -931,8 +1003,8 @@ var _ = DescribeSanity("Controller Service", func(sc *SanityContext) {
|
||||
Mode: csi.VolumeCapability_AccessMode_SINGLE_NODE_WRITER,
|
||||
},
|
||||
},
|
||||
Readonly: false,
|
||||
ControllerPublishSecrets: sc.Secrets.ControllerPublishVolumeSecret,
|
||||
Readonly: false,
|
||||
Secrets: sc.Secrets.ControllerPublishVolumeSecret,
|
||||
}
|
||||
|
||||
conpubvol, err := c.ControllerPublishVolume(context.Background(), pubReq)
|
||||
@@ -955,10 +1027,10 @@ var _ = DescribeSanity("Controller Service", func(sc *SanityContext) {
|
||||
conunpubvol, err := c.ControllerUnpublishVolume(
|
||||
context.Background(),
|
||||
&csi.ControllerUnpublishVolumeRequest{
|
||||
VolumeId: vol.GetVolume().GetId(),
|
||||
VolumeId: vol.GetVolume().GetVolumeId(),
|
||||
// NodeID is optional in ControllerUnpublishVolume
|
||||
NodeId: nid.GetNodeId(),
|
||||
ControllerUnpublishSecrets: sc.Secrets.ControllerUnpublishVolumeSecret,
|
||||
NodeId: nid.GetNodeId(),
|
||||
Secrets: sc.Secrets.ControllerUnpublishVolumeSecret,
|
||||
},
|
||||
)
|
||||
|
||||
@@ -970,8 +1042,8 @@ var _ = DescribeSanity("Controller Service", func(sc *SanityContext) {
|
||||
_, err = c.DeleteVolume(
|
||||
context.Background(),
|
||||
&csi.DeleteVolumeRequest{
|
||||
VolumeId: vol.GetVolume().GetId(),
|
||||
ControllerDeleteSecrets: sc.Secrets.DeleteVolumeSecret,
|
||||
VolumeId: vol.GetVolume().GetVolumeId(),
|
||||
Secrets: sc.Secrets.DeleteVolumeSecret,
|
||||
},
|
||||
)
|
||||
Expect(err).NotTo(HaveOccurred())
|
||||
@@ -991,7 +1063,7 @@ var _ = DescribeSanity("Controller Service", func(sc *SanityContext) {
|
||||
_, err := c.ControllerUnpublishVolume(
|
||||
context.Background(),
|
||||
&csi.ControllerUnpublishVolumeRequest{
|
||||
ControllerUnpublishSecrets: sc.Secrets.ControllerUnpublishVolumeSecret,
|
||||
Secrets: sc.Secrets.ControllerUnpublishVolumeSecret,
|
||||
},
|
||||
)
|
||||
Expect(err).To(HaveOccurred())
|
||||
@@ -1021,19 +1093,20 @@ var _ = DescribeSanity("Controller Service", func(sc *SanityContext) {
|
||||
},
|
||||
},
|
||||
},
|
||||
ControllerCreateSecrets: sc.Secrets.CreateVolumeSecret,
|
||||
Secrets: sc.Secrets.CreateVolumeSecret,
|
||||
Parameters: sc.Config.TestVolumeParameters,
|
||||
},
|
||||
)
|
||||
Expect(err).NotTo(HaveOccurred())
|
||||
Expect(vol).NotTo(BeNil())
|
||||
Expect(vol.GetVolume()).NotTo(BeNil())
|
||||
Expect(vol.GetVolume().GetId()).NotTo(BeEmpty())
|
||||
cl.RegisterVolume(name, VolumeInfo{VolumeID: vol.GetVolume().GetId()})
|
||||
Expect(vol.GetVolume().GetVolumeId()).NotTo(BeEmpty())
|
||||
cl.RegisterVolume(name, VolumeInfo{VolumeID: vol.GetVolume().GetVolumeId()})
|
||||
|
||||
By("getting a node id")
|
||||
nid, err := n.NodeGetId(
|
||||
nid, err := n.NodeGetInfo(
|
||||
context.Background(),
|
||||
&csi.NodeGetIdRequest{})
|
||||
&csi.NodeGetInfoRequest{})
|
||||
Expect(err).NotTo(HaveOccurred())
|
||||
Expect(nid).NotTo(BeNil())
|
||||
Expect(nid.GetNodeId()).NotTo(BeEmpty())
|
||||
@@ -1044,7 +1117,7 @@ var _ = DescribeSanity("Controller Service", func(sc *SanityContext) {
|
||||
conpubvol, err := c.ControllerPublishVolume(
|
||||
context.Background(),
|
||||
&csi.ControllerPublishVolumeRequest{
|
||||
VolumeId: vol.GetVolume().GetId(),
|
||||
VolumeId: vol.GetVolume().GetVolumeId(),
|
||||
NodeId: nid.GetNodeId(),
|
||||
VolumeCapability: &csi.VolumeCapability{
|
||||
AccessType: &csi.VolumeCapability_Mount{
|
||||
@@ -1054,12 +1127,12 @@ var _ = DescribeSanity("Controller Service", func(sc *SanityContext) {
|
||||
Mode: csi.VolumeCapability_AccessMode_SINGLE_NODE_WRITER,
|
||||
},
|
||||
},
|
||||
Readonly: false,
|
||||
ControllerPublishSecrets: sc.Secrets.ControllerPublishVolumeSecret,
|
||||
Readonly: false,
|
||||
Secrets: sc.Secrets.ControllerPublishVolumeSecret,
|
||||
},
|
||||
)
|
||||
Expect(err).NotTo(HaveOccurred())
|
||||
cl.RegisterVolume(name, VolumeInfo{VolumeID: vol.GetVolume().GetId(), NodeID: nid.GetNodeId()})
|
||||
cl.RegisterVolume(name, VolumeInfo{VolumeID: vol.GetVolume().GetVolumeId(), NodeID: nid.GetNodeId()})
|
||||
Expect(conpubvol).NotTo(BeNil())
|
||||
|
||||
// ControllerUnpublishVolume
|
||||
@@ -1068,10 +1141,10 @@ var _ = DescribeSanity("Controller Service", func(sc *SanityContext) {
|
||||
conunpubvol, err := c.ControllerUnpublishVolume(
|
||||
context.Background(),
|
||||
&csi.ControllerUnpublishVolumeRequest{
|
||||
VolumeId: vol.GetVolume().GetId(),
|
||||
VolumeId: vol.GetVolume().GetVolumeId(),
|
||||
// NodeID is optional in ControllerUnpublishVolume
|
||||
NodeId: nid.GetNodeId(),
|
||||
ControllerUnpublishSecrets: sc.Secrets.ControllerUnpublishVolumeSecret,
|
||||
NodeId: nid.GetNodeId(),
|
||||
Secrets: sc.Secrets.ControllerUnpublishVolumeSecret,
|
||||
},
|
||||
)
|
||||
Expect(err).NotTo(HaveOccurred())
|
||||
@@ -1082,8 +1155,8 @@ var _ = DescribeSanity("Controller Service", func(sc *SanityContext) {
|
||||
_, err = c.DeleteVolume(
|
||||
context.Background(),
|
||||
&csi.DeleteVolumeRequest{
|
||||
VolumeId: vol.GetVolume().GetId(),
|
||||
ControllerDeleteSecrets: sc.Secrets.DeleteVolumeSecret,
|
||||
VolumeId: vol.GetVolume().GetVolumeId(),
|
||||
Secrets: sc.Secrets.DeleteVolumeSecret,
|
||||
},
|
||||
)
|
||||
Expect(err).NotTo(HaveOccurred())
|
||||
@@ -1125,28 +1198,28 @@ var _ = DescribeSanity("ListSnapshots [Controller Server]", func(sc *SanityConte
|
||||
Expect(err).NotTo(HaveOccurred())
|
||||
|
||||
By("creating a snapshot")
|
||||
snapshotReq := MakeCreateSnapshotReq(sc, "listSnapshots-snapshot-1", volume.GetVolume().GetId(), nil)
|
||||
snapshotReq := MakeCreateSnapshotReq(sc, "listSnapshots-snapshot-1", volume.GetVolume().GetVolumeId(), nil)
|
||||
snapshot, err := c.CreateSnapshot(context.Background(), snapshotReq)
|
||||
Expect(err).NotTo(HaveOccurred())
|
||||
|
||||
snapshots, err := c.ListSnapshots(
|
||||
context.Background(),
|
||||
&csi.ListSnapshotsRequest{SnapshotId: snapshot.GetSnapshot().GetId()})
|
||||
&csi.ListSnapshotsRequest{SnapshotId: snapshot.GetSnapshot().GetSnapshotId()})
|
||||
Expect(err).NotTo(HaveOccurred())
|
||||
Expect(snapshots).NotTo(BeNil())
|
||||
Expect(len(snapshots.GetEntries())).To(BeNumerically("==", 1))
|
||||
verifySnapshotInfo(snapshots.GetEntries()[0].GetSnapshot())
|
||||
Expect(snapshots.GetEntries()[0].GetSnapshot().GetId()).To(Equal(snapshot.GetSnapshot().GetId()))
|
||||
|
||||
By("cleaning up deleting the volume")
|
||||
delVolReq := MakeDeleteVolumeReq(sc, volume.GetVolume().GetId())
|
||||
_, err = c.DeleteVolume(context.Background(), delVolReq)
|
||||
Expect(err).NotTo(HaveOccurred())
|
||||
Expect(snapshots.GetEntries()[0].GetSnapshot().GetSnapshotId()).To(Equal(snapshot.GetSnapshot().GetSnapshotId()))
|
||||
|
||||
By("cleaning up deleting the snapshot")
|
||||
delSnapReq := MakeDeleteSnapshotReq(sc, snapshot.GetSnapshot().GetId())
|
||||
delSnapReq := MakeDeleteSnapshotReq(sc, snapshot.GetSnapshot().GetSnapshotId())
|
||||
_, err = c.DeleteSnapshot(context.Background(), delSnapReq)
|
||||
Expect(err).NotTo(HaveOccurred())
|
||||
|
||||
By("cleaning up deleting the volume")
|
||||
delVolReq := MakeDeleteVolumeReq(sc, volume.GetVolume().GetVolumeId())
|
||||
_, err = c.DeleteVolume(context.Background(), delVolReq)
|
||||
Expect(err).NotTo(HaveOccurred())
|
||||
})
|
||||
|
||||
It("should return empty when the specify snapshot id is not exist", func() {
|
||||
@@ -1167,7 +1240,7 @@ var _ = DescribeSanity("ListSnapshots [Controller Server]", func(sc *SanityConte
|
||||
Expect(err).NotTo(HaveOccurred())
|
||||
|
||||
By("creating a snapshot")
|
||||
snapshotReq := MakeCreateSnapshotReq(sc, "listSnapshots-snapshot-2", volume.GetVolume().GetId(), nil)
|
||||
snapshotReq := MakeCreateSnapshotReq(sc, "listSnapshots-snapshot-2", volume.GetVolume().GetVolumeId(), nil)
|
||||
snapshot, err := c.CreateSnapshot(context.Background(), snapshotReq)
|
||||
Expect(err).NotTo(HaveOccurred())
|
||||
|
||||
@@ -1182,12 +1255,12 @@ var _ = DescribeSanity("ListSnapshots [Controller Server]", func(sc *SanityConte
|
||||
}
|
||||
|
||||
By("cleaning up deleting the snapshot")
|
||||
delSnapReq := MakeDeleteSnapshotReq(sc, snapshot.GetSnapshot().GetId())
|
||||
delSnapReq := MakeDeleteSnapshotReq(sc, snapshot.GetSnapshot().GetSnapshotId())
|
||||
_, err = c.DeleteSnapshot(context.Background(), delSnapReq)
|
||||
Expect(err).NotTo(HaveOccurred())
|
||||
|
||||
By("cleaning up deleting the volume")
|
||||
delVolReq := MakeDeleteVolumeReq(sc, volume.GetVolume().GetId())
|
||||
delVolReq := MakeDeleteVolumeReq(sc, volume.GetVolume().GetVolumeId())
|
||||
_, err = c.DeleteVolume(context.Background(), delVolReq)
|
||||
Expect(err).NotTo(HaveOccurred())
|
||||
})
|
||||
@@ -1202,46 +1275,6 @@ var _ = DescribeSanity("ListSnapshots [Controller Server]", func(sc *SanityConte
|
||||
Expect(snapshots.GetEntries()).To(BeEmpty())
|
||||
})
|
||||
|
||||
It("should fail when an invalid starting_token is passed", func() {
|
||||
vols, err := c.ListSnapshots(
|
||||
context.Background(),
|
||||
&csi.ListSnapshotsRequest{
|
||||
StartingToken: "invalid-token",
|
||||
},
|
||||
)
|
||||
Expect(err).To(HaveOccurred())
|
||||
Expect(vols).To(BeNil())
|
||||
|
||||
serverError, ok := status.FromError(err)
|
||||
Expect(ok).To(BeTrue())
|
||||
Expect(serverError.Code()).To(Equal(codes.Aborted))
|
||||
})
|
||||
|
||||
It("should fail when the starting_token is greater than total number of snapshots", func() {
|
||||
// Get total number of snapshots.
|
||||
snapshots, err := c.ListSnapshots(
|
||||
context.Background(),
|
||||
&csi.ListSnapshotsRequest{})
|
||||
Expect(err).NotTo(HaveOccurred())
|
||||
Expect(snapshots).NotTo(BeNil())
|
||||
|
||||
totalSnapshots := len(snapshots.GetEntries())
|
||||
|
||||
// Send starting_token that is greater than the total number of snapshots.
|
||||
snapshots, err = c.ListSnapshots(
|
||||
context.Background(),
|
||||
&csi.ListSnapshotsRequest{
|
||||
StartingToken: strconv.Itoa(totalSnapshots + 5),
|
||||
},
|
||||
)
|
||||
Expect(err).To(HaveOccurred())
|
||||
Expect(snapshots).To(BeNil())
|
||||
|
||||
serverError, ok := status.FromError(err)
|
||||
Expect(ok).To(BeTrue())
|
||||
Expect(serverError.Code()).To(Equal(codes.Aborted))
|
||||
})
|
||||
|
||||
It("check the presence of new snapshots in the snapshot list", func() {
|
||||
// List Snapshots before creating new snapshots.
|
||||
snapshots, err := c.ListSnapshots(
|
||||
@@ -1258,7 +1291,7 @@ var _ = DescribeSanity("ListSnapshots [Controller Server]", func(sc *SanityConte
|
||||
Expect(err).NotTo(HaveOccurred())
|
||||
|
||||
By("creating a snapshot")
|
||||
snapReq := MakeCreateSnapshotReq(sc, "listSnapshots-snapshot-3", volume.GetVolume().GetId(), nil)
|
||||
snapReq := MakeCreateSnapshotReq(sc, "listSnapshots-snapshot-3", volume.GetVolume().GetVolumeId(), nil)
|
||||
snapshot, err := c.CreateSnapshot(context.Background(), snapReq)
|
||||
Expect(err).NotTo(HaveOccurred())
|
||||
Expect(snapshot).NotTo(BeNil())
|
||||
@@ -1272,12 +1305,12 @@ var _ = DescribeSanity("ListSnapshots [Controller Server]", func(sc *SanityConte
|
||||
Expect(len(snapshots.GetEntries())).To(Equal(totalSnapshots + 1))
|
||||
|
||||
By("cleaning up deleting the snapshot")
|
||||
delSnapReq := MakeDeleteSnapshotReq(sc, snapshot.GetSnapshot().GetId())
|
||||
delSnapReq := MakeDeleteSnapshotReq(sc, snapshot.GetSnapshot().GetSnapshotId())
|
||||
_, err = c.DeleteSnapshot(context.Background(), delSnapReq)
|
||||
Expect(err).NotTo(HaveOccurred())
|
||||
|
||||
By("cleaning up deleting the volume")
|
||||
delVolReq := MakeDeleteVolumeReq(sc, volume.GetVolume().GetId())
|
||||
delVolReq := MakeDeleteVolumeReq(sc, volume.GetVolume().GetVolumeId())
|
||||
_, err = c.DeleteVolume(context.Background(), delVolReq)
|
||||
Expect(err).NotTo(HaveOccurred())
|
||||
|
||||
@@ -1326,7 +1359,7 @@ var _ = DescribeSanity("ListSnapshots [Controller Server]", func(sc *SanityConte
|
||||
Expect(volume).NotTo(BeNil())
|
||||
createVols = append(createVols, volume.GetVolume())
|
||||
|
||||
snapReq := MakeCreateSnapshotReq(sc, "snapshot"+strconv.Itoa(i), volume.GetVolume().GetId(), nil)
|
||||
snapReq := MakeCreateSnapshotReq(sc, "snapshot"+strconv.Itoa(i), volume.GetVolume().GetVolumeId(), nil)
|
||||
snapshot, err := c.CreateSnapshot(context.Background(), snapReq)
|
||||
Expect(err).NotTo(HaveOccurred())
|
||||
Expect(snapshot).NotTo(BeNil())
|
||||
@@ -1349,7 +1382,6 @@ var _ = DescribeSanity("ListSnapshots [Controller Server]", func(sc *SanityConte
|
||||
|
||||
nextToken := snapshots.GetNextToken()
|
||||
|
||||
Expect(nextToken).To(Equal(strconv.Itoa(maxEntries)))
|
||||
Expect(len(snapshots.GetEntries())).To(Equal(maxEntries))
|
||||
|
||||
// Request list snapshots with starting_token and no max entries.
|
||||
@@ -1369,7 +1401,7 @@ var _ = DescribeSanity("ListSnapshots [Controller Server]", func(sc *SanityConte
|
||||
By("cleaning up deleting the snapshots")
|
||||
|
||||
for _, snap := range createSnapshots {
|
||||
delSnapReq := MakeDeleteSnapshotReq(sc, snap.GetId())
|
||||
delSnapReq := MakeDeleteSnapshotReq(sc, snap.GetSnapshotId())
|
||||
_, err = c.DeleteSnapshot(context.Background(), delSnapReq)
|
||||
Expect(err).NotTo(HaveOccurred())
|
||||
}
|
||||
@@ -1377,7 +1409,7 @@ var _ = DescribeSanity("ListSnapshots [Controller Server]", func(sc *SanityConte
|
||||
By("cleaning up deleting the volumes")
|
||||
|
||||
for _, vol := range createVols {
|
||||
delVolReq := MakeDeleteVolumeReq(sc, vol.GetId())
|
||||
delVolReq := MakeDeleteVolumeReq(sc, vol.GetVolumeId())
|
||||
_, err = c.DeleteVolume(context.Background(), delVolReq)
|
||||
Expect(err).NotTo(HaveOccurred())
|
||||
}
|
||||
@@ -1404,7 +1436,7 @@ var _ = DescribeSanity("DeleteSnapshot [Controller Server]", func(sc *SanityCont
|
||||
req := &csi.DeleteSnapshotRequest{}
|
||||
|
||||
if sc.Secrets != nil {
|
||||
req.DeleteSnapshotSecrets = sc.Secrets.DeleteSnapshotSecret
|
||||
req.Secrets = sc.Secrets.DeleteSnapshotSecret
|
||||
}
|
||||
|
||||
_, err := c.DeleteSnapshot(context.Background(), req)
|
||||
@@ -1431,19 +1463,19 @@ var _ = DescribeSanity("DeleteSnapshot [Controller Server]", func(sc *SanityCont
|
||||
|
||||
// Create Snapshot First
|
||||
By("creating a snapshot")
|
||||
snapshotReq := MakeCreateSnapshotReq(sc, "DeleteSnapshot-snapshot-1", volume.GetVolume().GetId(), nil)
|
||||
snapshotReq := MakeCreateSnapshotReq(sc, "DeleteSnapshot-snapshot-1", volume.GetVolume().GetVolumeId(), nil)
|
||||
snapshot, err := c.CreateSnapshot(context.Background(), snapshotReq)
|
||||
Expect(err).NotTo(HaveOccurred())
|
||||
Expect(snapshot).NotTo(BeNil())
|
||||
verifySnapshotInfo(snapshot.GetSnapshot())
|
||||
|
||||
By("cleaning up deleting the snapshot")
|
||||
delSnapReq := MakeDeleteSnapshotReq(sc, snapshot.GetSnapshot().GetId())
|
||||
delSnapReq := MakeDeleteSnapshotReq(sc, snapshot.GetSnapshot().GetSnapshotId())
|
||||
_, err = c.DeleteSnapshot(context.Background(), delSnapReq)
|
||||
Expect(err).NotTo(HaveOccurred())
|
||||
|
||||
By("cleaning up deleting the volume")
|
||||
delVolReq := MakeDeleteVolumeReq(sc, volume.GetVolume().GetId())
|
||||
delVolReq := MakeDeleteVolumeReq(sc, volume.GetVolume().GetVolumeId())
|
||||
_, err = c.DeleteVolume(context.Background(), delVolReq)
|
||||
Expect(err).NotTo(HaveOccurred())
|
||||
})
|
||||
@@ -1469,7 +1501,7 @@ var _ = DescribeSanity("CreateSnapshot [Controller Server]", func(sc *SanityCont
|
||||
}
|
||||
|
||||
if sc.Secrets != nil {
|
||||
req.CreateSnapshotSecrets = sc.Secrets.CreateSnapshotSecret
|
||||
req.Secrets = sc.Secrets.CreateSnapshotSecret
|
||||
}
|
||||
|
||||
_, err := c.CreateSnapshot(context.Background(), req)
|
||||
@@ -1486,7 +1518,7 @@ var _ = DescribeSanity("CreateSnapshot [Controller Server]", func(sc *SanityCont
|
||||
}
|
||||
|
||||
if sc.Secrets != nil {
|
||||
req.CreateSnapshotSecrets = sc.Secrets.CreateSnapshotSecret
|
||||
req.Secrets = sc.Secrets.CreateSnapshotSecret
|
||||
}
|
||||
|
||||
_, err := c.CreateSnapshot(context.Background(), req)
|
||||
@@ -1504,7 +1536,7 @@ var _ = DescribeSanity("CreateSnapshot [Controller Server]", func(sc *SanityCont
|
||||
Expect(err).NotTo(HaveOccurred())
|
||||
|
||||
By("creating a snapshot")
|
||||
snapReq1 := MakeCreateSnapshotReq(sc, "CreateSnapshot-snapshot-1", volume.GetVolume().GetId(), nil)
|
||||
snapReq1 := MakeCreateSnapshotReq(sc, "CreateSnapshot-snapshot-1", volume.GetVolume().GetVolumeId(), nil)
|
||||
snap1, err := c.CreateSnapshot(context.Background(), snapReq1)
|
||||
Expect(err).NotTo(HaveOccurred())
|
||||
Expect(snap1).NotTo(BeNil())
|
||||
@@ -1516,12 +1548,12 @@ var _ = DescribeSanity("CreateSnapshot [Controller Server]", func(sc *SanityCont
|
||||
verifySnapshotInfo(snap2.GetSnapshot())
|
||||
|
||||
By("cleaning up deleting the snapshot")
|
||||
delSnapReq := MakeDeleteSnapshotReq(sc, snap1.GetSnapshot().GetId())
|
||||
delSnapReq := MakeDeleteSnapshotReq(sc, snap1.GetSnapshot().GetSnapshotId())
|
||||
_, err = c.DeleteSnapshot(context.Background(), delSnapReq)
|
||||
Expect(err).NotTo(HaveOccurred())
|
||||
|
||||
By("cleaning up deleting the volume")
|
||||
delVolReq := MakeDeleteVolumeReq(sc, volume.GetVolume().GetId())
|
||||
delVolReq := MakeDeleteVolumeReq(sc, volume.GetVolume().GetVolumeId())
|
||||
_, err = c.DeleteVolume(context.Background(), delVolReq)
|
||||
Expect(err).NotTo(HaveOccurred())
|
||||
})
|
||||
@@ -1533,14 +1565,17 @@ var _ = DescribeSanity("CreateSnapshot [Controller Server]", func(sc *SanityCont
|
||||
Expect(err).ToNot(HaveOccurred())
|
||||
|
||||
By("creating a snapshot with the created volume source id")
|
||||
req1 := MakeCreateSnapshotReq(sc, "CreateSnapshot-snapshot-2", volume.GetVolume().GetId(), nil)
|
||||
req1 := MakeCreateSnapshotReq(sc, "CreateSnapshot-snapshot-2", volume.GetVolume().GetVolumeId(), nil)
|
||||
snap1, err := c.CreateSnapshot(context.Background(), req1)
|
||||
Expect(err).NotTo(HaveOccurred())
|
||||
Expect(snap1).NotTo(BeNil())
|
||||
verifySnapshotInfo(snap1.GetSnapshot())
|
||||
|
||||
volume2, err := c.CreateVolume(context.Background(), MakeCreateVolumeReq(sc, "CreateSnapshot-volume-3"))
|
||||
Expect(err).ToNot(HaveOccurred())
|
||||
|
||||
By("creating a snapshot with the same name but different volume source id")
|
||||
req2 := MakeCreateSnapshotReq(sc, "CreateSnapshot-snapshot-2", "test001", nil)
|
||||
req2 := MakeCreateSnapshotReq(sc, "CreateSnapshot-snapshot-2", volume2.GetVolume().GetVolumeId(), nil)
|
||||
_, err = c.CreateSnapshot(context.Background(), req2)
|
||||
Expect(err).To(HaveOccurred())
|
||||
serverError, ok := status.FromError(err)
|
||||
@@ -1548,12 +1583,48 @@ var _ = DescribeSanity("CreateSnapshot [Controller Server]", func(sc *SanityCont
|
||||
Expect(serverError.Code()).To(Equal(codes.AlreadyExists))
|
||||
|
||||
By("cleaning up deleting the snapshot")
|
||||
delSnapReq := MakeDeleteSnapshotReq(sc, snap1.GetSnapshot().GetId())
|
||||
delSnapReq := MakeDeleteSnapshotReq(sc, snap1.GetSnapshot().GetSnapshotId())
|
||||
_, err = c.DeleteSnapshot(context.Background(), delSnapReq)
|
||||
Expect(err).NotTo(HaveOccurred())
|
||||
|
||||
By("cleaning up deleting the volume")
|
||||
delVolReq := MakeDeleteVolumeReq(sc, volume.GetVolume().GetId())
|
||||
delVolReq := MakeDeleteVolumeReq(sc, volume.GetVolume().GetVolumeId())
|
||||
_, err = c.DeleteVolume(context.Background(), delVolReq)
|
||||
Expect(err).NotTo(HaveOccurred())
|
||||
})
|
||||
|
||||
It("should not fail when creating snapshot with maximum-length name", func() {
|
||||
|
||||
By("creating a volume")
|
||||
volReq := MakeCreateVolumeReq(sc, "CreateSnapshot-volume-3")
|
||||
volume, err := c.CreateVolume(context.Background(), volReq)
|
||||
Expect(err).NotTo(HaveOccurred())
|
||||
|
||||
nameBytes := make([]byte, MaxNameLength)
|
||||
for i := 0; i < MaxNameLength; i++ {
|
||||
nameBytes[i] = 'a'
|
||||
}
|
||||
name := string(nameBytes)
|
||||
|
||||
By("creating a snapshot")
|
||||
snapReq1 := MakeCreateSnapshotReq(sc, name, volume.GetVolume().GetVolumeId(), nil)
|
||||
snap1, err := c.CreateSnapshot(context.Background(), snapReq1)
|
||||
Expect(err).NotTo(HaveOccurred())
|
||||
Expect(snap1).NotTo(BeNil())
|
||||
verifySnapshotInfo(snap1.GetSnapshot())
|
||||
|
||||
snap2, err := c.CreateSnapshot(context.Background(), snapReq1)
|
||||
Expect(err).NotTo(HaveOccurred())
|
||||
Expect(snap2).NotTo(BeNil())
|
||||
verifySnapshotInfo(snap2.GetSnapshot())
|
||||
|
||||
By("cleaning up deleting the snapshot")
|
||||
delSnapReq := MakeDeleteSnapshotReq(sc, snap1.GetSnapshot().GetSnapshotId())
|
||||
_, err = c.DeleteSnapshot(context.Background(), delSnapReq)
|
||||
Expect(err).NotTo(HaveOccurred())
|
||||
|
||||
By("cleaning up deleting the volume")
|
||||
delVolReq := MakeDeleteVolumeReq(sc, volume.GetVolume().GetVolumeId())
|
||||
_, err = c.DeleteVolume(context.Background(), delVolReq)
|
||||
Expect(err).NotTo(HaveOccurred())
|
||||
})
|
||||
@@ -1578,10 +1649,11 @@ func MakeCreateVolumeReq(sc *SanityContext, name string) *csi.CreateVolumeReques
|
||||
RequiredBytes: size1,
|
||||
LimitBytes: size1,
|
||||
},
|
||||
Parameters: sc.Config.TestVolumeParameters,
|
||||
}
|
||||
|
||||
if sc.Secrets != nil {
|
||||
req.ControllerCreateSecrets = sc.Secrets.CreateVolumeSecret
|
||||
req.Secrets = sc.Secrets.CreateVolumeSecret
|
||||
}
|
||||
|
||||
return req
|
||||
@@ -1595,7 +1667,7 @@ func MakeCreateSnapshotReq(sc *SanityContext, name, sourceVolumeId string, param
|
||||
}
|
||||
|
||||
if sc.Secrets != nil {
|
||||
req.CreateSnapshotSecrets = sc.Secrets.CreateSnapshotSecret
|
||||
req.Secrets = sc.Secrets.CreateSnapshotSecret
|
||||
}
|
||||
|
||||
return req
|
||||
@@ -1607,7 +1679,7 @@ func MakeDeleteSnapshotReq(sc *SanityContext, id string) *csi.DeleteSnapshotRequ
|
||||
}
|
||||
|
||||
if sc.Secrets != nil {
|
||||
delSnapReq.DeleteSnapshotSecrets = sc.Secrets.DeleteSnapshotSecret
|
||||
delSnapReq.Secrets = sc.Secrets.DeleteSnapshotSecret
|
||||
}
|
||||
|
||||
return delSnapReq
|
||||
@@ -1619,7 +1691,7 @@ func MakeDeleteVolumeReq(sc *SanityContext, id string) *csi.DeleteVolumeRequest
|
||||
}
|
||||
|
||||
if sc.Secrets != nil {
|
||||
delVolReq.ControllerDeleteSecrets = sc.Secrets.DeleteVolumeSecret
|
||||
delVolReq.Secrets = sc.Secrets.DeleteVolumeSecret
|
||||
}
|
||||
|
||||
return delVolReq
|
||||
|
4
vendor/github.com/kubernetes-csi/csi-test/pkg/sanity/identity.go
generated
vendored
4
vendor/github.com/kubernetes-csi/csi-test/pkg/sanity/identity.go
generated
vendored
@@ -24,7 +24,7 @@ import (
|
||||
"google.golang.org/grpc/codes"
|
||||
"google.golang.org/grpc/status"
|
||||
|
||||
"github.com/container-storage-interface/spec/lib/go/csi/v0"
|
||||
"github.com/container-storage-interface/spec/lib/go/csi"
|
||||
|
||||
. "github.com/onsi/ginkgo"
|
||||
. "github.com/onsi/gomega"
|
||||
@@ -51,7 +51,7 @@ var _ = DescribeSanity("Identity Service", func(sc *SanityContext) {
|
||||
for _, cap := range res.GetCapabilities() {
|
||||
switch cap.GetService().GetType() {
|
||||
case csi.PluginCapability_Service_CONTROLLER_SERVICE:
|
||||
case csi.PluginCapability_Service_ACCESSIBILITY_CONSTRAINTS:
|
||||
case csi.PluginCapability_Service_VOLUME_ACCESSIBILITY_CONSTRAINTS:
|
||||
default:
|
||||
Fail(fmt.Sprintf("Unknown capability: %v\n", cap.GetService().GetType()))
|
||||
}
|
||||
|
89
vendor/github.com/kubernetes-csi/csi-test/pkg/sanity/node.go
generated
vendored
89
vendor/github.com/kubernetes-csi/csi-test/pkg/sanity/node.go
generated
vendored
@@ -23,7 +23,7 @@ import (
|
||||
"google.golang.org/grpc/codes"
|
||||
"google.golang.org/grpc/status"
|
||||
|
||||
"github.com/container-storage-interface/spec/lib/go/csi/v0"
|
||||
"github.com/container-storage-interface/spec/lib/go/csi"
|
||||
|
||||
. "github.com/onsi/ginkgo"
|
||||
. "github.com/onsi/gomega"
|
||||
@@ -119,6 +119,7 @@ var _ = DescribeSanity("Node Service", func(sc *SanityContext) {
|
||||
switch cap.GetRpc().GetType() {
|
||||
case csi.NodeServiceCapability_RPC_UNKNOWN:
|
||||
case csi.NodeServiceCapability_RPC_STAGE_UNSTAGE_VOLUME:
|
||||
case csi.NodeServiceCapability_RPC_GET_VOLUME_STATS:
|
||||
default:
|
||||
Fail(fmt.Sprintf("Unknown capability: %v\n", cap.GetRpc().GetType()))
|
||||
}
|
||||
@@ -126,18 +127,6 @@ var _ = DescribeSanity("Node Service", func(sc *SanityContext) {
|
||||
})
|
||||
})
|
||||
|
||||
Describe("NodeGetId", func() {
|
||||
It("should return appropriate values", func() {
|
||||
nid, err := c.NodeGetId(
|
||||
context.Background(),
|
||||
&csi.NodeGetIdRequest{})
|
||||
|
||||
Expect(err).NotTo(HaveOccurred())
|
||||
Expect(nid).NotTo(BeNil())
|
||||
Expect(nid.GetNodeId()).NotTo(BeEmpty())
|
||||
})
|
||||
})
|
||||
|
||||
Describe("NodeGetInfo", func() {
|
||||
var (
|
||||
i csi.IdentityClient
|
||||
@@ -146,7 +135,7 @@ var _ = DescribeSanity("Node Service", func(sc *SanityContext) {
|
||||
|
||||
BeforeEach(func() {
|
||||
i = csi.NewIdentityClient(sc.Conn)
|
||||
accessibilityConstraintSupported = isPluginCapabilitySupported(i, csi.PluginCapability_Service_ACCESSIBILITY_CONSTRAINTS)
|
||||
accessibilityConstraintSupported = isPluginCapabilitySupported(i, csi.PluginCapability_Service_VOLUME_ACCESSIBILITY_CONSTRAINTS)
|
||||
})
|
||||
|
||||
It("should return approproate values", func() {
|
||||
@@ -170,7 +159,7 @@ var _ = DescribeSanity("Node Service", func(sc *SanityContext) {
|
||||
_, err := c.NodePublishVolume(
|
||||
context.Background(),
|
||||
&csi.NodePublishVolumeRequest{
|
||||
NodePublishSecrets: sc.Secrets.NodePublishVolumeSecret,
|
||||
Secrets: sc.Secrets.NodePublishVolumeSecret,
|
||||
},
|
||||
)
|
||||
Expect(err).To(HaveOccurred())
|
||||
@@ -184,8 +173,8 @@ var _ = DescribeSanity("Node Service", func(sc *SanityContext) {
|
||||
_, err := c.NodePublishVolume(
|
||||
context.Background(),
|
||||
&csi.NodePublishVolumeRequest{
|
||||
VolumeId: "id",
|
||||
NodePublishSecrets: sc.Secrets.NodePublishVolumeSecret,
|
||||
VolumeId: "id",
|
||||
Secrets: sc.Secrets.NodePublishVolumeSecret,
|
||||
},
|
||||
)
|
||||
Expect(err).To(HaveOccurred())
|
||||
@@ -199,9 +188,9 @@ var _ = DescribeSanity("Node Service", func(sc *SanityContext) {
|
||||
_, err := c.NodePublishVolume(
|
||||
context.Background(),
|
||||
&csi.NodePublishVolumeRequest{
|
||||
VolumeId: "id",
|
||||
TargetPath: sc.Config.TargetPath,
|
||||
NodePublishSecrets: sc.Secrets.NodePublishVolumeSecret,
|
||||
VolumeId: "id",
|
||||
TargetPath: sc.Config.TargetPath,
|
||||
Secrets: sc.Secrets.NodePublishVolumeSecret,
|
||||
},
|
||||
)
|
||||
Expect(err).To(HaveOccurred())
|
||||
@@ -266,10 +255,10 @@ var _ = DescribeSanity("Node Service", func(sc *SanityContext) {
|
||||
Mode: csi.VolumeCapability_AccessMode_SINGLE_NODE_WRITER,
|
||||
},
|
||||
},
|
||||
PublishInfo: map[string]string{
|
||||
PublishContext: map[string]string{
|
||||
"device": device,
|
||||
},
|
||||
NodeStageSecrets: sc.Secrets.NodeStageVolumeSecret,
|
||||
Secrets: sc.Secrets.NodeStageVolumeSecret,
|
||||
},
|
||||
)
|
||||
Expect(err).To(HaveOccurred())
|
||||
@@ -292,10 +281,10 @@ var _ = DescribeSanity("Node Service", func(sc *SanityContext) {
|
||||
Mode: csi.VolumeCapability_AccessMode_SINGLE_NODE_WRITER,
|
||||
},
|
||||
},
|
||||
PublishInfo: map[string]string{
|
||||
PublishContext: map[string]string{
|
||||
"device": device,
|
||||
},
|
||||
NodeStageSecrets: sc.Secrets.NodeStageVolumeSecret,
|
||||
Secrets: sc.Secrets.NodeStageVolumeSecret,
|
||||
},
|
||||
)
|
||||
Expect(err).To(HaveOccurred())
|
||||
@@ -311,10 +300,10 @@ var _ = DescribeSanity("Node Service", func(sc *SanityContext) {
|
||||
&csi.NodeStageVolumeRequest{
|
||||
VolumeId: "id",
|
||||
StagingTargetPath: sc.Config.StagingPath,
|
||||
PublishInfo: map[string]string{
|
||||
PublishContext: map[string]string{
|
||||
"device": device,
|
||||
},
|
||||
NodeStageSecrets: sc.Secrets.NodeStageVolumeSecret,
|
||||
Secrets: sc.Secrets.NodeStageVolumeSecret,
|
||||
},
|
||||
)
|
||||
Expect(err).To(HaveOccurred())
|
||||
@@ -380,19 +369,19 @@ var _ = DescribeSanity("Node Service", func(sc *SanityContext) {
|
||||
},
|
||||
},
|
||||
},
|
||||
ControllerCreateSecrets: sc.Secrets.CreateVolumeSecret,
|
||||
Secrets: sc.Secrets.CreateVolumeSecret,
|
||||
},
|
||||
)
|
||||
Expect(err).NotTo(HaveOccurred())
|
||||
Expect(vol).NotTo(BeNil())
|
||||
Expect(vol.GetVolume()).NotTo(BeNil())
|
||||
Expect(vol.GetVolume().GetId()).NotTo(BeEmpty())
|
||||
cl.RegisterVolume(name, VolumeInfo{VolumeID: vol.GetVolume().GetId()})
|
||||
Expect(vol.GetVolume().GetVolumeId()).NotTo(BeEmpty())
|
||||
cl.RegisterVolume(name, VolumeInfo{VolumeID: vol.GetVolume().GetVolumeId()})
|
||||
|
||||
By("getting a node id")
|
||||
nid, err := c.NodeGetId(
|
||||
nid, err := c.NodeGetInfo(
|
||||
context.Background(),
|
||||
&csi.NodeGetIdRequest{})
|
||||
&csi.NodeGetInfoRequest{})
|
||||
Expect(err).NotTo(HaveOccurred())
|
||||
Expect(nid).NotTo(BeNil())
|
||||
Expect(nid.GetNodeId()).NotTo(BeEmpty())
|
||||
@@ -404,7 +393,7 @@ var _ = DescribeSanity("Node Service", func(sc *SanityContext) {
|
||||
conpubvol, err = s.ControllerPublishVolume(
|
||||
context.Background(),
|
||||
&csi.ControllerPublishVolumeRequest{
|
||||
VolumeId: vol.GetVolume().GetId(),
|
||||
VolumeId: vol.GetVolume().GetVolumeId(),
|
||||
NodeId: nid.GetNodeId(),
|
||||
VolumeCapability: &csi.VolumeCapability{
|
||||
AccessType: &csi.VolumeCapability_Mount{
|
||||
@@ -414,13 +403,13 @@ var _ = DescribeSanity("Node Service", func(sc *SanityContext) {
|
||||
Mode: csi.VolumeCapability_AccessMode_SINGLE_NODE_WRITER,
|
||||
},
|
||||
},
|
||||
VolumeAttributes: vol.GetVolume().GetAttributes(),
|
||||
Readonly: false,
|
||||
ControllerPublishSecrets: sc.Secrets.ControllerPublishVolumeSecret,
|
||||
VolumeContext: vol.GetVolume().GetVolumeContext(),
|
||||
Readonly: false,
|
||||
Secrets: sc.Secrets.ControllerPublishVolumeSecret,
|
||||
},
|
||||
)
|
||||
Expect(err).NotTo(HaveOccurred())
|
||||
cl.RegisterVolume(name, VolumeInfo{VolumeID: vol.GetVolume().GetId(), NodeID: nid.GetNodeId()})
|
||||
cl.RegisterVolume(name, VolumeInfo{VolumeID: vol.GetVolume().GetVolumeId(), NodeID: nid.GetNodeId()})
|
||||
Expect(conpubvol).NotTo(BeNil())
|
||||
}
|
||||
// NodeStageVolume
|
||||
@@ -429,7 +418,7 @@ var _ = DescribeSanity("Node Service", func(sc *SanityContext) {
|
||||
nodestagevol, err := c.NodeStageVolume(
|
||||
context.Background(),
|
||||
&csi.NodeStageVolumeRequest{
|
||||
VolumeId: vol.GetVolume().GetId(),
|
||||
VolumeId: vol.GetVolume().GetVolumeId(),
|
||||
VolumeCapability: &csi.VolumeCapability{
|
||||
AccessType: &csi.VolumeCapability_Mount{
|
||||
Mount: &csi.VolumeCapability_MountVolume{},
|
||||
@@ -439,9 +428,9 @@ var _ = DescribeSanity("Node Service", func(sc *SanityContext) {
|
||||
},
|
||||
},
|
||||
StagingTargetPath: sc.Config.StagingPath,
|
||||
VolumeAttributes: vol.GetVolume().GetAttributes(),
|
||||
PublishInfo: conpubvol.GetPublishInfo(),
|
||||
NodeStageSecrets: sc.Secrets.NodeStageVolumeSecret,
|
||||
VolumeContext: vol.GetVolume().GetVolumeContext(),
|
||||
PublishContext: conpubvol.GetPublishContext(),
|
||||
Secrets: sc.Secrets.NodeStageVolumeSecret,
|
||||
},
|
||||
)
|
||||
Expect(err).NotTo(HaveOccurred())
|
||||
@@ -456,7 +445,7 @@ var _ = DescribeSanity("Node Service", func(sc *SanityContext) {
|
||||
nodepubvol, err := c.NodePublishVolume(
|
||||
context.Background(),
|
||||
&csi.NodePublishVolumeRequest{
|
||||
VolumeId: vol.GetVolume().GetId(),
|
||||
VolumeId: vol.GetVolume().GetVolumeId(),
|
||||
TargetPath: sc.Config.TargetPath,
|
||||
StagingTargetPath: stagingPath,
|
||||
VolumeCapability: &csi.VolumeCapability{
|
||||
@@ -467,9 +456,9 @@ var _ = DescribeSanity("Node Service", func(sc *SanityContext) {
|
||||
Mode: csi.VolumeCapability_AccessMode_SINGLE_NODE_WRITER,
|
||||
},
|
||||
},
|
||||
VolumeAttributes: vol.GetVolume().GetAttributes(),
|
||||
PublishInfo: conpubvol.GetPublishInfo(),
|
||||
NodePublishSecrets: sc.Secrets.NodePublishVolumeSecret,
|
||||
VolumeContext: vol.GetVolume().GetVolumeContext(),
|
||||
PublishContext: conpubvol.GetPublishContext(),
|
||||
Secrets: sc.Secrets.NodePublishVolumeSecret,
|
||||
},
|
||||
)
|
||||
Expect(err).NotTo(HaveOccurred())
|
||||
@@ -480,7 +469,7 @@ var _ = DescribeSanity("Node Service", func(sc *SanityContext) {
|
||||
nodeunpubvol, err := c.NodeUnpublishVolume(
|
||||
context.Background(),
|
||||
&csi.NodeUnpublishVolumeRequest{
|
||||
VolumeId: vol.GetVolume().GetId(),
|
||||
VolumeId: vol.GetVolume().GetVolumeId(),
|
||||
TargetPath: sc.Config.TargetPath,
|
||||
})
|
||||
Expect(err).NotTo(HaveOccurred())
|
||||
@@ -491,7 +480,7 @@ var _ = DescribeSanity("Node Service", func(sc *SanityContext) {
|
||||
nodeunstagevol, err := c.NodeUnstageVolume(
|
||||
context.Background(),
|
||||
&csi.NodeUnstageVolumeRequest{
|
||||
VolumeId: vol.GetVolume().GetId(),
|
||||
VolumeId: vol.GetVolume().GetVolumeId(),
|
||||
StagingTargetPath: sc.Config.StagingPath,
|
||||
},
|
||||
)
|
||||
@@ -505,9 +494,9 @@ var _ = DescribeSanity("Node Service", func(sc *SanityContext) {
|
||||
controllerunpubvol, err := s.ControllerUnpublishVolume(
|
||||
context.Background(),
|
||||
&csi.ControllerUnpublishVolumeRequest{
|
||||
VolumeId: vol.GetVolume().GetId(),
|
||||
VolumeId: vol.GetVolume().GetVolumeId(),
|
||||
NodeId: nid.GetNodeId(),
|
||||
ControllerUnpublishSecrets: sc.Secrets.ControllerUnpublishVolumeSecret,
|
||||
Secrets: sc.Secrets.ControllerUnpublishVolumeSecret,
|
||||
},
|
||||
)
|
||||
Expect(err).NotTo(HaveOccurred())
|
||||
@@ -519,8 +508,8 @@ var _ = DescribeSanity("Node Service", func(sc *SanityContext) {
|
||||
_, err = s.DeleteVolume(
|
||||
context.Background(),
|
||||
&csi.DeleteVolumeRequest{
|
||||
VolumeId: vol.GetVolume().GetId(),
|
||||
ControllerDeleteSecrets: sc.Secrets.DeleteVolumeSecret,
|
||||
VolumeId: vol.GetVolume().GetVolumeId(),
|
||||
Secrets: sc.Secrets.DeleteVolumeSecret,
|
||||
},
|
||||
)
|
||||
Expect(err).NotTo(HaveOccurred())
|
||||
|
55
vendor/github.com/kubernetes-csi/csi-test/pkg/sanity/sanity.go
generated
vendored
55
vendor/github.com/kubernetes-csi/csi-test/pkg/sanity/sanity.go
generated
vendored
@@ -47,11 +47,14 @@ type CSISecrets struct {
|
||||
// Config provides the configuration for the sanity tests. It
|
||||
// needs to be initialized by the user of the sanity package.
|
||||
type Config struct {
|
||||
TargetPath string
|
||||
StagingPath string
|
||||
Address string
|
||||
SecretsFile string
|
||||
TestVolumeSize int64
|
||||
TargetPath string
|
||||
StagingPath string
|
||||
Address string
|
||||
SecretsFile string
|
||||
|
||||
TestVolumeSize int64
|
||||
TestVolumeParametersFile string
|
||||
TestVolumeParameters map[string]string
|
||||
}
|
||||
|
||||
// SanityContext holds the variables that each test can depend on. It
|
||||
@@ -60,11 +63,25 @@ type SanityContext struct {
|
||||
Config *Config
|
||||
Conn *grpc.ClientConn
|
||||
Secrets *CSISecrets
|
||||
|
||||
connAddress string
|
||||
}
|
||||
|
||||
// Test will test the CSI driver at the specified address by
|
||||
// setting up a Ginkgo suite and running it.
|
||||
func Test(t *testing.T, reqConfig *Config) {
|
||||
path := reqConfig.TestVolumeParametersFile
|
||||
if len(path) != 0 {
|
||||
yamlFile, err := ioutil.ReadFile(path)
|
||||
if err != nil {
|
||||
panic(fmt.Sprintf("failed to read file %q: %v", path, err))
|
||||
}
|
||||
err = yaml.Unmarshal(yamlFile, &reqConfig.TestVolumeParameters)
|
||||
if err != nil {
|
||||
panic(fmt.Sprintf("error unmarshaling yaml: %v", err))
|
||||
}
|
||||
}
|
||||
|
||||
sc := &SanityContext{
|
||||
Config: reqConfig,
|
||||
}
|
||||
@@ -92,9 +109,17 @@ func (sc *SanityContext) setup() {
|
||||
sc.Secrets = &CSISecrets{}
|
||||
}
|
||||
|
||||
By("connecting to CSI driver")
|
||||
sc.Conn, err = utils.Connect(sc.Config.Address)
|
||||
Expect(err).NotTo(HaveOccurred())
|
||||
// It is possible that a test sets sc.Config.Address
|
||||
// dynamically (and differently!) in a BeforeEach, so only
|
||||
// reuse the connection if the address is still the same.
|
||||
if sc.Conn == nil || sc.connAddress != sc.Config.Address {
|
||||
By("connecting to CSI driver")
|
||||
sc.Conn, err = utils.Connect(sc.Config.Address)
|
||||
Expect(err).NotTo(HaveOccurred())
|
||||
sc.connAddress = sc.Config.Address
|
||||
} else {
|
||||
By(fmt.Sprintf("reusing connection to CSI driver at %s", sc.connAddress))
|
||||
}
|
||||
|
||||
By("creating mount and staging directories")
|
||||
err = createMountTargetLocation(sc.Config.TargetPath)
|
||||
@@ -106,10 +131,16 @@ func (sc *SanityContext) setup() {
|
||||
}
|
||||
|
||||
func (sc *SanityContext) teardown() {
|
||||
if sc.Conn != nil {
|
||||
sc.Conn.Close()
|
||||
sc.Conn = nil
|
||||
}
|
||||
// We intentionally do not close the connection to the CSI
|
||||
// driver here because the large amount of connection attempts
|
||||
// caused test failures
|
||||
// (https://github.com/kubernetes-csi/csi-test/issues/101). We
|
||||
// could fix this with retries
|
||||
// (https://github.com/kubernetes-csi/csi-test/pull/97) but
|
||||
// that requires more discussion, so instead we just connect
|
||||
// once per process instead of once per test case. This was
|
||||
// also said to be faster
|
||||
// (https://github.com/kubernetes-csi/csi-test/pull/98).
|
||||
}
|
||||
|
||||
func createMountTargetLocation(targetPath string) error {
|
||||
|
6
vendor/github.com/kubernetes-csi/csi-test/test/co_test.go
generated
vendored
6
vendor/github.com/kubernetes-csi/csi-test/test/co_test.go
generated
vendored
@@ -21,7 +21,7 @@ import (
|
||||
"reflect"
|
||||
"testing"
|
||||
|
||||
"github.com/container-storage-interface/spec/lib/go/csi/v0"
|
||||
"github.com/container-storage-interface/spec/lib/go/csi"
|
||||
"github.com/golang/mock/gomock"
|
||||
"github.com/golang/protobuf/proto"
|
||||
mock_driver "github.com/kubernetes-csi/csi-test/driver"
|
||||
@@ -157,7 +157,7 @@ func TestGRPCAttach(t *testing.T) {
|
||||
|
||||
// Setup mock outout
|
||||
out := &csi.ControllerPublishVolumeResponse{
|
||||
PublishInfo: publishVolumeInfo,
|
||||
PublishContext: publishVolumeInfo,
|
||||
}
|
||||
|
||||
// Setup expectation
|
||||
@@ -181,7 +181,7 @@ func TestGRPCAttach(t *testing.T) {
|
||||
t.Errorf("Error: %s", err.Error())
|
||||
}
|
||||
|
||||
info := r.GetPublishInfo()
|
||||
info := r.GetPublishContext()
|
||||
if !reflect.DeepEqual(info, publishVolumeInfo) {
|
||||
t.Errorf("Invalid publish info: %v", info)
|
||||
}
|
||||
|
2
vendor/github.com/kubernetes-csi/csi-test/test/driver_test.go
generated
vendored
2
vendor/github.com/kubernetes-csi/csi-test/test/driver_test.go
generated
vendored
@@ -21,7 +21,7 @@ import (
|
||||
"sync"
|
||||
"testing"
|
||||
|
||||
"github.com/container-storage-interface/spec/lib/go/csi/v0"
|
||||
"github.com/container-storage-interface/spec/lib/go/csi"
|
||||
"github.com/kubernetes-csi/csi-test/utils"
|
||||
"google.golang.org/grpc"
|
||||
"google.golang.org/grpc/reflection"
|
||||
|
2
vendor/github.com/kubernetes-csi/csi-test/utils/safegoroutinetester.go
generated
vendored
2
vendor/github.com/kubernetes-csi/csi-test/utils/safegoroutinetester.go
generated
vendored
@@ -29,7 +29,7 @@ type SafeGoroutineTester struct{}
|
||||
|
||||
// Errorf prints the error to the screen then panics
|
||||
func (s *SafeGoroutineTester) Errorf(format string, args ...interface{}) {
|
||||
fmt.Printf(format, args)
|
||||
fmt.Printf(format, args...)
|
||||
panic("MOCK TEST ERROR")
|
||||
}
|
||||
|
||||
|
Reference in New Issue
Block a user