diff --git a/hack/feature-gates.yaml b/hack/feature-gates.yaml index c642c0c6cf..cd8df0d5c1 100644 --- a/hack/feature-gates.yaml +++ b/hack/feature-gates.yaml @@ -3,9 +3,20 @@ CSIDriverRegistry: "true" CSINodeInfo: "true" CSIBlockVolume: "true" + CSIMigration: "true" + CSIMigrationAWS: "true" VolumeSnapshotDataSource: "true" + kubeControllerManager: + featureGates: + CSIDriverRegistry: "true" + CSINodeInfo: "true" + CSIBlockVolume: "true" + CSIMigration: "true" + CSIMigrationAWS: "true" kubelet: featureGates: CSIDriverRegistry: "true" CSINodeInfo: "true" CSIBlockVolume: "true" + CSIMigration: "true" + CSIMigrationAWS: "true" diff --git a/tests/e2e-in-tree/Gopkg.lock b/tests/e2e-in-tree/Gopkg.lock new file mode 100644 index 0000000000..888181b970 --- /dev/null +++ b/tests/e2e-in-tree/Gopkg.lock @@ -0,0 +1,1255 @@ +# This file is autogenerated, do not edit; changes may be undone by the next 'dep ensure'. + + +[[projects]] + digest = "1:f9ae348e1f793dcf9ed930ed47136a67343dbd6809c5c91391322267f4476892" + name = "github.com/Microsoft/go-winio" + packages = ["."] + pruneopts = "UT" + revision = "1a8911d1ed007260465c3bfbbc785ac6915a0bb8" + version = "v0.4.12" + +[[projects]] + digest = "1:48cbe71504e2321d92ea296906bfe1ef8ea0f989e884664750a3d355420dc20a" + name = "github.com/aws/aws-sdk-go" + packages = [ + "aws", + "aws/awserr", + "aws/awsutil", + "aws/client", + "aws/client/metadata", + "aws/corehandlers", + "aws/credentials", + "aws/credentials/ec2rolecreds", + "aws/credentials/endpointcreds", + "aws/credentials/processcreds", + "aws/credentials/stscreds", + "aws/csm", + "aws/defaults", + "aws/ec2metadata", + "aws/endpoints", + "aws/request", + "aws/session", + "aws/signer/v4", + "internal/ini", + "internal/sdkio", + "internal/sdkrand", + "internal/sdkuri", + "internal/shareddefaults", + "private/protocol", + "private/protocol/ec2query", + "private/protocol/json/jsonutil", + "private/protocol/jsonrpc", + "private/protocol/query", + "private/protocol/query/queryutil", + "private/protocol/rest", + "private/protocol/xml/xmlutil", + "service/autoscaling", + "service/ec2", + "service/elb", + "service/elbv2", + "service/kms", + "service/sts", + "service/sts/stsiface", + ] + pruneopts = "UT" + revision = "933fa4e60b06c8c1d3f91790ce134512f327b6af" + version = "v1.21.10" + +[[projects]] + digest = "1:d6afaeed1502aa28e80a4ed0981d570ad91b2579193404256ce672ed0a609e0d" + name = "github.com/beorn7/perks" + packages = ["quantile"] + pruneopts = "UT" + revision = "4b2b341e8d7715fae06375aa633dbb6e91b3fb46" + version = "v1.0.0" + +[[projects]] + digest = "1:2031b4fe19a7e3161a1775d2514c94f23dafedc98d6d94e6b4063bba7d13c45a" + name = "github.com/coreos/etcd" + packages = [ + "auth/authpb", + "clientv3", + "etcdserver/api/v3rpc/rpctypes", + "etcdserver/etcdserverpb", + "mvcc/mvccpb", + "pkg/types", + ] + pruneopts = "UT" + revision = "98d308426819d892e149fe45f6fd542464cb1f9d" + version = "v3.3.13" + +[[projects]] + digest = "1:ffe9824d294da03b391f44e1ae8281281b4afc1bdaa9588c9097785e3af10cec" + name = "github.com/davecgh/go-spew" + packages = ["spew"] + pruneopts = "UT" + revision = "8991bc29aa16c548c550c7ff78260e27b9ab7c73" + version = "v1.1.1" + +[[projects]] + digest = "1:4ddc17aeaa82cb18c5f0a25d7c253a10682f518f4b2558a82869506eec223d76" + name = "github.com/docker/distribution" + packages = [ + "digestset", + "reference", + ] + pruneopts = "UT" + revision = "2461543d988979529609e8cb6fca9ca190dc48da" + version = "v2.7.1" + +[[projects]] + branch = "master" + digest = "1:ecdc8e0fe3bc7d549af1c9c36acf3820523b707d6c071b6d0c3860882c6f7b42" + name = "github.com/docker/spdystream" + packages = [ + ".", + "spdy", + ] + pruneopts = "UT" + revision = "6480d4af844c189cf5dd913db24ddd339d3a4f85" + +[[projects]] + digest = "1:abeb38ade3f32a92943e5be54f55ed6d6e3b6602761d74b4aab4c9dd45c18abd" + name = "github.com/fsnotify/fsnotify" + packages = ["."] + pruneopts = "UT" + revision = "c2828203cd70a50dcccfb2761f8b1f8ceef9a8e9" + version = "v1.4.7" + +[[projects]] + digest = "1:33f49b72fdad072a03d13b31a42edfff08088b7c27198f4073b8213a58884f27" + name = "github.com/gogo/protobuf" + packages = [ + "gogoproto", + "proto", + "protoc-gen-gogo/descriptor", + "sortkeys", + ] + pruneopts = "UT" + revision = "ba06b47c162d49f2af050fb4c75bcbc86a159d5c" + version = "v1.2.1" + +[[projects]] + branch = "master" + digest = "1:b7cb6054d3dff43b38ad2e92492f220f57ae6087ee797dca298139776749ace8" + name = "github.com/golang/groupcache" + packages = ["lru"] + pruneopts = "UT" + revision = "869f871628b6baa9cfbc11732cdf6546b17c1298" + +[[projects]] + digest = "1:f5ce1529abc1204444ec73779f44f94e2fa8fcdb7aca3c355b0c95947e4005c6" + name = "github.com/golang/protobuf" + packages = [ + "proto", + "ptypes", + "ptypes/any", + "ptypes/duration", + "ptypes/timestamp", + ] + pruneopts = "UT" + revision = "6c65a5562fc06764971b7c5d05c76c75e84bdbf7" + version = "v1.3.2" + +[[projects]] + digest = "1:bf40199583e5143d1472fc34d10d6f4b69d97572142acf343b3e43136da40823" + name = "github.com/google/go-cmp" + packages = [ + "cmp", + "cmp/internal/diff", + "cmp/internal/flags", + "cmp/internal/function", + "cmp/internal/value", + ] + pruneopts = "UT" + revision = "6f77996f0c42f7b84e5a2b252227263f93432e9b" + version = "v0.3.0" + +[[projects]] + digest = "1:a6181aca1fd5e27103f9a920876f29ac72854df7345a39f3b01e61c8c94cc8af" + name = "github.com/google/gofuzz" + packages = ["."] + pruneopts = "UT" + revision = "f140a6486e521aad38f5917de355cbf147cc0496" + version = "v1.0.0" + +[[projects]] + digest = "1:582b704bebaa06b48c29b0cec224a6058a09c86883aaddabde889cd1a5f73e1b" + name = "github.com/google/uuid" + packages = ["."] + pruneopts = "UT" + revision = "0cd6bf5da1e1c83f8b45653022c74f71af0538a4" + version = "v1.1.1" + +[[projects]] + digest = "1:d1a3774c1f8336a21669d6da87a7bafb4d6171a84752268b7011e767d6722c2b" + name = "github.com/googleapis/gnostic" + packages = [ + "OpenAPIv2", + "compiler", + "extensions", + ] + pruneopts = "UT" + revision = "e73c7ec21d36ddb0711cb36d1502d18363b5c2c9" + version = "v0.3.0" + +[[projects]] + digest = "1:d15ee511aa0f56baacc1eb4c6b922fa1c03b38413b6be18166b996d82a0156ea" + name = "github.com/hashicorp/golang-lru" + packages = [ + ".", + "simplelru", + ] + pruneopts = "UT" + revision = "7087cb70de9f7a8bc0a10c375cb0d2280a8edf9c" + version = "v0.5.1" + +[[projects]] + digest = "1:a1038ef593beb4771c8f0f9c26e8b00410acd800af5c6864651d9bf160ea1813" + name = "github.com/hpcloud/tail" + packages = [ + ".", + "ratelimiter", + "util", + "watch", + "winfile", + ] + pruneopts = "UT" + revision = "a30252cb686a21eb2d0b98132633053ec2f7f1e5" + version = "v1.0.0" + +[[projects]] + digest = "1:a0cefd27d12712af4b5018dc7046f245e1e3b5760e2e848c30b171b570708f9b" + name = "github.com/imdario/mergo" + packages = ["."] + pruneopts = "UT" + revision = "7c29201646fa3de8506f701213473dd407f19646" + version = "v0.3.7" + +[[projects]] + digest = "1:bb81097a5b62634f3e9fec1014657855610c82d19b9a40c17612e32651e35dca" + name = "github.com/jmespath/go-jmespath" + packages = ["."] + pruneopts = "UT" + revision = "c2b33e84" + +[[projects]] + digest = "1:f5a2051c55d05548d2d4fd23d244027b59fbd943217df8aa3b5e170ac2fd6e1b" + name = "github.com/json-iterator/go" + packages = ["."] + pruneopts = "UT" + revision = "0ff49de124c6f76f8494e194af75bde0f1a49a29" + version = "v1.1.6" + +[[projects]] + digest = "1:ff5ebae34cfbf047d505ee150de27e60570e8c394b3b8fdbb720ff6ac71985fc" + name = "github.com/matttproud/golang_protobuf_extensions" + packages = ["pbutil"] + pruneopts = "UT" + revision = "c12348ce28de40eed0136aa2b644d0ee0650e56c" + version = "v1.0.1" + +[[projects]] + digest = "1:33422d238f147d247752996a26574ac48dcf472976eda7f5134015f06bf16563" + name = "github.com/modern-go/concurrent" + packages = ["."] + pruneopts = "UT" + revision = "bacd9c7ef1dd9b15be4a9909b8ac7a4e313eec94" + version = "1.0.3" + +[[projects]] + digest = "1:e32bdbdb7c377a07a9a46378290059822efdce5c8d96fe71940d87cb4f918855" + name = "github.com/modern-go/reflect2" + packages = ["."] + pruneopts = "UT" + revision = "4b7aa43c6742a2c18fdef89dd197aaae7dac7ccd" + version = "1.0.1" + +[[projects]] + digest = "1:e9c3bb68a6c9470302b8046d4647e0612a2ea6037b9c6a47de60c0a90db504f8" + name = "github.com/onsi/ginkgo" + packages = [ + ".", + "config", + "internal/codelocation", + "internal/containernode", + "internal/failer", + "internal/leafnodes", + "internal/remote", + "internal/spec", + "internal/spec_iterator", + "internal/specrunner", + "internal/suite", + "internal/testingtproxy", + "internal/writer", + "reporters", + "reporters/stenographer", + "reporters/stenographer/support/go-colorable", + "reporters/stenographer/support/go-isatty", + "types", + ] + pruneopts = "UT" + revision = "eea6ad008b96acdaa524f5b409513bf062b500ad" + version = "v1.8.0" + +[[projects]] + digest = "1:fe167e8f858cbfc10c721f2000f2446140800bb53fa83c088e03d191275611a4" + name = "github.com/onsi/gomega" + packages = [ + ".", + "format", + "internal/assertion", + "internal/asyncassertion", + "internal/oraclematcher", + "internal/testingtsupport", + "matchers", + "matchers/support/goraph/bipartitegraph", + "matchers/support/goraph/edge", + "matchers/support/goraph/node", + "matchers/support/goraph/util", + "types", + ] + pruneopts = "UT" + revision = "90e289841c1ed79b7a598a7cd9959750cb5e89e2" + version = "v1.5.0" + +[[projects]] + digest = "1:ee4d4af67d93cc7644157882329023ce9a7bcfce956a079069a9405521c7cc8d" + name = "github.com/opencontainers/go-digest" + packages = ["."] + pruneopts = "UT" + revision = "279bed98673dd5bef374d3b6e4b09e2af76183bf" + version = "v1.0.0-rc1" + +[[projects]] + digest = "1:e5d0bd87abc2781d14e274807a470acd180f0499f8bf5bb18606e9ec22ad9de9" + name = "github.com/pborman/uuid" + packages = ["."] + pruneopts = "UT" + revision = "adf5a7427709b9deb95d29d3fa8a2bf9cfd388f1" + version = "v1.2" + +[[projects]] + digest = "1:cf31692c14422fa27c83a05292eb5cbe0fb2775972e8f1f8446a71549bd8980b" + name = "github.com/pkg/errors" + packages = ["."] + pruneopts = "UT" + revision = "ba968bfe8b2f7e042a574c888954fccecfa385b4" + version = "v0.8.1" + +[[projects]] + digest = "1:0028cb19b2e4c3112225cd871870f2d9cf49b9b4276531f03438a88e94be86fe" + name = "github.com/pmezard/go-difflib" + packages = ["difflib"] + pruneopts = "UT" + revision = "792786c7400a136282c1664665ae0a8db921c6c2" + version = "v1.0.0" + +[[projects]] + digest = "1:7097829edd12fd7211fca0d29496b44f94ef9e6d72f88fb64f3d7b06315818ad" + name = "github.com/prometheus/client_golang" + packages = [ + "prometheus", + "prometheus/internal", + ] + pruneopts = "UT" + revision = "4ab88e80c249ed361d3299e2930427d9ac43ef8d" + version = "v1.0.0" + +[[projects]] + branch = "master" + digest = "1:2d5cd61daa5565187e1d96bae64dbbc6080dacf741448e9629c64fd93203b0d4" + name = "github.com/prometheus/client_model" + packages = ["go"] + pruneopts = "UT" + revision = "fd36f4220a901265f90734c3183c5f0c91daa0b8" + +[[projects]] + digest = "1:8dcedf2e8f06c7f94e48267dea0bc0be261fa97b377f3ae3e87843a92a549481" + name = "github.com/prometheus/common" + packages = [ + "expfmt", + "internal/bitbucket.org/ww/goautoneg", + "model", + ] + pruneopts = "UT" + revision = "31bed53e4047fd6c510e43a941f90cb31be0972a" + version = "v0.6.0" + +[[projects]] + digest = "1:366f5aa02ff6c1e2eccce9ca03a22a6d983da89eecff8a89965401764534eb7c" + name = "github.com/prometheus/procfs" + packages = [ + ".", + "internal/fs", + ] + pruneopts = "UT" + revision = "3f98efb27840a48a7a2898ec80be07674d19f9c8" + version = "v0.0.3" + +[[projects]] + digest = "1:bb495ec276ab82d3dd08504bbc0594a65de8c3b22c6f2aaa92d05b73fbf3a82e" + name = "github.com/spf13/afero" + packages = [ + ".", + "mem", + ] + pruneopts = "UT" + revision = "588a75ec4f32903aa5e39a2619ba6a4631e28424" + version = "v1.2.2" + +[[projects]] + digest = "1:c1b1102241e7f645bc8e0c22ae352e8f0dc6484b6cb4d132fa9f24174e0119e2" + name = "github.com/spf13/pflag" + packages = ["."] + pruneopts = "UT" + revision = "298182f68c66c05229eb03ac171abe6e309ee79a" + version = "v1.0.3" + +[[projects]] + digest = "1:5da8ce674952566deae4dbc23d07c85caafc6cfa815b0b3e03e41979cedb8750" + name = "github.com/stretchr/testify" + packages = [ + "assert", + "require", + ] + pruneopts = "UT" + revision = "ffdc059bfe9ce6a4e144ba849dbedead332c6053" + version = "v1.3.0" + +[[projects]] + digest = "1:11c95510b2d897c7bef9a042e022d1f97fa0e262e60295fc3522764dcb1303fe" + name = "github.com/vmware/govmomi" + packages = [ + ".", + "find", + "list", + "nfc", + "object", + "property", + "session", + "task", + "vapi/internal", + "vapi/rest", + "vapi/tags", + "vim25", + "vim25/debug", + "vim25/methods", + "vim25/mo", + "vim25/progress", + "vim25/soap", + "vim25/types", + "vim25/xml", + ] + pruneopts = "UT" + revision = "a0fef816799db3e430bb7a5ac951e7835fe4d56b" + version = "v0.21.0" + +[[projects]] + branch = "master" + digest = "1:cc7c5d88eaf1f0dda299c0cda5984dbf9fd1eabc127f5b804c79bae6e54d82fe" + name = "golang.org/x/crypto" + packages = [ + "curve25519", + "ed25519", + "ed25519/internal/edwards25519", + "internal/chacha20", + "internal/subtle", + "pbkdf2", + "poly1305", + "ssh", + "ssh/terminal", + ] + pruneopts = "UT" + revision = "4def268fd1a49955bfb3dda92fe3db4f924f2285" + +[[projects]] + branch = "master" + digest = "1:5a1cdd94684ec1eef3883a999410e40a4325cc40cd130e175bd1881166901b88" + name = "golang.org/x/net" + packages = [ + "context", + "context/ctxhttp", + "html", + "html/atom", + "html/charset", + "http/httpguts", + "http2", + "http2/hpack", + "idna", + "internal/timeseries", + "trace", + "websocket", + ] + pruneopts = "UT" + revision = "da137c7871d730100384dbcf36e6f8fa493aef5b" + +[[projects]] + branch = "master" + digest = "1:8d1c112fb1679fa097e9a9255a786ee47383fa2549a3da71bcb1334a693ebcfe" + name = "golang.org/x/oauth2" + packages = [ + ".", + "internal", + ] + pruneopts = "UT" + revision = "0f29369cfe4552d0e4bcddc57cc75f4d7e672a33" + +[[projects]] + branch = "master" + digest = "1:34a0c43f2d706c6292cd418409b68ae23657c8a5e960ab97bc199972d4e86d0c" + name = "golang.org/x/sys" + packages = [ + "cpu", + "unix", + "windows", + ] + pruneopts = "UT" + revision = "fae7ac547cb717d141c433a2a173315e216b64c4" + +[[projects]] + digest = "1:28deae5fe892797ff37a317b5bcda96d11d1c90dadd89f1337651df3bc4c586e" + name = "golang.org/x/text" + packages = [ + "collate", + "collate/build", + "encoding", + "encoding/charmap", + "encoding/htmlindex", + "encoding/internal", + "encoding/internal/identifier", + "encoding/japanese", + "encoding/korean", + "encoding/simplifiedchinese", + "encoding/traditionalchinese", + "encoding/unicode", + "internal/colltab", + "internal/gen", + "internal/language", + "internal/language/compact", + "internal/tag", + "internal/triegen", + "internal/ucd", + "internal/utf8internal", + "language", + "runes", + "secure/bidirule", + "transform", + "unicode/bidi", + "unicode/cldr", + "unicode/norm", + "unicode/rangetable", + ] + pruneopts = "UT" + revision = "342b2e1fbaa52c93f31447ad2c6abc048c63e475" + version = "v0.3.2" + +[[projects]] + branch = "master" + digest = "1:9fdc2b55e8e0fafe4b41884091e51e77344f7dc511c5acedcfd98200003bff90" + name = "golang.org/x/time" + packages = ["rate"] + pruneopts = "UT" + revision = "9d24e82272b4f38b78bc8cff74fa936d31ccd8ef" + +[[projects]] + digest = "1:6eb6e3b6d9fffb62958cf7f7d88dbbe1dd6839436b0802e194c590667a40412a" + name = "google.golang.org/appengine" + packages = [ + "internal", + "internal/base", + "internal/datastore", + "internal/log", + "internal/remote_api", + "internal/urlfetch", + "urlfetch", + ] + pruneopts = "UT" + revision = "b2f4a3cf3c67576a2ee09e1fe62656a5086ce880" + version = "v1.6.1" + +[[projects]] + branch = "master" + digest = "1:583a0c80f5e3a9343d33aea4aead1e1afcc0043db66fdf961ddd1fe8cd3a4faf" + name = "google.golang.org/genproto" + packages = ["googleapis/rpc/status"] + pruneopts = "UT" + revision = "c506a9f9061087022822e8da603a52fc387115a8" + +[[projects]] + digest = "1:931727c62baa7a9958acac5d712ae9cc0ea3ff86a664b560febf4f4b0677ee28" + name = "google.golang.org/grpc" + packages = [ + ".", + "balancer", + "balancer/base", + "balancer/roundrobin", + "binarylog/grpc_binarylog_v1", + "codes", + "connectivity", + "credentials", + "credentials/internal", + "encoding", + "encoding/proto", + "grpclog", + "health/grpc_health_v1", + "internal", + "internal/backoff", + "internal/balancerload", + "internal/binarylog", + "internal/channelz", + "internal/envconfig", + "internal/grpcrand", + "internal/grpcsync", + "internal/syscall", + "internal/transport", + "keepalive", + "metadata", + "naming", + "peer", + "resolver", + "resolver/dns", + "resolver/passthrough", + "serviceconfig", + "stats", + "status", + "tap", + ] + pruneopts = "UT" + revision = "1d89a3c832915b2314551c1d2a506874d62e53f7" + version = "v1.22.0" + +[[projects]] + digest = "1:abeb38ade3f32a92943e5be54f55ed6d6e3b6602761d74b4aab4c9dd45c18abd" + name = "gopkg.in/fsnotify.v1" + packages = ["."] + pruneopts = "UT" + revision = "c2828203cd70a50dcccfb2761f8b1f8ceef9a8e9" + source = "https://github.com/fsnotify/fsnotify.git" + version = "v1.4.7" + +[[projects]] + digest = "1:38cb4759428493e0b02eade2f8d2920eb55a8fb35acb45de3247f0fbeab81b78" + name = "gopkg.in/gcfg.v1" + packages = [ + ".", + "scanner", + "token", + "types", + ] + pruneopts = "UT" + revision = "61b2c08bc8f6068f7c5ca684372f9a6cb1c45ebe" + version = "v1.2.3" + +[[projects]] + digest = "1:2d1fbdc6777e5408cabeb02bf336305e724b925ff4546ded0fa8715a7267922a" + name = "gopkg.in/inf.v0" + packages = ["."] + pruneopts = "UT" + revision = "d2d2541c53f18d2a059457998ce2876cc8e67cbf" + version = "v0.9.1" + +[[projects]] + digest = "1:9593bab40e981b1f90b7e07faeab0d09b75fe338880d08880f986a9d3283c53f" + name = "gopkg.in/square/go-jose.v2" + packages = [ + ".", + "cipher", + "json", + "jwt", + ] + pruneopts = "UT" + revision = "730df5f748271903322feb182be83b43ebbbe27d" + version = "v2.3.1" + +[[projects]] + branch = "v1" + digest = "1:0caa92e17bc0b65a98c63e5bc76a9e844cd5e56493f8fdbb28fad101a16254d9" + name = "gopkg.in/tomb.v1" + packages = ["."] + pruneopts = "UT" + revision = "dd632973f1e7218eb1089048e0798ec9ae7dceb8" + +[[projects]] + digest = "1:78d374b493e747afa9fbb2119687e3740a7fb8d0ebabddfef0a012593aaecbb3" + name = "gopkg.in/warnings.v0" + packages = ["."] + pruneopts = "UT" + revision = "ec4a0fea49c7b46c2aeb0b51aac55779c607e52b" + version = "v0.1.2" + +[[projects]] + digest = "1:4d2e5a73dc1500038e504a8d78b986630e3626dc027bc030ba5c75da257cdb96" + name = "gopkg.in/yaml.v2" + packages = ["."] + pruneopts = "UT" + revision = "51d6538a90f86fe93ac480b35f37b2be17fef232" + version = "v2.2.2" + +[[projects]] + digest = "1:05e36a806d86801930438263cad0aa4c76515952da985cef7da8f41d5bbe5ac7" + name = "k8s.io/api" + packages = [ + "admissionregistration/v1", + "admissionregistration/v1beta1", + "apps/v1", + "apps/v1beta1", + "apps/v1beta2", + "auditregistration/v1alpha1", + "authentication/v1", + "authentication/v1beta1", + "authorization/v1", + "authorization/v1beta1", + "autoscaling/v1", + "autoscaling/v2beta1", + "autoscaling/v2beta2", + "batch/v1", + "batch/v1beta1", + "batch/v2alpha1", + "certificates/v1beta1", + "coordination/v1", + "coordination/v1beta1", + "core/v1", + "events/v1beta1", + "extensions/v1beta1", + "networking/v1", + "networking/v1beta1", + "node/v1alpha1", + "node/v1beta1", + "policy/v1beta1", + "rbac/v1", + "rbac/v1alpha1", + "rbac/v1beta1", + "scheduling/v1", + "scheduling/v1alpha1", + "scheduling/v1beta1", + "settings/v1alpha1", + "storage/v1", + "storage/v1alpha1", + "storage/v1beta1", + ] + pruneopts = "UT" + revision = "42d28c278e5800f3b0223440b1024de9ce4335dc" + version = "kubernetes-1.16.0-alpha.2" + +[[projects]] + digest = "1:b8f94dc6fc6922d3ed2244a6798f4f5d4cf6380608adacb1d5eda9878d1945f8" + name = "k8s.io/apiextensions-apiserver" + packages = ["pkg/features"] + pruneopts = "UT" + revision = "54a04115029cd6304fb1b86e0436da6a3afed878" + version = "kubernetes-1.16.0-alpha.2" + +[[projects]] + digest = "1:2ddb303cc81085d5e8be52b8b7fb627e64c1e972977fd42b45a054ac85af17c9" + name = "k8s.io/apimachinery" + packages = [ + "pkg/api/equality", + "pkg/api/errors", + "pkg/api/meta", + "pkg/api/resource", + "pkg/api/validation", + "pkg/api/validation/path", + "pkg/apis/meta/internalversion", + "pkg/apis/meta/v1", + "pkg/apis/meta/v1/unstructured", + "pkg/apis/meta/v1/validation", + "pkg/apis/meta/v1beta1", + "pkg/conversion", + "pkg/conversion/queryparams", + "pkg/fields", + "pkg/labels", + "pkg/runtime", + "pkg/runtime/schema", + "pkg/runtime/serializer", + "pkg/runtime/serializer/json", + "pkg/runtime/serializer/protobuf", + "pkg/runtime/serializer/recognizer", + "pkg/runtime/serializer/streaming", + "pkg/runtime/serializer/versioning", + "pkg/selection", + "pkg/types", + "pkg/util/cache", + "pkg/util/clock", + "pkg/util/diff", + "pkg/util/errors", + "pkg/util/framer", + "pkg/util/httpstream", + "pkg/util/httpstream/spdy", + "pkg/util/intstr", + "pkg/util/json", + "pkg/util/mergepatch", + "pkg/util/naming", + "pkg/util/net", + "pkg/util/rand", + "pkg/util/remotecommand", + "pkg/util/runtime", + "pkg/util/sets", + "pkg/util/strategicpatch", + "pkg/util/uuid", + "pkg/util/validation", + "pkg/util/validation/field", + "pkg/util/version", + "pkg/util/wait", + "pkg/util/yaml", + "pkg/version", + "pkg/watch", + "third_party/forked/golang/json", + "third_party/forked/golang/netutil", + "third_party/forked/golang/reflect", + ] + pruneopts = "UT" + revision = "f97a4e5b4abc38af231714001a5412f99ef98ff0" + version = "kubernetes-1.16.0-alpha.2" + +[[projects]] + digest = "1:4b6be0dbb320931a0fec59d1cd3364728f8e42d63f71a47c66c1276f20e46232" + name = "k8s.io/apiserver" + packages = [ + "pkg/apis/audit", + "pkg/apis/audit/v1", + "pkg/apis/audit/v1alpha1", + "pkg/apis/audit/v1beta1", + "pkg/audit", + "pkg/authentication/authenticator", + "pkg/authentication/serviceaccount", + "pkg/authentication/user", + "pkg/authorization/authorizer", + "pkg/features", + "pkg/storage", + "pkg/storage/etcd3", + "pkg/storage/etcd3/metrics", + "pkg/storage/names", + "pkg/storage/value", + "pkg/util/feature", + ] + pruneopts = "UT" + revision = "6d4a1e4632b09878c7f933c2fe7c87738f5eb542" + version = "kubernetes-1.16.0-alpha.2" + +[[projects]] + digest = "1:7a42ac43637f5657b28d3668c932d3ca89d13b47bba9bea9938b1599e3dc09e0" + name = "k8s.io/client-go" + packages = [ + "discovery", + "discovery/cached/memory", + "dynamic", + "informers", + "informers/admissionregistration", + "informers/admissionregistration/v1", + "informers/admissionregistration/v1beta1", + "informers/apps", + "informers/apps/v1", + "informers/apps/v1beta1", + "informers/apps/v1beta2", + "informers/auditregistration", + "informers/auditregistration/v1alpha1", + "informers/autoscaling", + "informers/autoscaling/v1", + "informers/autoscaling/v2beta1", + "informers/autoscaling/v2beta2", + "informers/batch", + "informers/batch/v1", + "informers/batch/v1beta1", + "informers/batch/v2alpha1", + "informers/certificates", + "informers/certificates/v1beta1", + "informers/coordination", + "informers/coordination/v1", + "informers/coordination/v1beta1", + "informers/core", + "informers/core/v1", + "informers/events", + "informers/events/v1beta1", + "informers/extensions", + "informers/extensions/v1beta1", + "informers/internalinterfaces", + "informers/networking", + "informers/networking/v1", + "informers/networking/v1beta1", + "informers/node", + "informers/node/v1alpha1", + "informers/node/v1beta1", + "informers/policy", + "informers/policy/v1beta1", + "informers/rbac", + "informers/rbac/v1", + "informers/rbac/v1alpha1", + "informers/rbac/v1beta1", + "informers/scheduling", + "informers/scheduling/v1", + "informers/scheduling/v1alpha1", + "informers/scheduling/v1beta1", + "informers/settings", + "informers/settings/v1alpha1", + "informers/storage", + "informers/storage/v1", + "informers/storage/v1alpha1", + "informers/storage/v1beta1", + "kubernetes", + "kubernetes/scheme", + "kubernetes/typed/admissionregistration/v1", + "kubernetes/typed/admissionregistration/v1beta1", + "kubernetes/typed/apps/v1", + "kubernetes/typed/apps/v1beta1", + "kubernetes/typed/apps/v1beta2", + "kubernetes/typed/auditregistration/v1alpha1", + "kubernetes/typed/authentication/v1", + "kubernetes/typed/authentication/v1beta1", + "kubernetes/typed/authorization/v1", + "kubernetes/typed/authorization/v1beta1", + "kubernetes/typed/autoscaling/v1", + "kubernetes/typed/autoscaling/v2beta1", + "kubernetes/typed/autoscaling/v2beta2", + "kubernetes/typed/batch/v1", + "kubernetes/typed/batch/v1beta1", + "kubernetes/typed/batch/v2alpha1", + "kubernetes/typed/certificates/v1beta1", + "kubernetes/typed/coordination/v1", + "kubernetes/typed/coordination/v1beta1", + "kubernetes/typed/core/v1", + "kubernetes/typed/events/v1beta1", + "kubernetes/typed/extensions/v1beta1", + "kubernetes/typed/networking/v1", + "kubernetes/typed/networking/v1beta1", + "kubernetes/typed/node/v1alpha1", + "kubernetes/typed/node/v1beta1", + "kubernetes/typed/policy/v1beta1", + "kubernetes/typed/rbac/v1", + "kubernetes/typed/rbac/v1alpha1", + "kubernetes/typed/rbac/v1beta1", + "kubernetes/typed/scheduling/v1", + "kubernetes/typed/scheduling/v1alpha1", + "kubernetes/typed/scheduling/v1beta1", + "kubernetes/typed/settings/v1alpha1", + "kubernetes/typed/storage/v1", + "kubernetes/typed/storage/v1alpha1", + "kubernetes/typed/storage/v1beta1", + "listers/admissionregistration/v1", + "listers/admissionregistration/v1beta1", + "listers/apps/v1", + "listers/apps/v1beta1", + "listers/apps/v1beta2", + "listers/auditregistration/v1alpha1", + "listers/autoscaling/v1", + "listers/autoscaling/v2beta1", + "listers/autoscaling/v2beta2", + "listers/batch/v1", + "listers/batch/v1beta1", + "listers/batch/v2alpha1", + "listers/certificates/v1beta1", + "listers/coordination/v1", + "listers/coordination/v1beta1", + "listers/core/v1", + "listers/events/v1beta1", + "listers/extensions/v1beta1", + "listers/networking/v1", + "listers/networking/v1beta1", + "listers/node/v1alpha1", + "listers/node/v1beta1", + "listers/policy/v1beta1", + "listers/rbac/v1", + "listers/rbac/v1alpha1", + "listers/rbac/v1beta1", + "listers/scheduling/v1", + "listers/scheduling/v1alpha1", + "listers/scheduling/v1beta1", + "listers/settings/v1alpha1", + "listers/storage/v1", + "listers/storage/v1alpha1", + "listers/storage/v1beta1", + "metadata", + "metadata/metadatainformer", + "metadata/metadatalister", + "pkg/apis/clientauthentication", + "pkg/apis/clientauthentication/v1alpha1", + "pkg/apis/clientauthentication/v1beta1", + "pkg/version", + "plugin/pkg/client/auth/exec", + "rest", + "rest/watch", + "restmapper", + "scale", + "scale/scheme", + "scale/scheme/appsint", + "scale/scheme/appsv1beta1", + "scale/scheme/appsv1beta2", + "scale/scheme/autoscalingv1", + "scale/scheme/extensionsint", + "scale/scheme/extensionsv1beta1", + "tools/auth", + "tools/cache", + "tools/clientcmd", + "tools/clientcmd/api", + "tools/clientcmd/api/latest", + "tools/clientcmd/api/v1", + "tools/metrics", + "tools/pager", + "tools/record", + "tools/record/util", + "tools/reference", + "tools/remotecommand", + "tools/watch", + "transport", + "transport/spdy", + "util/cert", + "util/connrotation", + "util/exec", + "util/flowcontrol", + "util/homedir", + "util/keyutil", + "util/retry", + "util/workqueue", + ] + pruneopts = "UT" + revision = "554656fd9dfcbbc05d5721e3c4f1298ade0d798c" + version = "kubernetes-1.16.0-alpha.2" + +[[projects]] + branch = "master" + digest = "1:17b5279a66b664afd758908de7ab93622483e877ce2e28728025593a23b681d6" + name = "k8s.io/cloud-provider" + packages = [ + ".", + "node/helpers", + "service/helpers", + "volume", + "volume/errors", + "volume/helpers", + ] + pruneopts = "UT" + revision = "585d8110a88f18f8cb30cf64236f373f84708c63" + +[[projects]] + branch = "master" + digest = "1:7ea7b6554e132327fb6d20c7b8baa38d82d5c42af590200d64d887db73d1df6c" + name = "k8s.io/component-base" + packages = [ + "cli/flag", + "featuregate", + ] + pruneopts = "UT" + revision = "b4f50308a6168b3e1e8687b3fb46e9bf1a112ee5" + +[[projects]] + branch = "master" + digest = "1:02f13bd2d73efce8e487ff71224d14bf878182ced9f50fca481df76c5b4ccb37" + name = "k8s.io/cri-api" + packages = ["pkg/apis/runtime/v1alpha2"] + pruneopts = "UT" + revision = "0b0c4484b3d3cc29ce8890ba0de35d571db071a2" + +[[projects]] + branch = "master" + digest = "1:18507c9ec89a233e7c4ebd883c2fd75a366f02617a169a69b78823728bb22d23" + name = "k8s.io/csi-translation-lib" + packages = [ + ".", + "plugins", + ] + pruneopts = "UT" + revision = "2a445d2079def1aad9183f2393ee1a14ffb66135" + +[[projects]] + digest = "1:c283ca5951eb7d723d3300762f96ff94c2ea11eaceb788279e2b7327f92e4f2a" + name = "k8s.io/klog" + packages = ["."] + pruneopts = "UT" + revision = "d98d8acdac006fb39831f1b25640813fef9c314f" + version = "v0.3.3" + +[[projects]] + branch = "master" + digest = "1:22abb5d4204ab1a0dcc9cda64906a31c43965ff5159e8b9f766c9d2a162dbed5" + name = "k8s.io/kube-openapi" + packages = ["pkg/util/proto"] + pruneopts = "UT" + revision = "3cf2ea39288623b60ec6ed8423a75b8e996fe289" + +[[projects]] + branch = "master" + digest = "1:c08a39ebc2e7b48ac4d502b197c9f6511d8728a26c76f654dd8b65307fddb3b8" + name = "k8s.io/kubectl" + packages = [ + "pkg/util", + "pkg/util/deployment", + "pkg/util/podutils", + ] + pruneopts = "UT" + revision = "1937123dfffc6b1fa98da7016ffbf8f0c4285522" + +[[projects]] + digest = "1:2fc1399180f3b8380391ff30f17ea1913a3e463e694cfb1bcb79113963df652e" + name = "k8s.io/kubernetes" + packages = [ + "pkg/api/legacyscheme", + "pkg/api/service", + "pkg/api/v1/pod", + "pkg/apis/apps", + "pkg/apis/apps/validation", + "pkg/apis/autoscaling", + "pkg/apis/batch", + "pkg/apis/core", + "pkg/apis/core/helper", + "pkg/apis/core/install", + "pkg/apis/core/pods", + "pkg/apis/core/v1", + "pkg/apis/core/v1/helper", + "pkg/apis/core/v1/helper/qos", + "pkg/apis/core/validation", + "pkg/apis/extensions", + "pkg/apis/networking", + "pkg/apis/policy", + "pkg/apis/policy/validation", + "pkg/apis/scheduling", + "pkg/apis/storage/v1/util", + "pkg/capabilities", + "pkg/client/conditions", + "pkg/controller", + "pkg/controller/deployment/util", + "pkg/controller/nodelifecycle", + "pkg/controller/nodelifecycle/scheduler", + "pkg/controller/service", + "pkg/controller/util/node", + "pkg/controller/volume/persistentvolume/util", + "pkg/controller/volume/scheduling", + "pkg/features", + "pkg/fieldpath", + "pkg/kubectl", + "pkg/kubelet/apis", + "pkg/kubelet/apis/config", + "pkg/kubelet/apis/stats/v1alpha1", + "pkg/kubelet/checkpoint", + "pkg/kubelet/checkpointmanager", + "pkg/kubelet/checkpointmanager/checksum", + "pkg/kubelet/checkpointmanager/errors", + "pkg/kubelet/configmap", + "pkg/kubelet/container", + "pkg/kubelet/dockershim/metrics", + "pkg/kubelet/events", + "pkg/kubelet/lifecycle", + "pkg/kubelet/metrics", + "pkg/kubelet/pod", + "pkg/kubelet/secret", + "pkg/kubelet/sysctl", + "pkg/kubelet/types", + "pkg/kubelet/util", + "pkg/kubelet/util/format", + "pkg/kubelet/util/manager", + "pkg/kubelet/util/store", + "pkg/master/ports", + "pkg/scheduler/algorithm", + "pkg/scheduler/algorithm/predicates", + "pkg/scheduler/algorithm/priorities/util", + "pkg/scheduler/api", + "pkg/scheduler/metrics", + "pkg/scheduler/nodeinfo", + "pkg/scheduler/util", + "pkg/scheduler/volumebinder", + "pkg/security/apparmor", + "pkg/security/podsecuritypolicy/seccomp", + "pkg/security/podsecuritypolicy/util", + "pkg/serviceaccount", + "pkg/ssh", + "pkg/util/filesystem", + "pkg/util/hash", + "pkg/util/labels", + "pkg/util/metrics", + "pkg/util/mount", + "pkg/util/node", + "pkg/util/parsers", + "pkg/util/resizefs", + "pkg/util/slice", + "pkg/util/system", + "pkg/util/taints", + "pkg/volume", + "pkg/volume/util", + "pkg/volume/util/fs", + "pkg/volume/util/fsquota", + "pkg/volume/util/fsquota/common", + "pkg/volume/util/recyclerclient", + "pkg/volume/util/subpath", + "pkg/volume/util/types", + "pkg/volume/util/volumepathhandler", + "test/e2e/framework", + "test/e2e/framework/auth", + "test/e2e/framework/config", + "test/e2e/framework/deployment", + "test/e2e/framework/ginkgowrapper", + "test/e2e/framework/kubelet", + "test/e2e/framework/log", + "test/e2e/framework/metrics", + "test/e2e/framework/node", + "test/e2e/framework/pod", + "test/e2e/framework/podlogs", + "test/e2e/framework/providers/aws", + "test/e2e/framework/resource", + "test/e2e/framework/ssh", + "test/e2e/framework/statefulset", + "test/e2e/framework/testfiles", + "test/e2e/framework/volume", + "test/e2e/manifest", + "test/e2e/perftype", + "test/e2e/storage/drivers", + "test/e2e/storage/testpatterns", + "test/e2e/storage/testsuites", + "test/e2e/storage/utils", + "test/e2e/storage/vsphere", + "test/utils", + "test/utils/image", + "third_party/forked/golang/expansion", + ] + pruneopts = "UT" + revision = "a23fc83fcd6b0602fcc6de017c97fac85251a44f" + version = "v1.16.0-alpha.2" + +[[projects]] + branch = "master" + digest = "1:99416b4d2bb81ceab5592071159724a0b111655f1ec4ba367bb575731e7c3c67" + name = "k8s.io/legacy-cloud-providers" + packages = ["aws"] + pruneopts = "UT" + revision = "1ae6510dd5d3c70e8c0ad0e90327f19803c87830" + +[[projects]] + branch = "master" + digest = "1:45eab9c679400487d1823e7a4019b618d71ff9274bd67b6dfae0e9b39c0c3516" + name = "k8s.io/utils" + packages = [ + "buffer", + "exec", + "integer", + "io", + "keymutex", + "net", + "nsenter", + "path", + "pointer", + "strings", + "trace", + ] + pruneopts = "UT" + revision = "3dccf664f023863740c508fb4284e49742bedfa4" + +[[projects]] + digest = "1:7719608fe0b52a4ece56c2dde37bedd95b938677d1ab0f84b8a7852e4c59f849" + name = "sigs.k8s.io/yaml" + packages = ["."] + pruneopts = "UT" + revision = "fd68e9863619f6ec2fdd8625fe1f02e7c877e480" + version = "v1.1.0" + +[solve-meta] + analyzer-name = "dep" + analyzer-version = 1 + input-imports = [ + "github.com/onsi/ginkgo", + "github.com/onsi/gomega", + "k8s.io/kubernetes/test/e2e/framework", + "k8s.io/kubernetes/test/e2e/framework/providers/aws", + "k8s.io/kubernetes/test/e2e/storage/drivers", + "k8s.io/kubernetes/test/e2e/storage/testsuites", + ] + solver-name = "gps-cdcl" + solver-version = 1 diff --git a/tests/e2e-in-tree/Gopkg.toml b/tests/e2e-in-tree/Gopkg.toml new file mode 100644 index 0000000000..9263561036 --- /dev/null +++ b/tests/e2e-in-tree/Gopkg.toml @@ -0,0 +1,40 @@ +[[constraint]] + name = "k8s.io/kubernetes" + version = "v1.16.0-alpha.2" + +[[constraint]] + name = "github.com/onsi/ginkgo" + version = "1.8.0" + +[[constraint]] + name = "github.com/onsi/gomega" + version = "1.5.0" + +[[override]] + name = "k8s.io/client-go" + version = "kubernetes-1.16.0-alpha.2" + +[[override]] + name = "k8s.io/api" + version = "kubernetes-1.16.0-alpha.2" + +[[override]] + name = "k8s.io/apiextensions-apiserver" + version = "kubernetes-1.16.0-alpha.2" + +[[override]] + name = "k8s.io/apimachinery" + version = "kubernetes-1.16.0-alpha.2" + +[[override]] + name = "k8s.io/apiserver" + version = "kubernetes-1.16.0-alpha.2" + +[[override]] + name = "gopkg.in/fsnotify.v1" + version = "1.4.7" + source = "https://github.com/fsnotify/fsnotify.git" + +[prune] + go-tests = true + unused-packages = true diff --git a/tests/e2e-in-tree/README.md b/tests/e2e-in-tree/README.md new file mode 100644 index 0000000000..a69e720993 --- /dev/null +++ b/tests/e2e-in-tree/README.md @@ -0,0 +1,12 @@ +# Prerequisites +- kubernetes 1.15+ AWS cluster + +# Run +```sh +dep ensure +GO111MODULE=off go test -v -timeout 0 ./... -kubeconfig=$HOME/.kube/config -ginkgo.focus="\[ebs-csi-migration\]" -ginkgo.skip="\[Disruptive\]|should.access.volume.from.different.nodes|block.volmode|volume-expand" -gce-zone=us-west-2 + +``` +# FAQ +- empty `go.mod` because: https://github.com/golang/go/wiki/Modules#can-an-additional-gomod-exclude-unnecessary-content-do-modules-have-the-equivalent-of-a-gitignore-file +- kubernetes 1.15+ uses go modules, but importing the e2e framework is hard, so use vendoring via dep diff --git a/tests/e2e-in-tree/e2e_test.go b/tests/e2e-in-tree/e2e_test.go new file mode 100644 index 0000000000..75fe0434a7 --- /dev/null +++ b/tests/e2e-in-tree/e2e_test.go @@ -0,0 +1,77 @@ +/* +Copyright 2018 The Kubernetes Authors. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + http://www.apache.org/licenses/LICENSE-2.0 +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + +package e2e + +import ( + "flag" + "os" + "path/filepath" + "testing" + + "github.com/onsi/ginkgo" + "github.com/onsi/gomega" + "k8s.io/kubernetes/test/e2e/framework" + "k8s.io/kubernetes/test/e2e/storage/drivers" + "k8s.io/kubernetes/test/e2e/storage/testsuites" + + // ensure that cloud provider is loaded + _ "k8s.io/kubernetes/test/e2e/framework/providers/aws" +) + +const kubeconfigEnvVar = "KUBECONFIG" + +func init() { + // k8s.io/kubernetes/test/e2e/framework requires env KUBECONFIG to be set + // it does not fall back to defaults + if os.Getenv(kubeconfigEnvVar) == "" { + kubeconfig := filepath.Join(os.Getenv("HOME"), ".kube", "config") + os.Setenv(kubeconfigEnvVar, kubeconfig) + } + framework.RegisterCommonFlags(flag.CommandLine) + framework.RegisterClusterFlags(flag.CommandLine) + _ = flag.Set("storage.migratedPlugins", "kubernetes.io/aws-ebs") + _ = flag.Set("provider", "aws") + flag.Parse() + framework.AfterReadingAllFlags(&framework.TestContext) +} + +func TestEBSCSI(t *testing.T) { + gomega.RegisterFailHandler(ginkgo.Fail) + ginkgo.RunSpecs(t, "EBS CSI Suite") +} + +// List of testSuites to be executed in below loop +var csiTestSuites = []func() testsuites.TestSuite{ + testsuites.InitVolumesTestSuite, + testsuites.InitVolumeIOTestSuite, + testsuites.InitVolumeModeTestSuite, + testsuites.InitSubPathTestSuite, + testsuites.InitProvisioningTestSuite, + testsuites.InitSnapshottableTestSuite, + testsuites.InitVolumeExpandTestSuite, + // TODO kops provisions 1 node per zone & test can't tolerate that situation. + //testsuites.InitMultiVolumeTestSuite, +} + +var _ = ginkgo.Describe("[ebs-csi-migration] EBS CSI Migration", func() { + // Init the *in-tree* driver. + // The CSIMigration & CSIMigrationAWS feature gates must be enabled on the cluster. + // The storage.migratedPlugins flag must be set to "kubernetes.io/aws-ebs". Then the tests will + // validate that CSI, not in-tree, operations are happening. + driver := drivers.InitAwsDriver() + ginkgo.Context(testsuites.GetDriverNameWithFeatureTags( drivers.InitAwsDriver()), func() { + testsuites.DefineTestSuite(driver, csiTestSuites) + }) +}) diff --git a/tests/e2e-in-tree/go.mod b/tests/e2e-in-tree/go.mod new file mode 100644 index 0000000000..e69de29bb2