diff --git a/.travis.yml b/.travis.yml index 0b724f1f4bb..64b4cc96b12 100644 --- a/.travis.yml +++ b/.travis.yml @@ -27,7 +27,7 @@ jobs: install: - make go-mod-download before_script: - - docker pull kindest/node:v1.17.2 + - docker pull kindest/node:v1.18.2 - make start-kind script: - make build @@ -44,7 +44,7 @@ jobs: install: - make go-mod-download before_script: - - docker pull kindest/node:v1.17.2 + - docker pull kindest/node:v1.18.2 - make start-kind - make install-minio script: diff --git a/build/codegen.sh b/build/codegen.sh index 9d7fbc5841e..34704cf9686 100755 --- a/build/codegen.sh +++ b/build/codegen.sh @@ -22,7 +22,7 @@ set -o xtrace export GO111MODULE=on go mod download -execDir="/go/pkg/mod/k8s.io/code-generator@$(go list -f '{{.Version}}' -m k8s.io/code-generator)" +execDir="$GOPATH/pkg/mod/k8s.io/code-generator@$(go list -f '{{.Version}}' -m k8s.io/code-generator)" chmod +x "${execDir}"/generate-groups.sh "${execDir}"/generate-groups.sh \ all \ diff --git a/build/local_kubernetes.sh b/build/local_kubernetes.sh index bd7daf88005..ffbb823441c 100755 --- a/build/local_kubernetes.sh +++ b/build/local_kubernetes.sh @@ -15,7 +15,7 @@ export MINIKUBE_WANTREPORTERRORPROMPT=false export MINIKUBE_HOME=$HOME export CHANGE_MINIKUBE_NONE_USER=true export KUBECONFIG=$HOME/.kube/config -export KUBE_VERSION=${KUBE_VERSION:-"v1.17.2"} +export KUBE_VERSION=${KUBE_VERSION:-"v1.18.2"} export KIND_VERSION=${KIND_VERSION:-"v0.5.1"} export LOCAL_CLUSTER_NAME=${LOCAL_CLUSTER_NAME:-"kanister"} export LOCAL_PATH_PROV_VERSION="v0.0.11" @@ -52,7 +52,7 @@ start_localkube() { then get_localkube fi - kind create cluster --name ${LOCAL_CLUSTER_NAME} --image=kindest/node:${KUBE_VERSION} + kind create cluster --name ${LOCAL_CLUSTER_NAME} --image=kindest/node:${KUBE_VERSION} -v 1 if [ -e ${KUBECONFIG} ]; then cp -fr ${KUBECONFIG} ${HOME}/.kube/config_bk fi diff --git a/go.mod b/go.mod index 2193d2e81a1..19cd0c5803c 100644 --- a/go.mod +++ b/go.mod @@ -20,7 +20,6 @@ require ( github.com/Masterminds/semver v1.4.2 github.com/Masterminds/sprig v2.15.0+incompatible github.com/aokoli/goutils v1.1.0 // indirect - github.com/asaskevich/govalidator v0.0.0-20190424111038-f61b66f89f4a // indirect github.com/aws/aws-sdk-go v1.31.3 github.com/cheekybits/is v0.0.0-20150225183255-68e9c0620927 // indirect github.com/dnaeon/go-vcr v1.0.1 // indirect @@ -29,14 +28,12 @@ require ( github.com/elazarl/goproxy/ext v0.0.0-20190711103511-473e67f1d7d2 // indirect github.com/evanphx/json-patch v4.5.0+incompatible // indirect github.com/ghodss/yaml v1.0.1-0.20190212211648-25d852aebe32 - github.com/go-openapi/errors v0.19.2 // indirect - github.com/go-openapi/strfmt v0.0.0-20170822153411-610b6cacdcde + github.com/go-openapi/strfmt v0.19.3 github.com/google/uuid v1.1.1 github.com/googleapis/gnostic v0.3.0 // indirect github.com/graymeta/stow v0.0.0-00010101000000-000000000000 github.com/huandu/xstrings v1.2.0 // indirect github.com/imdario/mergo v0.3.7 // indirect - github.com/inconshreveable/mousetrap v1.0.0 // indirect github.com/jarcoal/httpmock v1.0.4 // indirect github.com/jpillora/backoff v0.0.0-20170918002102-8eab2debe79d github.com/json-iterator/go v1.1.9 @@ -44,36 +41,28 @@ require ( github.com/kopia/kopia v0.4.1-0.20200608151401-25934a544df4 github.com/lib/pq v1.2.0 github.com/luci/go-render v0.0.0-20160219211803-9a04cc21af0f - github.com/mailru/easyjson v0.0.0-20190626092158-b2ccc519800e // indirect github.com/mitchellh/mapstructure v1.1.2 - github.com/onsi/ginkgo v1.7.0 // indirect - github.com/onsi/gomega v1.4.3 // indirect - github.com/openshift/api v0.0.0-20190402135445-d2f01e7b77a6 - github.com/openshift/client-go v0.0.0-20190402163854-7cc0953bbbb7 - github.com/pborman/uuid v1.2.0 // indirect + + //pinned openshift to release-4.5 branch + github.com/openshift/api v0.0.0-20200526144822-34f54f12813a + github.com/openshift/client-go v0.0.0-20200521150516-05eb9880269c github.com/pkg/errors v0.9.1 github.com/prometheus/client_golang v1.6.0 github.com/renier/xmlrpc v0.0.0-20170708154548-ce4a1a486c03 // indirect github.com/satori/go.uuid v1.2.0 github.com/sirupsen/logrus v1.6.0 github.com/softlayer/softlayer-go v0.0.0-20190615201252-ba6e7f295217 // indirect - github.com/spf13/cobra v0.0.3 - github.com/spf13/pflag v1.0.5 // indirect + github.com/spf13/cobra v0.0.5 github.com/vmware/govmomi v0.21.1-0.20191008161538-40aebf13ba45 go.uber.org/zap v1.15.0 golang.org/x/oauth2 v0.0.0-20200107190931-bf48bf16ab8d google.golang.org/api v0.25.0 gopkg.in/check.v1 v1.0.0-20190902080502-41f04d3bba15 - gopkg.in/inf.v0 v0.9.1 // indirect - gopkg.in/mgo.v2 v2.0.0-20180705113604-9856a29383ce // indirect gopkg.in/tomb.v2 v2.0.0-20161208151619-d5d1b5820637 - gopkg.in/yaml.v2 v2.2.7 // indirect - k8s.io/api v0.0.0-20190708174958-539a33f6e817 - k8s.io/apiextensions-apiserver v0.0.0-20190708181606-527eacf2d4b7 - k8s.io/apimachinery v0.0.0-20190404173353-6a84e37a896d - k8s.io/client-go v11.0.1-0.20190708175433-62e1c231c5dc+incompatible - k8s.io/klog v0.3.0 // indirect - k8s.io/kube-openapi v0.0.0-20190208205540-d7c86cdc46e3 // indirect - k8s.io/utils v0.0.0-20190221042446-c2654d5206da // indirect - sigs.k8s.io/yaml v1.1.0 // indirect + + //pinned k8s.io to v0.18.3 tag + k8s.io/api v0.18.3 + k8s.io/apiextensions-apiserver v0.18.3 + k8s.io/apimachinery v0.18.3 + k8s.io/client-go v0.18.3 ) diff --git a/go.sum b/go.sum index b739aa3fa29..5633db77fc7 100644 --- a/go.sum +++ b/go.sum @@ -21,12 +21,15 @@ cloud.google.com/go/bigquery v1.0.1/go.mod h1:i/xbL2UlR5RvWAURpBYZTtm/cXjCha9lbf cloud.google.com/go/bigquery v1.3.0/go.mod h1:PjpwJnslEMmckchkHFfq+HTD2DmtT67aNFKH1/VBDHE= cloud.google.com/go/bigquery v1.4.0/go.mod h1:S8dzgnTigyfTmLBfrtrhyYhwRxG72rYxvftPBK2Dvzc= cloud.google.com/go/bigquery v1.5.0/go.mod h1:snEHRnqQbz117VIFhE8bmtwIDY80NLUZUMb4Nv6dBIg= +cloud.google.com/go/bigquery v1.7.0 h1:a/O/bK/vWrYGOTFtH8di4rBxMZnmkjy+Y5LxpDwo+dA= cloud.google.com/go/bigquery v1.7.0/go.mod h1://okPTzCYNXSlb24MZs83e2Do+h+VXtc4gLoIoXIAPc= cloud.google.com/go/datastore v1.0.0/go.mod h1:LXYbyblFSglQ5pkeyhO+Qmw7ukd3C+pD7TKLgZqpHYE= +cloud.google.com/go/datastore v1.1.0 h1:/May9ojXjRkPBNVrq+oWLqmWCkr4OU5uRY29bu0mRyQ= cloud.google.com/go/datastore v1.1.0/go.mod h1:umbIZjpQpHh4hmRpGhH4tLFup+FVzqBi1b3c64qFpCk= cloud.google.com/go/pubsub v1.0.1/go.mod h1:R0Gpsv3s54REJCy4fxDixWD93lHJMoZTyQ2kNxGRt3I= cloud.google.com/go/pubsub v1.1.0/go.mod h1:EwwdRX2sKPjnvnqCa270oGRyludottCI76h+R3AArQw= cloud.google.com/go/pubsub v1.2.0/go.mod h1:jhfEVHT8odbXTkndysNHCcx0awwzvfOlguIAii9o8iA= +cloud.google.com/go/pubsub v1.3.1 h1:ukjixP1wl0LpnZ6LWtZJ0mX5tBmjp1f8Sqer8Z2OMUU= cloud.google.com/go/pubsub v1.3.1/go.mod h1:i+ucay31+CNRpDW4Lu78I4xXG+O1r/MAHgjpRVR+TSU= cloud.google.com/go/storage v1.0.0/go.mod h1:IhtSnM/ZTZV8YYJWCY8RULGVqBDmpoyjwiyrjsg+URw= cloud.google.com/go/storage v1.5.0/go.mod h1:tpKbwo567HUNpVclU5sGELwQWBDZ8gh0ZeosJ0Rtdos= @@ -53,6 +56,7 @@ github.com/Azure/azure-sdk-for-go v38.0.0+incompatible/go.mod h1:9XXNKU+eRnpl9mo github.com/Azure/azure-service-bus-go v0.9.1/go.mod h1:yzBx6/BUGfjfeqbRZny9AQIbIe3AcV9WZbAdpkoXOa0= github.com/Azure/azure-storage-blob-go v0.8.0 h1:53qhf0Oxa0nOjgbDeeYPUeyiNmafAFEY95rZLK0Tj6o= github.com/Azure/azure-storage-blob-go v0.8.0/go.mod h1:lPI3aLPpuLTeUwh1sViKXFxwl2B6teiRqI0deQUvsw0= +github.com/Azure/go-ansiterm v0.0.0-20170929234023-d6e3b3328b78/go.mod h1:LmzpDX56iTiv29bbRTIsUNlaFfuhWRQBWjQdVyAevI8= github.com/Azure/go-autorest v11.7.1+incompatible/go.mod h1:r+4oMnoxhatjLLJ6zxSWATqVooLgysK6ZNox3g/xq24= github.com/Azure/go-autorest v12.0.0+incompatible h1:N+VqClcomLGD/sHb3smbSYYtNMgKpVV3Cd5r5i8z6bQ= github.com/Azure/go-autorest v12.0.0+incompatible/go.mod h1:r+4oMnoxhatjLLJ6zxSWATqVooLgysK6ZNox3g/xq24= @@ -101,9 +105,20 @@ github.com/Masterminds/semver v1.4.2 h1:WBLTQ37jOCzSLtXNdoo8bNM8876KhNqOKvrlGITg github.com/Masterminds/semver v1.4.2/go.mod h1:MB6lktGJrhw8PrUyiEoblNEGEQ+RzHPF078ddwwvV3Y= github.com/Masterminds/sprig v2.15.0+incompatible h1:0gSxPGWS9PAr7U2NsQ2YQg6juRDINkUyuvbb4b2Xm8w= github.com/Masterminds/sprig v2.15.0+incompatible/go.mod h1:y6hNFY5UBTIWBxnzTeuNhlNS5hqE0NB0E6fgfo2Br3o= +github.com/NYTimes/gziphandler v0.0.0-20170623195520-56545f4a5d46 h1:lsxEuwrXEAokXB9qhlbKWPpo3KMLZQ5WB5WLQRW1uq0= +github.com/NYTimes/gziphandler v0.0.0-20170623195520-56545f4a5d46/go.mod h1:3wb06e3pkSAbeQ52E9H9iFoQsEEwGN64994WTCIhntQ= +github.com/PuerkitoBio/purell v1.0.0/go.mod h1:c11w/QuzBsJSee3cPx9rAFu61PvFxuPbtSwDGJws/X0= +github.com/PuerkitoBio/purell v1.1.0/go.mod h1:c11w/QuzBsJSee3cPx9rAFu61PvFxuPbtSwDGJws/X0= +github.com/PuerkitoBio/purell v1.1.1 h1:WEQqlqaGbrPkxLJWfBwQmfEAE1Z7ONdDLqrN38tNFfI= +github.com/PuerkitoBio/purell v1.1.1/go.mod h1:c11w/QuzBsJSee3cPx9rAFu61PvFxuPbtSwDGJws/X0= +github.com/PuerkitoBio/urlesc v0.0.0-20160726150825-5bd2802263f2/go.mod h1:uGdkoq3SwY9Y+13GIhn11/XLaGBb4BfwItxLd5jeuXE= +github.com/PuerkitoBio/urlesc v0.0.0-20170810143723-de5bf2ad4578 h1:d+Bc7a5rLufV/sSk/8dngufqelfh6jnri85riMAaF/M= +github.com/PuerkitoBio/urlesc v0.0.0-20170810143723-de5bf2ad4578/go.mod h1:uGdkoq3SwY9Y+13GIhn11/XLaGBb4BfwItxLd5jeuXE= github.com/Shopify/sarama v1.24.1/go.mod h1:fGP8eQ6PugKEI0iUETYYtnP6d1pH/bdDMTel1X5ajsU= github.com/Shopify/toxiproxy v2.1.4+incompatible/go.mod h1:OXgGpZ6Cli1/URJOF1DMxUHB2q5Ap20/P/eIdh4G0pI= +github.com/StackExchange/wmi v0.0.0-20190523213315-cbe66965904d h1:G0m3OIz70MZUWq3EgK3CesDbo8upS2Vm9/P3FtgI+Jk= github.com/StackExchange/wmi v0.0.0-20190523213315-cbe66965904d/go.mod h1:3eOhrUMpNV+6aFIbp5/iudMxNCF27Vw2OZgy4xEx0Fg= +github.com/agnivade/levenshtein v1.0.1/go.mod h1:CURSv5d9Uaml+FovSIICkLbAUZ9S4RqaHDIsdSBg7lM= github.com/alecthomas/participle v0.2.1/go.mod h1:SW6HZGeZgSIpcUWX3fXpfZhuaWHnmoD5KCVaqSaNTkk= github.com/alecthomas/template v0.0.0-20160405071501-a0175ee3bccc/go.mod h1:LOuyumcjzFXgccqObfd/Ljyb9UuFJ6TxHnclSeseNhc= github.com/alecthomas/template v0.0.0-20190718012654-fb15b899a751 h1:JYp7IbQjafoB+tBA3gMyHYHrpOtNuDiK/uB5uXxq5wM= @@ -112,11 +127,14 @@ github.com/alecthomas/units v0.0.0-20151022065526-2efee857e7cf/go.mod h1:ybxpYRF github.com/alecthomas/units v0.0.0-20190717042225-c3de453c63f4/go.mod h1:ybxpYRFXyAe+OPACYpWeL0wqObRcbAqCMya13uyzqw0= github.com/alecthomas/units v0.0.0-20190924025748-f65c72e2690d h1:UQZhZ2O0vMHr2cI+DC1Mbh0TJxzA3RcLoMsFw+aXw7E= github.com/alecthomas/units v0.0.0-20190924025748-f65c72e2690d/go.mod h1:rBZYJk541a8SKzHPHnH3zbiI+7dagKZ0cgpgrD7Fyho= +github.com/andreyvit/diff v0.0.0-20170406064948-c7f18ee00883/go.mod h1:rCTlJbsFo29Kk6CurOXKm700vrz8f0KW0JNfpkRJY/8= github.com/aokoli/goutils v1.1.0 h1:jy4ghdcYvs5EIoGssZNslIASX5m+KNMfyyKvRQ0TEVE= github.com/aokoli/goutils v1.1.0/go.mod h1:SijmP0QR8LtwsmDs8Yii5Z/S4trXFGFC2oO5g9DP+DQ= +github.com/armon/consul-api v0.0.0-20180202201655-eb2c6b5be1b6/go.mod h1:grANhF5doyWs3UAsr3K4I6qtAmlQcZDesFNEHPZAzj8= github.com/armon/go-metrics v0.0.0-20180917152333-f0300d1749da/go.mod h1:Q73ZrmVTwzkszR9V5SSuryQ31EELlFMUz1kKyl939pY= github.com/armon/go-metrics v0.0.0-20190430140413-ec5e00d3c878/go.mod h1:3AMJUQhVx52RsWOnlkpikZr01T/yAVN2gn0861vByNg= github.com/armon/go-radix v0.0.0-20180808171621-7fddfc383310/go.mod h1:ufUuZ+zHj4x4TnLV4JWEpy2hxWSpsRywHrMgIH9cCH8= +github.com/asaskevich/govalidator v0.0.0-20180720115003-f9ffefc3facf/go.mod h1:lB+ZfQJz7igIIfQNfa7Ml4HSf2uFQQRzpGGRXenZAgY= github.com/asaskevich/govalidator v0.0.0-20190424111038-f61b66f89f4a h1:idn718Q4B6AGu/h5Sxe66HYVdqdGu2l9Iebqhi/AEoA= github.com/asaskevich/govalidator v0.0.0-20190424111038-f61b66f89f4a/go.mod h1:lB+ZfQJz7igIIfQNfa7Ml4HSf2uFQQRzpGGRXenZAgY= github.com/aws/aws-sdk-go v1.15.27/go.mod h1:mFuSZ37Z9YOHbQEwBWztmVzqXrEkub65tZoCYDt7FT0= @@ -134,6 +152,8 @@ github.com/beorn7/perks v1.0.1 h1:VlbKKnNfV8bJzeqoa4cOKqO6bYr3WgKZxO8Z16+hsOM= github.com/beorn7/perks v1.0.1/go.mod h1:G2ZrVWU2WbWT9wwq4/hrbKbnv/1ERSJQ0ibhJ6rlkpw= github.com/bgentry/speakeasy v0.1.0 h1:ByYyxL9InA1OWqxJqqp2A5pYHUrCiAL6K3J+LKSsQkY= github.com/bgentry/speakeasy v0.1.0/go.mod h1:+zsyZBPWlz7T6j88CTgSN5bM796AkVf0kBD4zp0CCIs= +github.com/blang/semver v3.5.0+incompatible h1:CGxCgetQ64DKk7rdZ++Vfnb1+ogGNnB17OJKJXD2Cfs= +github.com/blang/semver v3.5.0+incompatible/go.mod h1:kRBLl5iJ+tD4TcOOxsy/0fnwebNt5EWlYSAyrTnjyyk= github.com/boltdb/bolt v1.3.1/go.mod h1:clJnj/oiGkjum5o1McbSZDSLxVThjynRyGBgiAx27Ps= github.com/census-instrumentation/opencensus-proto v0.2.0 h1:LzQXZOgg4CQfE6bFvXGM30YZL1WW/M337pXml+GrcZ4= github.com/census-instrumentation/opencensus-proto v0.2.0/go.mod h1:f6KPmirojxKA12rnyqOA5BBL4O983OfeGPqjHWSTneU= @@ -152,12 +172,24 @@ github.com/circonus-labs/circonus-gometrics v2.3.1+incompatible/go.mod h1:nmEj6D github.com/circonus-labs/circonusllhist v0.1.3/go.mod h1:kMXHVDlOchFAehlya5ePtbp5jckzBHf4XRpQvBOLI+I= github.com/client9/misspell v0.3.4/go.mod h1:qj6jICC3Q7zFZvVWo7KLAzC3yx5G7kyvSDkc90ppPyw= github.com/cncf/udpa/go v0.0.0-20191209042840-269d4d468f6f/go.mod h1:M8M6+tZqaGXZJjfX53e64911xZQV5JYwmTeXPW+k8Sc= +github.com/cockroachdb/datadriven v0.0.0-20190809214429-80d97fb3cbaa/go.mod h1:zn76sxSg3SzpJ0PPJaLDCu+Bu0Lg3sKTORVIj19EIF8= github.com/coredns/coredns v1.4.0/go.mod h1:zASH/MVDgR6XZTbxvOnsZfffS+31vg6Ackf/wo1+AM0= github.com/coreos/bbolt v1.3.3/go.mod h1:iRUV2dpdMOn7Bo10OQBFzIJO9kkE559Wcmn+qkEiiKk= +github.com/coreos/etcd v3.3.10+incompatible/go.mod h1:uF7uidLiAD3TWHmW31ZFd/JWoc32PjwdhPthX9715RE= github.com/coreos/etcd v3.3.12+incompatible/go.mod h1:uF7uidLiAD3TWHmW31ZFd/JWoc32PjwdhPthX9715RE= +github.com/coreos/go-etcd v2.0.0+incompatible/go.mod h1:Jez6KQU2B/sWsbdaef3ED8NzMklzPG4d5KIOhIy30Tk= +github.com/coreos/go-oidc v2.1.0+incompatible/go.mod h1:CgnwVTmzoESiwO9qyAFEMiHoZ1nMCKZlZ9V6mm3/LKc= +github.com/coreos/go-semver v0.2.0/go.mod h1:nnelYz7RCh+5ahJtPPxZlU+153eP4D4r3EedlOD2RNk= github.com/coreos/go-semver v0.3.0/go.mod h1:nnelYz7RCh+5ahJtPPxZlU+153eP4D4r3EedlOD2RNk= +github.com/coreos/go-systemd v0.0.0-20180511133405-39ca1b05acc7/go.mod h1:F5haX7vjVVG0kc13fIWeqUViNPyEJxv/OmvnBo0Yme4= +github.com/coreos/go-systemd v0.0.0-20190321100706-95778dfbb74e h1:Wf6HqHfScWJN9/ZjdUKyjop4mf3Qdd+1TvvltAvM3m8= github.com/coreos/go-systemd v0.0.0-20190321100706-95778dfbb74e/go.mod h1:F5haX7vjVVG0kc13fIWeqUViNPyEJxv/OmvnBo0Yme4= +github.com/coreos/pkg v0.0.0-20160727233714-3ac0863d7acf/go.mod h1:E3G3o1h8I7cfcXa63jLwjI0eiQQMgzzUDFVpN/nH/eA= +github.com/coreos/pkg v0.0.0-20180108230652-97fdf19511ea/go.mod h1:E3G3o1h8I7cfcXa63jLwjI0eiQQMgzzUDFVpN/nH/eA= +github.com/coreos/pkg v0.0.0-20180928190104-399ea9e2e55f h1:lBNOc5arjvs8E5mO2tbpBpLoyyu8B6e44T7hJy6potg= github.com/coreos/pkg v0.0.0-20180928190104-399ea9e2e55f/go.mod h1:E3G3o1h8I7cfcXa63jLwjI0eiQQMgzzUDFVpN/nH/eA= +github.com/cpuguy83/go-md2man v1.0.10/go.mod h1:SmD6nW6nTyfqj6ABTjUi3V3JVMnlJmwcJI5acqYI6dE= +github.com/creack/pty v1.1.7/go.mod h1:lj5s0c3V2DBrqTV7llrYr5NG6My20zk30Fl46Y7DoTY= github.com/danieljoos/wincred v1.0.2 h1:zf4bhty2iLuwgjgpraD2E9UbvO+fe54XXGJbOwe23fU= github.com/danieljoos/wincred v1.0.2/go.mod h1:SnuYRW9lp1oJrZX/dXJqr0cPK5gYXqx3EJbmjhLdK9U= github.com/davecgh/go-spew v1.1.0/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38= @@ -172,8 +204,14 @@ github.com/dimchansky/utfbom v1.1.0/go.mod h1:rO41eb7gLfo8SF1jd9F8HplJm1Fewwi4mQ github.com/djherbis/atime v1.0.0/go.mod h1:5W+KBIuTwVGcqjIfaTwt+KSYX1o6uep8dtevevQP/f8= github.com/dnaeon/go-vcr v1.0.1 h1:r8L/HqC0Hje5AXMu1ooW8oyQyOFv4GxqpL0nRP7SLLY= github.com/dnaeon/go-vcr v1.0.1/go.mod h1:aBB1+wY4s93YsC3HHjMBMrwTj2R9FHDzUr9KyGc8n1E= +github.com/docker/docker v0.7.3-0.20190327010347-be7ac8be2ae0/go.mod h1:eEKB0N0r5NX/I1kEveEz05bcu8tLC/8azJZsviup8Sk= +github.com/docker/go-units v0.3.3/go.mod h1:fgPhTUdO+D/Jk86RDLlptpiXQzgHJF7gydDDbaIK4Dk= +github.com/docker/go-units v0.4.0/go.mod h1:fgPhTUdO+D/Jk86RDLlptpiXQzgHJF7gydDDbaIK4Dk= +github.com/docker/spdystream v0.0.0-20160310174837-449fdfce4d96/go.mod h1:Qh8CwZgvJUkLughtfhJv5dyTYa91l1fOUCrgjqmcifM= github.com/docker/spdystream v0.0.0-20181023171402-6480d4af844c h1:ZfSZ3P3BedhKGUhzj7BQlPSU4OvT6tfOKe3DVHzOA7s= github.com/docker/spdystream v0.0.0-20181023171402-6480d4af844c/go.mod h1:Qh8CwZgvJUkLughtfhJv5dyTYa91l1fOUCrgjqmcifM= +github.com/dustin/go-humanize v0.0.0-20171111073723-bb3d318650d4/go.mod h1:HtrtbFcZ19U5GC7JDqmcUSB87Iq5E25KnS6fMYU6eOk= +github.com/dustin/go-humanize v1.0.0 h1:VSnTsYCnlFHaM2/igO1h6X3HA71jcobQuxemgkq4zYo= github.com/dustin/go-humanize v1.0.0/go.mod h1:HtrtbFcZ19U5GC7JDqmcUSB87Iq5E25KnS6fMYU6eOk= github.com/eapache/go-resiliency v1.1.0/go.mod h1:kFI+JgMyC7bLPUVY133qvEBtVayf5mFgVsvEsIPBvNs= github.com/eapache/go-resiliency v1.2.0/go.mod h1:kFI+JgMyC7bLPUVY133qvEBtVayf5mFgVsvEsIPBvNs= @@ -183,14 +221,19 @@ github.com/eclipse/paho.mqtt.golang v1.2.0/go.mod h1:H9keYFcgq3Qr5OUJm/JZI/i6U7j github.com/efarrer/iothrottler v0.0.1 h1:N5uXoCpk8T1nfl8z7l4YIJUI/2/mL5pQNsOkeMuVnH8= github.com/efarrer/iothrottler v0.0.1/go.mod h1:zGWF5N0NKSCskcPFytDAFwI121DdU/NfW4XOjpTR+ys= github.com/elazarl/go-bindata-assetfs v1.0.0/go.mod h1:v+YaWX3bdea5J/mo8dSETolEo7R71Vk1u8bnjau5yw4= +github.com/elazarl/goproxy v0.0.0-20180725130230-947c36da3153/go.mod h1:/Zj4wYkgs4iZTTu3o/KG3Itv/qCCa8VVMlb3i9OVuzc= github.com/elazarl/goproxy v0.0.0-20190711103511-473e67f1d7d2 h1:aZtFdDNWY/yH86JPR2WX/PN63635VsE/f/nXNPAbYxY= github.com/elazarl/goproxy v0.0.0-20190711103511-473e67f1d7d2/go.mod h1:/Zj4wYkgs4iZTTu3o/KG3Itv/qCCa8VVMlb3i9OVuzc= github.com/elazarl/goproxy/ext v0.0.0-20190711103511-473e67f1d7d2 h1:dWB6v3RcOy03t/bUadywsbyrQwCqZeNIEX6M1OtSZOM= github.com/elazarl/goproxy/ext v0.0.0-20190711103511-473e67f1d7d2/go.mod h1:gNh8nYJoAm43RfaxurUnxr+N1PwuFV3ZMl/efxlIlY8= +github.com/emicklei/go-restful v0.0.0-20170410110728-ff4f55a20633/go.mod h1:otzb+WCGbkyDHkqmQmT5YD2WR4BBwUdeQoFo8l/7tVs= +github.com/emicklei/go-restful v2.9.5+incompatible h1:spTtZBk5DYEvbxMVutUuTyh1Ao2r4iyvLdACqsl/Ljk= +github.com/emicklei/go-restful v2.9.5+incompatible/go.mod h1:otzb+WCGbkyDHkqmQmT5YD2WR4BBwUdeQoFo8l/7tVs= github.com/envoyproxy/go-control-plane v0.9.0/go.mod h1:YTl/9mNaCwkRvm6d1a2C3ymFceY/DCBVvsKhRF0iEA4= github.com/envoyproxy/go-control-plane v0.9.1-0.20191026205805-5f8ba28d4473/go.mod h1:YTl/9mNaCwkRvm6d1a2C3ymFceY/DCBVvsKhRF0iEA4= github.com/envoyproxy/go-control-plane v0.9.4/go.mod h1:6rpuAdCZL397s3pYoYcLgu1mIlRU8Am5FuJP05cCM98= github.com/envoyproxy/protoc-gen-validate v0.1.0/go.mod h1:iSmxcyjqTsJpI2R4NaDN7+kN2VEUnK/pcBlmesArF7c= +github.com/evanphx/json-patch v4.2.0+incompatible/go.mod h1:50XU6AFN0ol/bzJsmQLiYLvXMP4fmwYFNcr97nuDLSk= github.com/evanphx/json-patch v4.5.0+incompatible h1:ouOWdg56aJriqS0huScTkVXPC5IcNrDCXZ6OoTAWu7M= github.com/evanphx/json-patch v4.5.0+incompatible/go.mod h1:50XU6AFN0ol/bzJsmQLiYLvXMP4fmwYFNcr97nuDLSk= github.com/fatih/color v1.7.0/go.mod h1:Zm6kSWBoL9eyXnKyktHP6abPY2pDugNf5KwzbycvMj4= @@ -204,10 +247,13 @@ github.com/frankban/quicktest v1.4.1/go.mod h1:36zfPVQyHxymz4cH7wlDmVwDrJuljRB60 github.com/frankban/quicktest v1.7.2/go.mod h1:jaStnuzAqU1AJdCO0l53JDCJrVDKcS03DbaAcR7Ks/o= github.com/fsnotify/fsnotify v1.4.7 h1:IXs+QLmnXW2CcXuY+8Mzv/fWEsPGWxqefPtCP5CnV9I= github.com/fsnotify/fsnotify v1.4.7/go.mod h1:jwhsz4b93w/PPRr/qN1Yymfu8t87LnFCMoQvtojpjFo= +github.com/ghodss/yaml v0.0.0-20150909031657-73d445a93680/go.mod h1:4dBDuWmgqj2HViK6kFavaiC9ZROes6MMH2rRYeMEF04= github.com/ghodss/yaml v1.0.0 h1:wQHKEahhL6wmXdzwWG11gIVCkOv05bNOh+Rxn0yngAk= github.com/ghodss/yaml v1.0.0/go.mod h1:4dBDuWmgqj2HViK6kFavaiC9ZROes6MMH2rRYeMEF04= github.com/ghodss/yaml v1.0.1-0.20190212211648-25d852aebe32 h1:Mn26/9ZMNWSw9C9ERFA1PUxfmGpolnw2v0bKOREu5ew= github.com/ghodss/yaml v1.0.1-0.20190212211648-25d852aebe32/go.mod h1:GIjDIg/heH5DOkXY3YJ/wNhfHsQHoXGjl8G8amsYQ1I= +github.com/globalsign/mgo v0.0.0-20180905125535-1ca0a4f7cbcb/go.mod h1:xkRDCp4j0OGD1HRkm4kmhM+pmpv3AKq5SU7GMg4oO/Q= +github.com/globalsign/mgo v0.0.0-20181015135952-eeefdecb41b8/go.mod h1:xkRDCp4j0OGD1HRkm4kmhM+pmpv3AKq5SU7GMg4oO/Q= github.com/go-gl/glfw v0.0.0-20190409004039-e6da0acd62b1/go.mod h1:vR7hzQXu2zJy9AVAgeJqvqgH9Q5CA+iKCZ2gyEVpxRU= github.com/go-gl/glfw/v3.3/glfw v0.0.0-20191125211704-12ad95a8df72/go.mod h1:tQ2UAYgL5IevRw8kRxooKSPJfGvJ9fJQFa0TUsXzTg8= github.com/go-gl/glfw/v3.3/glfw v0.0.0-20200222043503-6f7a984d4dc4/go.mod h1:tQ2UAYgL5IevRw8kRxooKSPJfGvJ9fJQFa0TUsXzTg8= @@ -217,13 +263,65 @@ github.com/go-kit/kit v0.9.0/go.mod h1:xBxKIO96dXMWWy0MnWVtmwkA9/13aqxPnvrjFYMA2 github.com/go-ldap/ldap v3.0.2+incompatible/go.mod h1:qfd9rJvER9Q0/D/Sqn1DfHRoBp40uXYvFoEVrNEPqRc= github.com/go-logfmt/logfmt v0.3.0/go.mod h1:Qt1PoO58o5twSAckw1HlFXLmHsOX5/0LbT9GBnD5lWE= github.com/go-logfmt/logfmt v0.4.0/go.mod h1:3RMwSq7FuexP4Kalkev3ejPJsZTpXXBr9+V4qmtdjCk= +github.com/go-logr/logr v0.1.0/go.mod h1:ixOQHD9gLJUVQQ2ZOR7zLEifBX6tGkNJF4QyIY7sIas= +github.com/go-ole/go-ole v1.2.4 h1:nNBDSCOigTSiarFpYE9J/KtEA1IOW4CNeqT9TQDqCxI= github.com/go-ole/go-ole v1.2.4/go.mod h1:XCwSNxSkXRo4vlyPy93sltvi/qJq0jqQhjqQNIwKuxM= +github.com/go-openapi/analysis v0.0.0-20180825180245-b006789cd277/go.mod h1:k70tL6pCuVxPJOHXQ+wIac1FUrvNkHolPie/cLEU6hI= +github.com/go-openapi/analysis v0.17.0/go.mod h1:IowGgpVeD0vNm45So8nr+IcQ3pxVtpRoBWb8PVZO0ik= +github.com/go-openapi/analysis v0.18.0/go.mod h1:IowGgpVeD0vNm45So8nr+IcQ3pxVtpRoBWb8PVZO0ik= +github.com/go-openapi/analysis v0.19.2/go.mod h1:3P1osvZa9jKjb8ed2TPng3f0i/UY9snX6gxi44djMjk= +github.com/go-openapi/analysis v0.19.5 h1:8b2ZgKfKIUTVQpTb77MoRDIMEIwvDVw40o3aOXdfYzI= +github.com/go-openapi/analysis v0.19.5/go.mod h1:hkEAkxagaIvIP7VTn8ygJNkd4kAYON2rCu0v0ObL0AU= +github.com/go-openapi/errors v0.17.0/go.mod h1:LcZQpmvG4wyF5j4IhA73wkLFQg+QJXOQHVjmcZxhka0= +github.com/go-openapi/errors v0.18.0/go.mod h1:LcZQpmvG4wyF5j4IhA73wkLFQg+QJXOQHVjmcZxhka0= github.com/go-openapi/errors v0.19.2 h1:a2kIyV3w+OS3S97zxUndRVD46+FhGOUBDFY7nmu4CsY= github.com/go-openapi/errors v0.19.2/go.mod h1:qX0BLWsyaKfvhluLejVpVNwNRdXZhEbTA4kxxpKBC94= -github.com/go-openapi/strfmt v0.0.0-20170822153411-610b6cacdcde h1:JjlHB2aORlzTnllXXWbqpUsOXzqlSN9cB5NyBLgvVXY= -github.com/go-openapi/strfmt v0.0.0-20170822153411-610b6cacdcde/go.mod h1:/bCWipNKhC9QMhD8HRe2EGbU8G0D4Yvh0G6X4k1Xwvg= +github.com/go-openapi/jsonpointer v0.0.0-20160704185906-46af16f9f7b1/go.mod h1:+35s3my2LFTysnkMfxsJBAMHj/DoqoB9knIWoYG/Vk0= +github.com/go-openapi/jsonpointer v0.17.0/go.mod h1:cOnomiV+CVVwFLk0A/MExoFMjwdsUdVpsRhURCKh+3M= +github.com/go-openapi/jsonpointer v0.18.0/go.mod h1:cOnomiV+CVVwFLk0A/MExoFMjwdsUdVpsRhURCKh+3M= +github.com/go-openapi/jsonpointer v0.19.2/go.mod h1:3akKfEdA7DF1sugOqz1dVQHBcuDBPKZGEoHC/NkiQRg= +github.com/go-openapi/jsonpointer v0.19.3 h1:gihV7YNZK1iK6Tgwwsxo2rJbD1GTbdm72325Bq8FI3w= +github.com/go-openapi/jsonpointer v0.19.3/go.mod h1:Pl9vOtqEWErmShwVjC8pYs9cog34VGT37dQOVbmoatg= +github.com/go-openapi/jsonreference v0.0.0-20160704190145-13c6e3589ad9/go.mod h1:W3Z9FmVs9qj+KR4zFKmDPGiLdk1D9Rlm7cyMvf57TTg= +github.com/go-openapi/jsonreference v0.17.0/go.mod h1:g4xxGn04lDIRh0GJb5QlpE3HfopLOL6uZrK/VgnsK9I= +github.com/go-openapi/jsonreference v0.18.0/go.mod h1:g4xxGn04lDIRh0GJb5QlpE3HfopLOL6uZrK/VgnsK9I= +github.com/go-openapi/jsonreference v0.19.2/go.mod h1:jMjeRr2HHw6nAVajTXJ4eiUwohSTlpa0o73RUL1owJc= +github.com/go-openapi/jsonreference v0.19.3 h1:5cxNfTy0UVC3X8JL5ymxzyoUZmo8iZb+jeTWn7tUa8o= +github.com/go-openapi/jsonreference v0.19.3/go.mod h1:rjx6GuL8TTa9VaixXglHmQmIL98+wF9xc8zWvFonSJ8= +github.com/go-openapi/loads v0.17.0/go.mod h1:72tmFy5wsWx89uEVddd0RjRWPZm92WRLhf7AC+0+OOU= +github.com/go-openapi/loads v0.18.0/go.mod h1:72tmFy5wsWx89uEVddd0RjRWPZm92WRLhf7AC+0+OOU= +github.com/go-openapi/loads v0.19.0/go.mod h1:72tmFy5wsWx89uEVddd0RjRWPZm92WRLhf7AC+0+OOU= +github.com/go-openapi/loads v0.19.2/go.mod h1:QAskZPMX5V0C2gvfkGZzJlINuP7Hx/4+ix5jWFxsNPs= +github.com/go-openapi/loads v0.19.4 h1:5I4CCSqoWzT+82bBkNIvmLc0UOsoKKQ4Fz+3VxOB7SY= +github.com/go-openapi/loads v0.19.4/go.mod h1:zZVHonKd8DXyxyw4yfnVjPzBjIQcLt0CCsn0N0ZrQsk= +github.com/go-openapi/runtime v0.0.0-20180920151709-4f900dc2ade9/go.mod h1:6v9a6LTXWQCdL8k1AO3cvqx5OtZY/Y9wKTgaoP6YRfA= +github.com/go-openapi/runtime v0.19.0/go.mod h1:OwNfisksmmaZse4+gpV3Ne9AyMOlP1lt4sK4FXt0O64= +github.com/go-openapi/runtime v0.19.4 h1:csnOgcgAiuGoM/Po7PEpKDoNulCcF3FGbSnbHfxgjMI= +github.com/go-openapi/runtime v0.19.4/go.mod h1:X277bwSUBxVlCYR3r7xgZZGKVvBd/29gLDlFGtJ8NL4= +github.com/go-openapi/spec v0.0.0-20160808142527-6aced65f8501/go.mod h1:J8+jY1nAiCcj+friV/PDoE1/3eeccG9LYBs0tYvLOWc= +github.com/go-openapi/spec v0.17.0/go.mod h1:XkF/MOi14NmjsfZ8VtAKf8pIlbZzyoTvZsdfssdxcBI= +github.com/go-openapi/spec v0.18.0/go.mod h1:XkF/MOi14NmjsfZ8VtAKf8pIlbZzyoTvZsdfssdxcBI= +github.com/go-openapi/spec v0.19.2/go.mod h1:sCxk3jxKgioEJikev4fgkNmwS+3kuYdJtcsZsD5zxMY= +github.com/go-openapi/spec v0.19.3 h1:0XRyw8kguri6Yw4SxhsQA/atC88yqrk0+G4YhI2wabc= +github.com/go-openapi/spec v0.19.3/go.mod h1:FpwSN1ksY1eteniUU7X0N/BgJ7a4WvBFVA8Lj9mJglo= +github.com/go-openapi/strfmt v0.17.0/go.mod h1:P82hnJI0CXkErkXi8IKjPbNBM6lV6+5pLP5l494TcyU= +github.com/go-openapi/strfmt v0.18.0/go.mod h1:P82hnJI0CXkErkXi8IKjPbNBM6lV6+5pLP5l494TcyU= +github.com/go-openapi/strfmt v0.19.0/go.mod h1:+uW+93UVvGGq2qGaZxdDeJqSAqBqBdl+ZPMF/cC8nDY= +github.com/go-openapi/strfmt v0.19.3 h1:eRfyY5SkaNJCAwmmMcADjY31ow9+N7MCLW7oRkbsINA= +github.com/go-openapi/strfmt v0.19.3/go.mod h1:0yX7dbo8mKIvc3XSKp7MNfxw4JytCfCD6+bY1AVL9LU= +github.com/go-openapi/swag v0.0.0-20160704191624-1d0bd113de87/go.mod h1:DXUve3Dpr1UfpPtxFw+EFuQ41HhCWZfha5jSVRG7C7I= +github.com/go-openapi/swag v0.17.0/go.mod h1:AByQ+nYG6gQg71GINrmuDXCPWdL640yX49/kXLo40Tg= +github.com/go-openapi/swag v0.18.0/go.mod h1:AByQ+nYG6gQg71GINrmuDXCPWdL640yX49/kXLo40Tg= +github.com/go-openapi/swag v0.19.2/go.mod h1:POnQmlKehdgb5mhVOsnJFsivZCEZ/vjK9gh66Z9tfKk= +github.com/go-openapi/swag v0.19.5 h1:lTz6Ys4CmqqCQmZPBlbQENR1/GucA2bzYTE12Pw4tFY= +github.com/go-openapi/swag v0.19.5/go.mod h1:POnQmlKehdgb5mhVOsnJFsivZCEZ/vjK9gh66Z9tfKk= +github.com/go-openapi/validate v0.18.0/go.mod h1:Uh4HdOzKt19xGIGm1qHf/ofbX1YQ4Y+MYsct2VUrAJ4= +github.com/go-openapi/validate v0.19.2/go.mod h1:1tRCw7m3jtI8eNWEEliiAqUIcBztB2KDnRCRMUi7GTA= +github.com/go-openapi/validate v0.19.5 h1:QhCBKRYqZR+SKo4gl1lPhPahope8/RLt6EVgY8X80w0= +github.com/go-openapi/validate v0.19.5/go.mod h1:8DJv2CVJQ6kGNpFW6eV9N3JviE1C85nY1c2z52x1Gk4= github.com/go-sql-driver/mysql v1.4.1/go.mod h1:zAC/RDZ24gD3HViQzih4MyKcchzm+sOG5ZlKdlhCg5w= github.com/go-sql-driver/mysql v1.5.0/go.mod h1:DCzpHaOWr8IXmIStZouvnhqoel9Qv2LBy8hT2VhHyBg= +github.com/go-stack/stack v1.8.0 h1:5SgMzNM5HxrEjV0ww2lTmX6E2Izsfxas4+YHWRs3Lsk= github.com/go-stack/stack v1.8.0/go.mod h1:v0f6uXyyMGvRgIKkXu+yp6POWl0qKG85gN/melR3HDY= github.com/go-test/deep v1.0.2-0.20181118220953-042da051cf31/go.mod h1:wGDj63lr65AM2AQyKZd/NYHGb0R+1RLqB8NKt3aSFNA= github.com/godbus/dbus v4.1.0+incompatible h1:WqqLRTsQic3apZUK9qC5sGNfXthmPXzUZ7nQPrNITa4= @@ -233,8 +331,11 @@ github.com/gofrs/flock v0.7.1/go.mod h1:F1TvTiK9OcQqauNUHlbJvyl9Qa1QvF/gOUDKA14j github.com/gogo/protobuf v1.1.1/go.mod h1:r8qH/GZQm5c6nD/R0oafs1akxWv10x8SbQlK7atdtwQ= github.com/gogo/protobuf v1.2.1 h1:/s5zKNz0uPFCZ5hddgPdo2TK2TVrUNMn0OOX8/aZMTE= github.com/gogo/protobuf v1.2.1/go.mod h1:hp+jE20tsWTFYpLwKvXlhS1hjn+gTNwPg2I6zVXpSg4= +github.com/gogo/protobuf v1.3.1 h1:DqDEcV5aeaTmdFBePNpYsp3FlcVH/2ISVVM9Qf8PSls= +github.com/gogo/protobuf v1.3.1/go.mod h1:SlYgWuQ5SjCEi6WLHjHCa1yvBfUnHcTbrrZtXPKa29o= github.com/golang/glog v0.0.0-20160126235308-23def4e6c14b h1:VKtxabqXZkF25pY9ekfRL6a582T4P37/31XEstQ5p58= github.com/golang/glog v0.0.0-20160126235308-23def4e6c14b/go.mod h1:SBH7ygxi8pfUlaOkMMuAQtPIUF8ecWP5IEl/CR7VP2Q= +github.com/golang/groupcache v0.0.0-20160516000752-02826c3e7903/go.mod h1:cIg4eruTrX1D+g88fzRXU5OdNfaM+9IcxsU14FzY7Hc= github.com/golang/groupcache v0.0.0-20190702054246-869f871628b6 h1:ZgQEtGgCBiWRM39fZuwSd1LwSqqSW0hOdXCYYDX0R3I= github.com/golang/groupcache v0.0.0-20190702054246-869f871628b6/go.mod h1:cIg4eruTrX1D+g88fzRXU5OdNfaM+9IcxsU14FzY7Hc= github.com/golang/groupcache v0.0.0-20191227052852-215e87163ea7/go.mod h1:cIg4eruTrX1D+g88fzRXU5OdNfaM+9IcxsU14FzY7Hc= @@ -246,6 +347,7 @@ github.com/golang/mock v1.3.1/go.mod h1:sBzyDLLjw3U8JLTeZvSv8jJB+tU5PVekmnlKIyFU github.com/golang/mock v1.4.0/go.mod h1:UOMv5ysSaYNkG+OFQykRIcU/QvvxJf3p21QfJ2Bt3cw= github.com/golang/mock v1.4.1/go.mod h1:UOMv5ysSaYNkG+OFQykRIcU/QvvxJf3p21QfJ2Bt3cw= github.com/golang/mock v1.4.3/go.mod h1:UOMv5ysSaYNkG+OFQykRIcU/QvvxJf3p21QfJ2Bt3cw= +github.com/golang/protobuf v0.0.0-20161109072736-4bd1920723d7/go.mod h1:6lQm79b+lXiMfvg/cZm0SGofjICqVBUtrP5yJMmIC1U= github.com/golang/protobuf v1.1.0/go.mod h1:6lQm79b+lXiMfvg/cZm0SGofjICqVBUtrP5yJMmIC1U= github.com/golang/protobuf v1.2.0 h1:P3YflyNX/ehuJFLhxviNdFxQPkGK5cDcApsge1SqnvM= github.com/golang/protobuf v1.2.0/go.mod h1:6lQm79b+lXiMfvg/cZm0SGofjICqVBUtrP5yJMmIC1U= @@ -274,11 +376,16 @@ github.com/google/go-cmp v0.3.0/go.mod h1:8QqcDgzrUqlUb/G2PQTWiueGozuR1884gddMyw github.com/google/go-cmp v0.3.1/go.mod h1:8QqcDgzrUqlUb/G2PQTWiueGozuR1884gddMywk6iLU= github.com/google/go-cmp v0.4.0 h1:xsAVV57WRhGj6kEIi8ReJzQlHHqcBYCElAvkovg3B/4= github.com/google/go-cmp v0.4.0/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE= +github.com/google/go-replayers/grpcreplay v0.1.0 h1:eNb1y9rZFmY4ax45uEEECSa8fsxGRU+8Bil52ASAwic= github.com/google/go-replayers/grpcreplay v0.1.0/go.mod h1:8Ig2Idjpr6gifRd6pNVggX6TC1Zw6Jx74AKp7QNH2QE= +github.com/google/go-replayers/httpreplay v0.1.0 h1:AX7FUb4BjrrzNvblr/OlgwrmFiep6soj5K2QSDW7BGk= github.com/google/go-replayers/httpreplay v0.1.0/go.mod h1:YKZViNhiGgqdBlUbI2MwGpq4pXxNmhJLPHQ7cv2b5no= github.com/google/gofuzz v1.0.0 h1:A8PeW59pxE9IoFRqBp37U+mSNaQoZ46F1f0f863XSXw= github.com/google/gofuzz v1.0.0/go.mod h1:dBl0BpW6vV/+mYPU4Po3pmUjxk6FQPldtuIdl/M65Eg= +github.com/google/gofuzz v1.1.0 h1:Hsa8mG0dQ46ij8Sl2AYJDUv1oA9/d6Vk+3LG99Oe02g= +github.com/google/gofuzz v1.1.0/go.mod h1:dBl0BpW6vV/+mYPU4Po3pmUjxk6FQPldtuIdl/M65Eg= github.com/google/martian v2.1.0+incompatible/go.mod h1:9I4somxYTbIHy5NJKHRl3wXiIaQGbYVAs8BPL6v8lEs= +github.com/google/martian v2.1.1-0.20190517191504-25dcb96d9e51+incompatible h1:xmapqc1AyLoB+ddYT6r04bD9lIjlOqGaREovi0SzFaE= github.com/google/martian v2.1.1-0.20190517191504-25dcb96d9e51+incompatible/go.mod h1:9I4somxYTbIHy5NJKHRl3wXiIaQGbYVAs8BPL6v8lEs= github.com/google/pprof v0.0.0-20181206194817-3ea8567a2e57/go.mod h1:zfwlbNMJ+OItoe0UupaVj+oy1omPYYDuagoSzA8v9mc= github.com/google/pprof v0.0.0-20190515194954-54271f7e092f/go.mod h1:zfwlbNMJ+OItoe0UupaVj+oy1omPYYDuagoSzA8v9mc= @@ -302,22 +409,31 @@ github.com/googleapis/gax-go v2.0.2+incompatible/go.mod h1:SFVmujtThgffbyetf+mdk github.com/googleapis/gax-go/v2 v2.0.4/go.mod h1:0Wqv26UfaUD9n4G6kQubkQ+KchISgw+vpHVxEJEs9eg= github.com/googleapis/gax-go/v2 v2.0.5 h1:sjZBwGj9Jlw33ImPtvFviGYvseOtDM7hkSKB7+Tv3SM= github.com/googleapis/gax-go/v2 v2.0.5/go.mod h1:DWXyrwAJ9X0FpwwEdw+IPEYBICEFu5mhpdKc/us6bOk= +github.com/googleapis/gnostic v0.0.0-20170729233727-0c5108395e2d/go.mod h1:sJBsCZ4ayReDTBIg8b9dl28c5xFWyhBTVRp3pOg5EKY= +github.com/googleapis/gnostic v0.1.0/go.mod h1:sJBsCZ4ayReDTBIg8b9dl28c5xFWyhBTVRp3pOg5EKY= github.com/googleapis/gnostic v0.3.0 h1:CcQijm0XKekKjP/YCz28LXVSpgguuB+nCxaSjCe09y0= github.com/googleapis/gnostic v0.3.0/go.mod h1:sJBsCZ4ayReDTBIg8b9dl28c5xFWyhBTVRp3pOg5EKY= +github.com/gophercloud/gophercloud v0.1.0/go.mod h1:vxM41WHh5uqHVBMZHzuwNOHh8XEoIEcSTewFxm1c5g8= github.com/gopherjs/gopherjs v0.0.0-20181017120253-0766667cb4d1/go.mod h1:wJfORRmW1u3UXTncJ5qlYoELFm8eSnnEO6hX4iZ3EWY= +github.com/gopherjs/gopherjs v0.0.0-20190328170749-bb2674552d8f h1:4Gslotqbs16iAg+1KR/XdabIfq8TlAWHdwS5QJFksLc= github.com/gopherjs/gopherjs v0.0.0-20190328170749-bb2674552d8f/go.mod h1:wJfORRmW1u3UXTncJ5qlYoELFm8eSnnEO6hX4iZ3EWY= github.com/gorilla/handlers v1.4.0/go.mod h1:Qkdc/uu4tH4g6mTK6auzZ766c4CA0Ng8+o/OAirnOIQ= github.com/gorilla/mux v1.7.0/go.mod h1:1lud6UwP+6orDFRuTfBEV8e9/aOM/c4fVVCaMa2zaAs= github.com/gorilla/mux v1.7.4 h1:VuZ8uybHlWmqV03+zRzdwKL4tUnIp1MAQtp1mIFE1bc= github.com/gorilla/mux v1.7.4/go.mod h1:DVbg23sWSpFRCP0SfiEN6jmj59UnW/n46BH5rLB71So= github.com/gorilla/rpc v1.2.0/go.mod h1:V4h9r+4sF5HnzqbwIez0fKSpANP0zlYd3qR7p36jkTQ= +github.com/gorilla/websocket v0.0.0-20170926233335-4201258b820c/go.mod h1:E7qHFY5m1UJ88s3WnNqhKjPHQ0heANvMoAMk2YaljkQ= +github.com/gorilla/websocket v1.4.0/go.mod h1:E7qHFY5m1UJ88s3WnNqhKjPHQ0heANvMoAMk2YaljkQ= github.com/gorilla/websocket v1.4.1/go.mod h1:YR8l580nyteQvAITg2hZ9XVh4b55+EU/adAjf1fMHhE= +github.com/gregjones/httpcache v0.0.0-20180305231024-9cad4c3443a7/go.mod h1:FecbI9+v66THATjSRHfNgh1IVFe/9kFxbXtjV0ctIMA= github.com/grpc-ecosystem/go-grpc-middleware v1.0.1-0.20190118093823-f849b5445de4/go.mod h1:FiyG127CGDf3tlThmgyCl78X/SZQqEOJBCDaAfeWzPs= +github.com/grpc-ecosystem/go-grpc-prometheus v1.2.0 h1:Ovs26xHkKqVztRpIrF/92BcuyuQ/YW4NSIpoGtfXNho= github.com/grpc-ecosystem/go-grpc-prometheus v1.2.0/go.mod h1:8NvIoxWQoOIhqOTXgfV/d3M/q6VIi02HzZEHgUlZvzk= github.com/grpc-ecosystem/grpc-gateway v1.8.5 h1:2+KSC78XiO6Qy0hIjfc1OD9H+hsaJdJlb8Kqsd41CTE= github.com/grpc-ecosystem/grpc-gateway v1.8.5/go.mod h1:vNeuVxBJEsws4ogUvrchl83t/GYV9WGTSLVdBhOQFDY= github.com/grpc-ecosystem/grpc-gateway v1.9.0/go.mod h1:vNeuVxBJEsws4ogUvrchl83t/GYV9WGTSLVdBhOQFDY= github.com/grpc-ecosystem/grpc-gateway v1.9.2/go.mod h1:vNeuVxBJEsws4ogUvrchl83t/GYV9WGTSLVdBhOQFDY= +github.com/grpc-ecosystem/grpc-gateway v1.9.5/go.mod h1:vNeuVxBJEsws4ogUvrchl83t/GYV9WGTSLVdBhOQFDY= github.com/hashicorp/errwrap v1.0.0/go.mod h1:YH+1FKiLXxHSkmPseP+kNlulaMuP3n2brvKWEqk/Jc4= github.com/hashicorp/go-cleanhttp v0.5.0/go.mod h1:JpRdi6/HCYpAwUzNwuwqhbovhLtngrth3wmdIIUrZ80= github.com/hashicorp/go-cleanhttp v0.5.1/go.mod h1:JpRdi6/HCYpAwUzNwuwqhbovhLtngrth3wmdIIUrZ80= @@ -352,6 +468,7 @@ github.com/hpcloud/tail v1.0.0/go.mod h1:ab1qPbhIpdTxEkNHXyeSf5vhxWSCs/tWer42PpO github.com/huandu/xstrings v1.2.0 h1:yPeWdRnmynF7p+lLYz0H2tthW9lqhMJrQV/U7yy4wX0= github.com/huandu/xstrings v1.2.0/go.mod h1:DvyZB1rfVYsBIigL8HwpZgxHwXozlTgGqn63UyNX5k4= github.com/ianlancetaylor/demangle v0.0.0-20181102032728-5e5cf60278f6/go.mod h1:aSSvb/t6k1mPoxDqO4vJh6VOCGPwU4O0C2/Eqndh1Sc= +github.com/imdario/mergo v0.3.5/go.mod h1:2EnlNZ0deacrJVfApfmtdGgDfMuh/nq6Ok1EcJh5FfA= github.com/imdario/mergo v0.3.7 h1:Y+UAYTZ7gDEuOfhxKWy+dvb5dRQ6rJjFSdX2HZY1/gI= github.com/imdario/mergo v0.3.7/go.mod h1:2EnlNZ0deacrJVfApfmtdGgDfMuh/nq6Ok1EcJh5FfA= github.com/inconshreveable/go-update v0.0.0-20160112193335-8152e7eb6ccf/go.mod h1:hyb9oH7vZsitZCiBt0ZvifOrB+qc8PS5IiilCIb87rg= @@ -370,11 +487,14 @@ github.com/jonboulle/clockwork v0.1.0/go.mod h1:Ii8DK3G1RaLaWxj9trq07+26W01tbo22 github.com/jpillora/backoff v0.0.0-20170918002102-8eab2debe79d h1:ix3WmphUvN0GDd0DO9MH0v6/5xTv+Xm1bPN+1UJn58k= github.com/jpillora/backoff v0.0.0-20170918002102-8eab2debe79d/go.mod h1:2iMrUgbbvHEiQClaW2NsSzMyGHqN+rDFqY705q49KG0= github.com/json-iterator/go v1.1.6/go.mod h1:+SdeFBvtyEkXs7REEP0seUULqWtbJapLOCVDaaPEHmU= +github.com/json-iterator/go v1.1.7/go.mod h1:KdQUCv79m/52Kvf8AW2vK1V8akMuk1QjK/uOdHXbAo4= +github.com/json-iterator/go v1.1.8/go.mod h1:KdQUCv79m/52Kvf8AW2vK1V8akMuk1QjK/uOdHXbAo4= github.com/json-iterator/go v1.1.9 h1:9yzud/Ht36ygwatGx56VwCZtlI/2AD15T1X2sjSuGns= github.com/json-iterator/go v1.1.9/go.mod h1:KdQUCv79m/52Kvf8AW2vK1V8akMuk1QjK/uOdHXbAo4= github.com/jstemmer/go-junit-report v0.0.0-20190106144839-af01ea7f8024/go.mod h1:6v2b51hI/fHJwM22ozAgKL4VKDeJcHhJFhtBdhmNjmU= github.com/jstemmer/go-junit-report v0.9.1 h1:6QPYqodiu3GuPL+7mfx+NwDdp2eTkp9IfEUpgAwUN0o= github.com/jstemmer/go-junit-report v0.9.1/go.mod h1:Brl9GWCQeLvo8nXZwPNNblvFj/XSXhF0NWZEnDohbsk= +github.com/jtolds/gls v4.20.0+incompatible h1:xdiiI2gbIgH/gLH7ADydsJ1uDOEzR8yvV7C0MuV77Wo= github.com/jtolds/gls v4.20.0+incompatible/go.mod h1:QJZ7F/aHp+rZTRtaJ1ow/lLfFfVYBRgL+9YlvaHOwJU= github.com/julienschmidt/httprouter v1.2.0/go.mod h1:SYymIcj16QtmaHHD7aYtjjsJG7VTCxuUUipMqKk8s4w= github.com/kastenhq/check v0.0.0-20180626002341-0264cfcea734 h1:qulsCaCv+O2y9/sQ9nd5KChnAgFOWakTHQ9ZADjs6DQ= @@ -384,6 +504,7 @@ github.com/kastenhq/stow v0.1.2-kasten/go.mod h1:ABI2whmZOX25JbmbVuHRLFuPiGnv5lx github.com/kelseyhightower/envconfig v1.4.0 h1:Im6hONhd3pLkfDFsbRgu68RDNkGF1r3dvMUtDTo2cv8= github.com/kelseyhightower/envconfig v1.4.0/go.mod h1:cccZRl6mQpaq41TPp5QxidR+Sa3axMbJDNb//FQX6Gg= github.com/kisielk/errcheck v1.1.0/go.mod h1:EZBBE59ingxPouuu3KfxchcWSUPOHkagtvWXihfKN4Q= +github.com/kisielk/errcheck v1.2.0/go.mod h1:/BMXB+zMLi60iA8Vv6Ksmxu/1UDYcXs4uQLJ+jE2L00= github.com/kisielk/gotool v1.0.0/go.mod h1:XhKaO+MFFWcvkIS/tQcRk01m1F5IRFswLeQ+oQHNcck= github.com/klauspost/compress v1.8.2/go.mod h1:RyIbtBH6LamlWaDj8nUwkbUhJ87Yi3uG0guNDohfE1A= github.com/klauspost/compress v1.9.4/go.mod h1:RyIbtBH6LamlWaDj8nUwkbUhJ87Yi3uG0guNDohfE1A= @@ -409,6 +530,7 @@ github.com/kr/fs v0.1.0/go.mod h1:FFnZGqtBN9Gxj7eW1uZ42v5BccTP0vu6NEaFoC2HwRg= github.com/kr/logfmt v0.0.0-20140226030751-b84e30acd515/go.mod h1:+0opPa2QZZtGFBFZlji/RkVcI2GknAs/DXo4wKdlNEc= github.com/kr/pretty v0.1.0/go.mod h1:dAy3ld7l9f0ibDNOQOHHMYYIIbhfbHSm3C4ZsoJORNo= github.com/kr/pty v1.1.1/go.mod h1:pFQYn66WHrOpPYNljwOMqo10TkYh1fy3cYio2l3bCsQ= +github.com/kr/pty v1.1.5/go.mod h1:9r2w37qlBe7rQ6e1fg1S/9xpWHSnaqNdHD3WcMdbPDA= github.com/kr/text v0.1.0/go.mod h1:4Jbv+DJW3UT/LiOwJeYQe1efqtUx/iVham/4vfdArNI= github.com/kylelemons/godebug v1.1.0 h1:RPNrshWIDI6G2gRW9EHilWtl7Z6Sb1BR0xunSBf0SNc= github.com/kylelemons/godebug v1.1.0/go.mod h1:9/0rRGxNHcop5bhtWyNeEfOS8JIWk580+fNqagV/RAw= @@ -417,9 +539,16 @@ github.com/lib/pq v1.2.0 h1:LXpIM/LZ5xGFhOpXAQUIMM1HdyqzVYM13zNdjCEEcA0= github.com/lib/pq v1.2.0/go.mod h1:5WUZQaWbwv1U+lTReE5YruASi9Al49XbQIvNi/34Woo= github.com/luci/go-render v0.0.0-20160219211803-9a04cc21af0f h1:WVPqVsbUsrzAebTEgWRAZMdDOfkFx06iyhbIoyMgtkE= github.com/luci/go-render v0.0.0-20160219211803-9a04cc21af0f/go.mod h1:aS446i8akEg0DAtNKTVYpNpLPMc0SzsZ0RtGhjl0uFM= +github.com/magiconair/properties v1.8.0/go.mod h1:PppfXfuXeibc/6YijjN8zIbojt8czPbwD3XqdrwzmxQ= +github.com/mailru/easyjson v0.0.0-20160728113105-d5b7844b561a/go.mod h1:C1wdFJiN94OJF2b5HbByQZoLdCWB1Yqtg26g4irojpc= github.com/mailru/easyjson v0.0.0-20180730094502-03f2033d19d5/go.mod h1:C1wdFJiN94OJF2b5HbByQZoLdCWB1Yqtg26g4irojpc= +github.com/mailru/easyjson v0.0.0-20180823135443-60711f1a8329/go.mod h1:C1wdFJiN94OJF2b5HbByQZoLdCWB1Yqtg26g4irojpc= +github.com/mailru/easyjson v0.0.0-20190312143242-1de009706dbe/go.mod h1:C1wdFJiN94OJF2b5HbByQZoLdCWB1Yqtg26g4irojpc= +github.com/mailru/easyjson v0.0.0-20190614124828-94de47d64c63/go.mod h1:C1wdFJiN94OJF2b5HbByQZoLdCWB1Yqtg26g4irojpc= github.com/mailru/easyjson v0.0.0-20190626092158-b2ccc519800e h1:hB2xlXdHp/pmPZq0y3QnmWAArdw9PqbmotexnWx/FU8= github.com/mailru/easyjson v0.0.0-20190626092158-b2ccc519800e/go.mod h1:C1wdFJiN94OJF2b5HbByQZoLdCWB1Yqtg26g4irojpc= +github.com/mailru/easyjson v0.7.0 h1:aizVhC/NAAcKWb+5QsU1iNOZb4Yws5UO2I+aIprQITM= +github.com/mailru/easyjson v0.7.0/go.mod h1:KAzv3t3aY1NaHWoQz1+4F1ccyAH66Jk7yos7ldAVICs= github.com/mattn/go-colorable v0.0.9/go.mod h1:9vuHe8Xs5qXnSaW/c/ABM9alt+Vo+STaOChaDxuIBZU= github.com/mattn/go-colorable v0.1.1/go.mod h1:FuOcm+DKB9mbwrcAfNl7/TZVBZ6rcnceauSikq3lYCQ= github.com/mattn/go-colorable v0.1.2/go.mod h1:U0ppj6V5qS13XJ6of8GYAs25YV2eR4EVcfRqFIhoBtE= @@ -432,12 +561,14 @@ github.com/mattn/go-ieproxy v0.0.0-20190805055040-f9202b1cfdeb/go.mod h1:31jz6HN github.com/mattn/go-ieproxy v0.0.1 h1:qiyop7gCflfhwCzGyeT0gro3sF9AIg9HU98JORTkqfI= github.com/mattn/go-ieproxy v0.0.1/go.mod h1:pYabZ6IHcRpFh7vIaLfK7rdcWgFEb3SFJ6/gNWuh88E= github.com/mattn/go-isatty v0.0.3/go.mod h1:M+lRXTBqGeGNdLjl/ufCoiOlB5xdOkqRJdNxMWT7Zi4= +github.com/mattn/go-isatty v0.0.4/go.mod h1:M+lRXTBqGeGNdLjl/ufCoiOlB5xdOkqRJdNxMWT7Zi4= github.com/mattn/go-isatty v0.0.5/go.mod h1:Iq45c/XA43vh69/j3iqttzPXn0bhXyGjM0Hdxcsrc5s= github.com/mattn/go-isatty v0.0.7/go.mod h1:Iq45c/XA43vh69/j3iqttzPXn0bhXyGjM0Hdxcsrc5s= github.com/mattn/go-isatty v0.0.8/go.mod h1:Iq45c/XA43vh69/j3iqttzPXn0bhXyGjM0Hdxcsrc5s= github.com/mattn/go-isatty v0.0.11/go.mod h1:PhnuNfih5lzO57/f3n+odYbM4JtupLOxQOAqxQCu2WE= github.com/mattn/go-isatty v0.0.12 h1:wuysRhFDzyxgEmMf5xjvJ2M9dZoWAXNNr5LSBS7uHXY= github.com/mattn/go-isatty v0.0.12/go.mod h1:cbi8OIDigv2wuxKPP5vlRcQ1OAZbq2CE4Kysco4FUpU= +github.com/mattn/go-runewidth v0.0.2/go.mod h1:LwmH8dsx7+W8Uxz3IHJYH5QSwggIsqBzpuz5H//U1FU= github.com/mattn/go-runewidth v0.0.4/go.mod h1:LwmH8dsx7+W8Uxz3IHJYH5QSwggIsqBzpuz5H//U1FU= github.com/matttproud/golang_protobuf_extensions v1.0.1 h1:4hp9jkHxhMHkqkrB3Ix0jegS5sx/RkqARlsWZ6pIwiU= github.com/matttproud/golang_protobuf_extensions v1.0.1/go.mod h1:D8He9yQNgCq6Z5Ld7szi9bcBfOoFv/3dc6xSMkL2PC0= @@ -447,6 +578,7 @@ github.com/minio/gokrb5/v7 v7.2.5/go.mod h1:z6fE6twrvMN004M+KRTHnmtfpxsBIztP0PVs github.com/minio/hdfs/v3 v3.0.1/go.mod h1:6ALh9HsAwG9xAXdpdrZJcSY0vR6z3K+9XIz6Y9pQG/c= github.com/minio/highwayhash v1.0.0/go.mod h1:xQboMTeM9nY9v/LlAOxFctujiv5+Aq2hR5dxBpaMbdc= github.com/minio/lsync v1.0.1/go.mod h1:tCFzfo0dlvdGl70IT4IAK/5Wtgb0/BrTmo/jE8pArKA= +github.com/minio/minio v0.0.0-20200521180750-fade0562443f h1:S4EWKBuagjp+zWc2LBtBUMSUZ+uCdcXNG4KGtAh/AoY= github.com/minio/minio v0.0.0-20200521180750-fade0562443f/go.mod h1:wymaytM/HELuwdz7BGZHmQ3XKq2SxPsLeGxyOCaCLiA= github.com/minio/minio-go/v6 v6.0.53/go.mod h1:DIvC/IApeHX8q1BAMVCXSXwpmrmM+I+iBvhvztQorfI= github.com/minio/minio-go/v6 v6.0.55-0.20200425081427-89eebdef2af0/go.mod h1:KQMM+/44DSlSGSQWSfRrAZ12FVMmpWNuX37i2AX0jfI= @@ -477,8 +609,13 @@ github.com/modern-go/reflect2 v0.0.0-20180701023420-4b7aa43c6742 h1:Esafd1046DLD github.com/modern-go/reflect2 v0.0.0-20180701023420-4b7aa43c6742/go.mod h1:bx2lNnkwVCuqBIxFjflWJWanXIb3RllmbCylyMrvgv0= github.com/modern-go/reflect2 v1.0.1 h1:9f412s+6RmYXLWZSEzVVgPGK7C2PphHj5RJrvfx9AWI= github.com/modern-go/reflect2 v1.0.1/go.mod h1:bx2lNnkwVCuqBIxFjflWJWanXIb3RllmbCylyMrvgv0= +github.com/montanaflynn/stats v0.5.0 h1:2EkzeTSqBB4V4bJwWrt5gIIrZmpJBcoIRGS2kWLgzmk= github.com/montanaflynn/stats v0.5.0/go.mod h1:wL8QJuTMNUDYhXwkmfOly8iTdp5TEcJFWZD2D7SIkUc= +github.com/munnerz/goautoneg v0.0.0-20120707110453-a547fc61f48d/go.mod h1:+n7T8mK8HuQTcFwEeznm/DIxMOiR9yIdICNftLE1DvQ= +github.com/munnerz/goautoneg v0.0.0-20191010083416-a7dc8b61c822 h1:C3w9PqII01/Oq1c1nUAm88MOHcQC9l5mIlSMApZMrHA= +github.com/munnerz/goautoneg v0.0.0-20191010083416-a7dc8b61c822/go.mod h1:+n7T8mK8HuQTcFwEeznm/DIxMOiR9yIdICNftLE1DvQ= github.com/mwitkow/go-conntrack v0.0.0-20161129095857-cc309e4a2223/go.mod h1:qRWi+5nqEBWmkhHvq77mSJWrCKwh8bxhgT7d/eI7P4U= +github.com/mxk/go-flowrate v0.0.0-20140419014527-cca7078d478f/go.mod h1:ZdcZmHo+o7JKHSa8/e818NopupXU1YMK5fe1lsApnBw= github.com/natefinch/atomic v0.0.0-20150920032501-a62ce929ffcc h1:7xGrl4tTpBQu5Zjll08WupHyq+Sp0Z/adtyf1cfk3Q8= github.com/natefinch/atomic v0.0.0-20150920032501-a62ce929ffcc/go.mod h1:1rLVY/DWf3U6vSZgH16S7pymfrhK2lcUlXjgGglw/lY= github.com/nats-io/gnatsd v1.4.1/go.mod h1:nqco77VO78hLCJpIcVfygDP2rPGfsEHkGTUk94uh5DQ= @@ -494,24 +631,32 @@ github.com/nats-io/nkeys v0.1.0/go.mod h1:xpnFELMwJABBLVhffcfd1MZx6VsNRFpEugbxzi github.com/nats-io/nkeys v0.1.3/go.mod h1:xpnFELMwJABBLVhffcfd1MZx6VsNRFpEugbxziKVo7w= github.com/nats-io/nuid v1.0.1/go.mod h1:19wcPz3Ph3q0Jbyiqsd0kePYG7A95tJPxeL+1OSON2c= github.com/nats-io/stan.go v0.4.5/go.mod h1:Ji7mK6gRZJSH1nc3ZJH6vi7zn/QnZhpR9Arm4iuzsUQ= +github.com/ncw/directio v1.0.5 h1:JSUBhdjEvVaJvOoyPAbcW0fnd0tvRXD76wEfZ1KcQz4= github.com/ncw/directio v1.0.5/go.mod h1:rX/pKEYkOXBGOggmcyJeJGloCkleSvphPx2eV3t6ROk= github.com/nsqio/go-nsq v1.0.7/go.mod h1:XP5zaUs3pqf+Q71EqUJs3HYfBIqfK6G83WQMdNN+Ito= github.com/oklog/run v1.0.0/go.mod h1:dlhp/R75TPv97u0XWUtDeV/lRKWPKSdTuV0TZvrmrQA= +github.com/olekukonko/tablewriter v0.0.0-20170122224234-a0225b3f23b5/go.mod h1:vsDQFd/mU46D+Z4whnwzcISnGGzXWMclvtLoiIKAKIo= +github.com/onsi/ginkgo v0.0.0-20170829012221-11459a886d9c/go.mod h1:lLunBs/Ym6LB5Z9jYTR76FiuTmxDTDusOGeTQH+WWjE= github.com/onsi/ginkgo v1.6.0/go.mod h1:lLunBs/Ym6LB5Z9jYTR76FiuTmxDTDusOGeTQH+WWjE= -github.com/onsi/ginkgo v1.7.0 h1:WSHQ+IS43OoUrWtD1/bbclrwK8TTH5hzp+umCiuxHgs= -github.com/onsi/ginkgo v1.7.0/go.mod h1:lLunBs/Ym6LB5Z9jYTR76FiuTmxDTDusOGeTQH+WWjE= -github.com/onsi/gomega v1.4.3 h1:RE1xgDvH7imwFD45h+u2SgIfERHlS2yNG4DObb5BSKU= -github.com/onsi/gomega v1.4.3/go.mod h1:ex+gbHU/CVuBBDIJjb2X0qEXbFg53c61hWP/1CpauHY= +github.com/onsi/ginkgo v1.11.0 h1:JAKSXpt1YjtLA7YpPiqO9ss6sNXEsPfSGdwN0UHqzrw= +github.com/onsi/ginkgo v1.11.0/go.mod h1:lLunBs/Ym6LB5Z9jYTR76FiuTmxDTDusOGeTQH+WWjE= +github.com/onsi/gomega v0.0.0-20170829124025-dcabb60a477c/go.mod h1:C1qb7wdrVGGVU+Z6iS04AVkA3Q65CEZX59MT0QO5uiA= +github.com/onsi/gomega v1.7.0 h1:XPnZz8VVBHjVsy1vzJmRwIcSwiUO+JFfrv/xGiigmME= +github.com/onsi/gomega v1.7.0/go.mod h1:ex+gbHU/CVuBBDIJjb2X0qEXbFg53c61hWP/1CpauHY= github.com/op/go-logging v0.0.0-20160315200505-970db520ece7 h1:lDH9UUVJtmYCjyT0CI4q8xvlXPxeZ0gYCVvWbmPlp88= github.com/op/go-logging v0.0.0-20160315200505-970db520ece7/go.mod h1:HzydrMdWErDVzsI23lYNej1Htcns9BCg93Dk0bBINWk= -github.com/openshift/api v0.0.0-20190402135445-d2f01e7b77a6 h1:SYi9lNozXRC7vIHfNxGPkxV0jHywz9X5PooRAaC90nI= -github.com/openshift/api v0.0.0-20190402135445-d2f01e7b77a6/go.mod h1:dh9o4Fs58gpFXGSYfnVxGR9PnV53I8TW84pQaJDdGiY= -github.com/openshift/client-go v0.0.0-20190402163854-7cc0953bbbb7 h1:YxC8399EDGhV1iOUd7y5cv6cgRBmtJmk3AsGMtZszu8= -github.com/openshift/client-go v0.0.0-20190402163854-7cc0953bbbb7/go.mod h1:6rzn+JTr7+WYS2E1TExP4gByoABxMznR6y2SnUIkmxk= +github.com/openshift/api v0.0.0-20200521101457-60c476765272/go.mod h1:TkhafijfTiRi1Q3120/ZSE4oIWKQ4DGRh3byPywv4Mw= +github.com/openshift/api v0.0.0-20200526144822-34f54f12813a h1:riE/kCXnb051RWT/z+DytxKEZ3+JromVDl79rXAKyFY= +github.com/openshift/api v0.0.0-20200526144822-34f54f12813a/go.mod h1:l6TGeqJ92DrZBuWMNKcot1iZUHfbYSJyBWHGgg6Dn6s= +github.com/openshift/build-machinery-go v0.0.0-20200424080330-082bf86082cc/go.mod h1:1CkcsT3aVebzRBzVTSbiKSkJMsC/CASqxesfqEMfJEc= +github.com/openshift/client-go v0.0.0-20200521150516-05eb9880269c h1:l7CmbzzkyWl4Y6qHmy6m4FvbH4iLnIXGrXqOfE5IFNA= +github.com/openshift/client-go v0.0.0-20200521150516-05eb9880269c/go.mod h1:kCMeo6IE4o4qvnepM9lgHQ4j/ZFfvY/N/2G/jpJdwm4= github.com/pascaldekloe/goe v0.1.0/go.mod h1:lzWF7FIEvWOWxwDKqyGYQf6ZUaNfKdP144TG7ZOy1lc= github.com/pborman/getopt v0.0.0-20180729010549-6fdd0a2c7117/go.mod h1:85jBQOZwpVEaDAr341tbn15RS4fCAsIst0qp7i8ex1o= github.com/pborman/uuid v1.2.0 h1:J7Q5mO4ysT1dv8hyrUGHb9+ooztCXu1D8MY8DZYsu3g= github.com/pborman/uuid v1.2.0/go.mod h1:X/NO0urCmaxf9VXbdlT7C2Yzkj2IKimNn4k+gtPdI/k= +github.com/pelletier/go-toml v1.2.0/go.mod h1:5z9KED0ma1S8pY6P1sdut58dfprrGBbd/94hg7ilaic= +github.com/peterbourgon/diskv v2.0.1+incompatible/go.mod h1:uqqh8zWWbv1HBMNONnaR/tNboyR3/BZd58JJSHlUSCU= github.com/philhofer/fwd v1.0.0/go.mod h1:gk3iGcWd9+svBvR0sR+KPcfE+RNWozjowpeBVG3ZVNU= github.com/pierrec/lz4 v2.0.5+incompatible/go.mod h1:pdkljMzZIN41W+lC3N2tnIh5sFi+IEE17M5jbnwPHcY= github.com/pierrec/lz4 v2.2.6+incompatible/go.mod h1:pdkljMzZIN41W+lC3N2tnIh5sFi+IEE17M5jbnwPHcY= @@ -528,6 +673,7 @@ github.com/pkg/sftp v1.11.0/go.mod h1:lYOWFsE0bwd1+KfKJaKeuokY15vzFx25BLbzYYoAxZ github.com/pmezard/go-difflib v1.0.0 h1:4DBwDE0NGyQoBHbLQYPwSUPoCMWR5BEzIk/f1lZbAQM= github.com/pmezard/go-difflib v1.0.0/go.mod h1:iKH77koFhYxTK1pcRnkKkqfTogsbg7gZNVY4sRDYZ/4= github.com/posener/complete v1.1.1/go.mod h1:em0nMJCgc9GFtwrmVmEMR/ZL6WyhyjMBndrE9hABlRI= +github.com/pquerna/cachecontrol v0.0.0-20171018203845-0dec1b30a021/go.mod h1:prYjPmNq4d1NPVmpShWobRqXY3q7Vp+80DqgxxUrUIA= github.com/pquerna/ffjson v0.0.0-20190930134022-aa0246cd15f7 h1:xoIK0ctDddBMnc74udxJYBqlo9Ylnsp1waqjLsnef20= github.com/pquerna/ffjson v0.0.0-20190930134022-aa0246cd15f7/go.mod h1:YARuvh7BUWHNhzDq2OM5tzR2RiCcN2D7sapiKyCel/M= github.com/prometheus/client_golang v0.9.1/go.mod h1:7SWBe2y4D6OKWSNQJUaRYU/AaXPKyh/dDVn+NZz0KFw= @@ -566,11 +712,15 @@ github.com/rogpeppe/fastuuid v0.0.0-20150106093220-6724a57986af/go.mod h1:XWv6So github.com/rogpeppe/go-charset v0.0.0-20180617210344-2471d30d28b4/go.mod h1:qgYeAmZ5ZIpBWTGllZSQnw97Dj+woV0toclVaRGI8pc= github.com/rogpeppe/go-internal v1.3.0/go.mod h1:M8bDsm7K2OlrFYOpmOWEs/qY81heoFRclV5y23lUDJ4= github.com/rs/cors v1.6.0/go.mod h1:gFx+x8UowdsKA9AchylcLynDq+nNFfI8FkUZdN/jGCU= +github.com/russross/blackfriday v1.5.2/go.mod h1:JO/DiYxRf+HjHt06OyowR9PTA263kcR/rfWxYHBV53g= github.com/ryanuber/columnize v2.1.0+incompatible/go.mod h1:sm1tb6uqfes/u+d4ooFouqFdy9/2g9QGwK3SQygK0Ts= github.com/ryanuber/go-glob v1.0.0/go.mod h1:807d1WSdnB0XRJzKNil9Om6lcp/3a0v4qIHxIXzX/Yc= github.com/satori/go.uuid v1.2.0 h1:0uYX9dsZ2yD7q2RtLRtPSdGDWzjeM3TbMJP9utgA0ww= github.com/satori/go.uuid v1.2.0/go.mod h1:dA0hQrYB0VpLJoorglMZABFdXlWrHn1NEOzdhQKdks0= +github.com/secure-io/sio-go v0.3.0 h1:QKGb6rGJeiExac9wSWxnWPYo8O8OFN7lxXQvHshX6vo= github.com/secure-io/sio-go v0.3.0/go.mod h1:D3KmXgKETffyYxBdFRN+Hpd2WzhzqS0EQwT3XWsAcBU= +github.com/sergi/go-diff v1.0.0/go.mod h1:0CfEIISq7TuYL3j771MWULgwwjU+GofnZX9QAmXWZgo= +github.com/shirou/gopsutil v2.20.3-0.20200314133625-53cec6b37e6a+incompatible h1:YiKUe2ZOmfpDBH4OSyxwkx/mjNqHHnNhOtZ2mPyRme8= github.com/shirou/gopsutil v2.20.3-0.20200314133625-53cec6b37e6a+incompatible/go.mod h1:5b4v6he4MtMOwMlS0TUMTu2PcXUg8+E1lC7eC3UO/RA= github.com/sirupsen/logrus v1.2.0/go.mod h1:LxeOpSwHxABJmUn/MG1IvRgCAasNZTLOkJPxbbu5VWo= github.com/sirupsen/logrus v1.4.2 h1:SPIRibHv4MatM3XXNO2BJeFLZwZ2LvZgfQ5+UNI2im4= @@ -581,20 +731,33 @@ github.com/sirupsen/logrus v1.6.0/go.mod h1:7uNnSEd1DgxDLC74fIahvMZmmYsHGZGEOFrf github.com/skratchdot/open-golang v0.0.0-20200116055534-eef842397966 h1:JIAuq3EEf9cgbU6AtGPK4CTG3Zf6CKMNqf0MHTggAUA= github.com/skratchdot/open-golang v0.0.0-20200116055534-eef842397966/go.mod h1:sUM3LWHvSMaG192sy56D9F7CNvL7jUJVXoqM1QKLnog= github.com/smartystreets/assertions v0.0.0-20180927180507-b2de0cb4f26d/go.mod h1:OnSkiWE9lh6wB0YB77sQom3nweQdgAjqCqsofrRNTgc= +github.com/smartystreets/assertions v0.0.0-20190401211740-f487f9de1cd3 h1:hBSHahWMEgzwRyS6dRpxY0XyjZsHyQ61s084wo5PJe0= github.com/smartystreets/assertions v0.0.0-20190401211740-f487f9de1cd3/go.mod h1:OnSkiWE9lh6wB0YB77sQom3nweQdgAjqCqsofrRNTgc= github.com/smartystreets/go-aws-auth v0.0.0-20180515143844-0c1422d1fdb9/go.mod h1:SnhjPscd9TpLiy1LpzGSKh3bXCfxxXuqd9xmQJy3slM= +github.com/smartystreets/goconvey v0.0.0-20190330032615-68dc04aab96a h1:pa8hGb/2YqsZKovtsgrwcDH1RZhVbTKCjLp47XpqCDs= github.com/smartystreets/goconvey v0.0.0-20190330032615-68dc04aab96a/go.mod h1:syvi0/a8iFYH4r/RixwvyeAJjdLS9QV7WQ/tjFTllLA= github.com/softlayer/softlayer-go v0.0.0-20190615201252-ba6e7f295217 h1:MFHQI+AYM6otrSP+l3dLhE2DjrSr5HXfV4mt4M6pjPs= github.com/softlayer/softlayer-go v0.0.0-20190615201252-ba6e7f295217/go.mod h1:Cw4GTlQccdRGSEf6KiMju767x0NEHE0YIVPJSaXjlsw= github.com/soheilhy/cmux v0.1.4/go.mod h1:IM3LyeVVIOuxMH7sFAkER9+bJ4dT7Ms6E4xg4kGIyLM= github.com/spaolacci/murmur3 v1.1.0/go.mod h1:JwIasOWyU6f++ZhiEuf87xNszmSA2myDM2Kzu9HwQUA= +github.com/spf13/afero v1.1.2/go.mod h1:j4pytiNVoe2o6bmDsKpLACNPDBIoEAkihy7loJ1B0CQ= +github.com/spf13/afero v1.2.2/go.mod h1:9ZxEEn6pIJ8Rxe320qSDBk6AsU0r9pR7Q4OcevTdifk= +github.com/spf13/cast v1.3.0/go.mod h1:Qx5cxh0v+4UWYiBimWS+eyWzqEqokIECu5etghLkUJE= github.com/spf13/cobra v0.0.3 h1:ZlrZ4XsMRm04Fr5pSFxBgfND2EBVa1nLpiy1stUsX/8= github.com/spf13/cobra v0.0.3/go.mod h1:1l0Ry5zgKvJasoi3XT1TypsSe7PqH0Sj9dhYf7v3XqQ= +github.com/spf13/cobra v0.0.5 h1:f0B+LkLX6DtmRH1isoNA9VTtNUK9K8xYd28JNNfOv/s= +github.com/spf13/cobra v0.0.5/go.mod h1:3K3wKZymM7VvHMDS9+Akkh4K60UwM26emMESw8tLCHU= +github.com/spf13/jwalterweatherman v1.0.0/go.mod h1:cQK4TGJAtQXfYWX+Ddv3mKDzgVb68N+wFjFa4jdeBTo= +github.com/spf13/pflag v0.0.0-20170130214245-9ff6c6923cff/go.mod h1:DYY7MBk1bdzusC3SYhjObp+wFpr4gzcvqqNjLnInEg4= +github.com/spf13/pflag v1.0.1/go.mod h1:DYY7MBk1bdzusC3SYhjObp+wFpr4gzcvqqNjLnInEg4= +github.com/spf13/pflag v1.0.3/go.mod h1:DYY7MBk1bdzusC3SYhjObp+wFpr4gzcvqqNjLnInEg4= github.com/spf13/pflag v1.0.5 h1:iy+VFUOCP1a+8yFto/drg2CJ5u0yRoB7fZw3DKv/JXA= github.com/spf13/pflag v1.0.5/go.mod h1:McXfInJRrz4CZXVZOBLb0bTZqETkiAhM9Iw0y3An2Bg= +github.com/spf13/viper v1.3.2/go.mod h1:ZiWeW+zYFKm7srdB9IoDzzZXaJaI5eL9QjNiN/DMA2s= github.com/streadway/amqp v0.0.0-20190404075320-75d898a42a94/go.mod h1:AZpEONHx3DKn8O/DFsRAY58/XVQiIPMTMB1SddzLXVw= github.com/stretchr/objx v0.1.0/go.mod h1:HFkY916IF+rwdDfMAkV7OtwuqBVzrE8GR6GFx+wExME= github.com/stretchr/objx v0.1.1/go.mod h1:HFkY916IF+rwdDfMAkV7OtwuqBVzrE8GR6GFx+wExME= +github.com/stretchr/objx v0.2.0 h1:Hbg2NidpLE8veEBkEZTL3CvlkUIVzuU9jDplZO54c48= github.com/stretchr/objx v0.2.0/go.mod h1:qt09Ya8vawLte6SNmTgCsAVtYtaKzEcn8ATUoHMkEqE= github.com/stretchr/testify v1.2.2/go.mod h1:a8OnRcib4nhh0OaRAV+Yts87kKdq0PP7pXfy6kDkUVs= github.com/stretchr/testify v1.3.0 h1:TivCn/peBQ7UY8ooIcPgZFpTNSz0Q2U6UrFlUfqbe0Q= @@ -609,15 +772,20 @@ github.com/tg123/go-htpasswd v1.0.0 h1:Ze/pZsz73JiCwXIyJBPvNs75asKBgfodCf8iTEkgk github.com/tg123/go-htpasswd v1.0.0/go.mod h1:eQTgl67UrNKQvEPKrDLGBssjVwYQClFZjALVLhIv8C0= github.com/tidwall/gjson v1.3.5/go.mod h1:P256ACg0Mn+j1RXIDXoss50DeIABTYK1PULOJHhxOls= github.com/tidwall/match v1.0.1/go.mod h1:LujAq0jyVjBy028G1WhWfIzbpQfMO8bBZ6Tyb0+pL9E= +github.com/tidwall/pretty v1.0.0 h1:HsD+QiTn7sK6flMKIvNmpqz1qrpP3Ps6jOKIKMooyg4= github.com/tidwall/pretty v1.0.0/go.mod h1:XNkn88O1ChpSDQmQeStsy+sBenx6DDtFZJxhVysOjyk= github.com/tidwall/sjson v1.0.4/go.mod h1:bURseu1nuBkFpIES5cz6zBtjmYeOQmEESshn7VpF15Y= github.com/tinylib/msgp v1.1.1/go.mod h1:+d+yLhGm8mzTaHzB+wgMYrodPfmZrzkirds8fDWklFE= +github.com/tmc/grpc-websocket-proxy v0.0.0-20170815181823-89b8d40f7ca8/go.mod h1:ncp9v5uamzpCO7NfCPTXjqaC+bZgJeR0sMTm6dMHP7U= github.com/tmc/grpc-websocket-proxy v0.0.0-20190109142713-0ad062ec5ee5/go.mod h1:ncp9v5uamzpCO7NfCPTXjqaC+bZgJeR0sMTm6dMHP7U= github.com/tv42/httpunix v0.0.0-20150427012821-b75d8614f926/go.mod h1:9ESjWnEqriFuLhtthL60Sar/7RFoluCcXsuvEwTV5KM= github.com/tv42/httpunix v0.0.0-20191220191345-2ba4b9c3382c/go.mod h1:hzIxponao9Kjc7aWznkXaL4U4TWaDSs8zcsY4Ka08nM= github.com/ugorji/go v1.1.5-pre/go.mod h1:FwP/aQVg39TXzItUBMwnWp9T9gPQnXw4Poh4/oBQZ/0= +github.com/ugorji/go/codec v0.0.0-20181204163529-d75b2dcb6bc8/go.mod h1:VFNgLljTbGfSG7qAOspJ7OScBnGdDN/yBr0sguwnwf0= github.com/ugorji/go/codec v1.1.5-pre/go.mod h1:tULtS6Gy1AE1yCENaw4Vb//HLH5njI2tfCQDUqRd8fI= +github.com/urfave/cli v1.20.0/go.mod h1:70zkFmudgCuE/ngEzBv17Jvp/497gISqfk5gWijbERA= github.com/valyala/tcplisten v0.0.0-20161114210144-ceec8f93295a/go.mod h1:v3UYOV9WzVtRmSR+PDvWpU/qWl4Wa5LApYYX4ZtKbio= +github.com/vektah/gqlparser v1.1.2/go.mod h1:1ycwN7Ij5njmMkPPAOaRFY4rET2Enx7IkVv3vaXspKw= github.com/vmware/govmomi v0.21.1-0.20191008161538-40aebf13ba45 h1:zpQBW+l4uPQTfTOxedN5GEcSONhabbCf3X+5+P/H4Jk= github.com/vmware/govmomi v0.21.1-0.20191008161538-40aebf13ba45/go.mod h1:zbnFoBQ9GIjs2RVETy8CNEpb+L+Lwkjs3XZUL0B3/m0= github.com/vmware/vmw-guestinfo v0.0.0-20170707015358-25eff159a728/go.mod h1:x9oS4Wk2s2u4tS29nEaDLdzvuHdB19CvSGJjPgkZJNk= @@ -626,11 +794,18 @@ github.com/willf/bloom v2.0.3+incompatible/go.mod h1:MmAltL9pDMNTrvUkxdg0k0q5I0s github.com/xdg/scram v0.0.0-20180814205039-7eeb5667e42c/go.mod h1:lB8K/P019DLNhemzwFU4jHLhdvlE6uDZjXFejJXr49I= github.com/xdg/stringprep v1.0.0/go.mod h1:Jhud4/sHMO4oL310DaZAKk9ZaJ08SJfe+sJh0HrGL1Y= github.com/xiang90/probing v0.0.0-20190116061207-43a291ad63a2/go.mod h1:UETIi67q53MR2AWcXfiuqkDkRtnGDLqkBTpCHuJHxtU= +github.com/xordataexchange/crypt v0.0.3-0.20170626215501-b2862e3d0a77/go.mod h1:aYKd//L2LvnjZzWKhF00oedf4jCCReLcmhLdhm1A27Q= github.com/yuin/goldmark v1.1.25/go.mod h1:3hX8gzYuyVAZsxl0MRgGTJEmQBFcNTphYh9decYSb74= github.com/yuin/goldmark v1.1.27/go.mod h1:3hX8gzYuyVAZsxl0MRgGTJEmQBFcNTphYh9decYSb74= github.com/zalando/go-keyring v0.0.0-20200121091418-667557018717 h1:3M/uUZajYn/082wzUajekePxpUAZhMTfXvI9R+26SJ0= github.com/zalando/go-keyring v0.0.0-20200121091418-667557018717/go.mod h1:RaxNwUITJaHVdQ0VC7pELPZ3tOWn13nr0gZMZEhpVU0= go.etcd.io/bbolt v1.3.3/go.mod h1:IbVyRI1SCnLcuJnV2u8VeU0CEYM7e686BmAb1XKL+uU= +go.etcd.io/etcd v0.0.0-20191023171146-3cf2f69b5738 h1:VcrIfasaLFkyjk6KNlXQSzO+B0fZcnECiDrKJsfxka0= +go.etcd.io/etcd v0.0.0-20191023171146-3cf2f69b5738/go.mod h1:dnLIgRNXwCJa5e+c6mIZCrds/GIG4ncV9HhK5PX7jPg= +go.mongodb.org/mongo-driver v1.0.3/go.mod h1:u7ryQJ+DOzQmeO7zB6MHyr8jkEQvC8vH7qLUO4lqsUM= +go.mongodb.org/mongo-driver v1.1.1/go.mod h1:u7ryQJ+DOzQmeO7zB6MHyr8jkEQvC8vH7qLUO4lqsUM= +go.mongodb.org/mongo-driver v1.1.2 h1:jxcFYjlkl8xaERsgLo+RNquI0epW6zuy/ZRQs6jnrFA= +go.mongodb.org/mongo-driver v1.1.2/go.mod h1:u7ryQJ+DOzQmeO7zB6MHyr8jkEQvC8vH7qLUO4lqsUM= go.opencensus.io v0.15.0/go.mod h1:UffZAU+4sDEINUGP/B7UfBBkq4fqLu9zXAX7ke6CHW0= go.opencensus.io v0.21.0 h1:mU6zScU4U1YAFPHEHYk+3JC4SY7JxgkqS10ZOSyksNg= go.opencensus.io v0.21.0/go.mod h1:mSImk1erAIZhrmZN+AvHh14ztQfjbGwt4TtuofqLduU= @@ -638,12 +813,15 @@ go.opencensus.io v0.22.0/go.mod h1:+kGneAE2xo2IficOXnaByMWTGM9T73dGwxeWcUqIpI8= go.opencensus.io v0.22.2/go.mod h1:yxeiOL68Rb0Xd1ddK5vPZ/oVn4vY4Ynel7k9FzqtOIw= go.opencensus.io v0.22.3 h1:8sGtKOrtQqkN1bp2AtX+misvLIlOmsEsNd+9NIcPEm8= go.opencensus.io v0.22.3/go.mod h1:yxeiOL68Rb0Xd1ddK5vPZ/oVn4vY4Ynel7k9FzqtOIw= +go.uber.org/atomic v1.3.2/go.mod h1:gD2HeocX3+yG+ygLZcrzQJaqmWj9AIm7n08wl/qW/PE= go.uber.org/atomic v1.6.0 h1:Ezj3JGmsOnG1MoRWQkPBsKLe9DwWD9QeXzTRzzldNVk= go.uber.org/atomic v1.6.0/go.mod h1:sABNBOSYdrvTF6hTgEIbc7YasKWGhgEQZyfxyTvoXHQ= +go.uber.org/multierr v1.1.0/go.mod h1:wR5kodmAFQ0UK8QlbwjlSNy0Z68gJhDJUG5sjR94q/0= go.uber.org/multierr v1.5.0 h1:KCa4XfM8CWFCpxXRGok+Q0SS/0XBhMDbHHGABQLvD2A= go.uber.org/multierr v1.5.0/go.mod h1:FeouvMocqHpRaaGuG9EjoKcStLC43Zu/fmqdUMPcKYU= go.uber.org/tools v0.0.0-20190618225709-2cfd321de3ee h1:0mgffUl7nfd+FpvXMVz4IDEaUSmT1ysygQC7qYo7sG4= go.uber.org/tools v0.0.0-20190618225709-2cfd321de3ee/go.mod h1:vJERXedbb3MVM5f9Ejo0C68/HhF8uaILCdgjnY+goOA= +go.uber.org/zap v1.10.0/go.mod h1:vwi/ZaCAaUcBkycHslxD9B2zi4UTXhF60s6SWpuDF0Q= go.uber.org/zap v1.15.0 h1:ZZCA22JRF2gQE5FoNmhmrf7jeJJ2uhqDUNRYKm8dvmM= go.uber.org/zap v1.15.0/go.mod h1:Mb2vm2krFEG5DV0W9qcHBYFtp/Wku1cvYaqPsS/WYfc= gocloud.dev v0.19.0 h1:EDRyaRAnMGSq/QBto486gWFxMLczAfIYUmusV7XLNBM= @@ -651,18 +829,24 @@ gocloud.dev v0.19.0/go.mod h1:SmKwiR8YwIMMJvQBKLsC3fHNyMwXLw3PMDO+VVteJMI= golang.org/x/arch v0.0.0-20190909030613-46d78d1859ac/go.mod h1:flIaEI6LNU6xOCD5PaJvn9wGP0agmIOqjrtsKGRguv4= golang.org/x/crypto v0.0.0-20180904163835-0709b304e793/go.mod h1:6SG95UA2DQfeDnfUPMdvaQW0Q7yPrPDi9nlGo2tz2b4= golang.org/x/crypto v0.0.0-20181106171534-e4dc69e5b2fd/go.mod h1:6SG95UA2DQfeDnfUPMdvaQW0Q7yPrPDi9nlGo2tz2b4= +golang.org/x/crypto v0.0.0-20181203042331-505ab145d0a9/go.mod h1:6SG95UA2DQfeDnfUPMdvaQW0Q7yPrPDi9nlGo2tz2b4= +golang.org/x/crypto v0.0.0-20190211182817-74369b46fc67/go.mod h1:6SG95UA2DQfeDnfUPMdvaQW0Q7yPrPDi9nlGo2tz2b4= golang.org/x/crypto v0.0.0-20190228161510-8dd112bcdc25/go.mod h1:djNgcEr1/C05ACkg1iLfiJU5Ep61QUkGW8qpdssI0+w= golang.org/x/crypto v0.0.0-20190308221718-c2843e01d9a2/go.mod h1:djNgcEr1/C05ACkg1iLfiJU5Ep61QUkGW8qpdssI0+w= +golang.org/x/crypto v0.0.0-20190320223903-b7391e95e576/go.mod h1:djNgcEr1/C05ACkg1iLfiJU5Ep61QUkGW8qpdssI0+w= golang.org/x/crypto v0.0.0-20190404164418-38d8ce5564a5/go.mod h1:WFFai1msRO1wXaEeE5yQxYXgSfI8pQAWXbQop6sCtWE= golang.org/x/crypto v0.0.0-20190426145343-a29dc8fdc734/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI= golang.org/x/crypto v0.0.0-20190510104115-cbcb75029529/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI= golang.org/x/crypto v0.0.0-20190513172903-22d7a77e9e5f/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI= golang.org/x/crypto v0.0.0-20190605123033-f99c8df09eb5/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI= +golang.org/x/crypto v0.0.0-20190611184440-5c40567a22f8/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI= +golang.org/x/crypto v0.0.0-20190617133340-57b3e21c3d56/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI= golang.org/x/crypto v0.0.0-20190701094942-4def268fd1a4/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI= golang.org/x/crypto v0.0.0-20190820162420-60c769a6c586/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI= golang.org/x/crypto v0.0.0-20191011191535-87dc89f01550 h1:ObdrDkeb4kJdCP557AjRjq69pTHfNouLtWZG7j9rPN8= golang.org/x/crypto v0.0.0-20191011191535-87dc89f01550/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI= golang.org/x/crypto v0.0.0-20191117063200-497ca9f6d64f/go.mod h1:LzIPMQfyMNhhGPhUkYOs5KpL4U8rLKemX1yGLhDgUto= +golang.org/x/crypto v0.0.0-20200220183623-bac4c82f6975/go.mod h1:LzIPMQfyMNhhGPhUkYOs5KpL4U8rLKemX1yGLhDgUto= golang.org/x/crypto v0.0.0-20200510223506-06a226fb4e37 h1:cg5LA/zNPRzIXIWSCxQW10Rvpy94aQh3LT/ShoCpkHw= golang.org/x/crypto v0.0.0-20200510223506-06a226fb4e37/go.mod h1:LzIPMQfyMNhhGPhUkYOs5KpL4U8rLKemX1yGLhDgUto= golang.org/x/crypto v0.0.0-20200622213623-75b288015ac9 h1:psW17arqaxU48Z5kZ0CQnkZWQJsqcURM6tKiBApRjXI= @@ -701,9 +885,11 @@ golang.org/x/mod v0.1.1-0.20191107180719-034126e5016b/go.mod h1:QqPTAvyqsEbceGzB golang.org/x/mod v0.2.0/go.mod h1:s0Qsj1ACt9ePp/hMypM3fl4fZqREWJwdYDEqhRiZZUA= golang.org/x/mod v0.3.0 h1:RM4zey1++hCTbCVQfnWeKs9/IEsaBLA8vTkd0WVtmH4= golang.org/x/mod v0.3.0/go.mod h1:s0Qsj1ACt9ePp/hMypM3fl4fZqREWJwdYDEqhRiZZUA= +golang.org/x/net v0.0.0-20170114055629-f2499483f923/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= golang.org/x/net v0.0.0-20180724234803-3673e40ba225/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= golang.org/x/net v0.0.0-20180826012351-8a410e7b638d/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= golang.org/x/net v0.0.0-20180906233101-161cd47e91fd/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= +golang.org/x/net v0.0.0-20181005035420-146acd28ed58/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= golang.org/x/net v0.0.0-20181114220301-adae6a3d119a/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= golang.org/x/net v0.0.0-20181201002055-351d144fa1fc/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= golang.org/x/net v0.0.0-20181220203305-927f97764cc3/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= @@ -711,6 +897,7 @@ golang.org/x/net v0.0.0-20190108225652-1e06a53dbb7e/go.mod h1:mL1N/T3taQHkDXs73r golang.org/x/net v0.0.0-20190125091013-d26f9f9a57f3/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= golang.org/x/net v0.0.0-20190213061140-3a22650c66bd/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= golang.org/x/net v0.0.0-20190311183353-d8887717615a/go.mod h1:t9HGtf8HONx5eT2rtn7q6eTqICYqUVnKs3thJo3Qplg= +golang.org/x/net v0.0.0-20190320064053-1272bf9dcd53/go.mod h1:t9HGtf8HONx5eT2rtn7q6eTqICYqUVnKs3thJo3Qplg= golang.org/x/net v0.0.0-20190404232315-eb5bcb51f2a3/go.mod h1:t9HGtf8HONx5eT2rtn7q6eTqICYqUVnKs3thJo3Qplg= golang.org/x/net v0.0.0-20190501004415-9ce7a6920f09/go.mod h1:t9HGtf8HONx5eT2rtn7q6eTqICYqUVnKs3thJo3Qplg= golang.org/x/net v0.0.0-20190503192946-f4e77d36d62c/go.mod h1:t9HGtf8HONx5eT2rtn7q6eTqICYqUVnKs3thJo3Qplg= @@ -721,6 +908,8 @@ golang.org/x/net v0.0.0-20190619014844-b5b0513f8c1b/go.mod h1:z5CRVTTTmAJ677TzLL golang.org/x/net v0.0.0-20190620200207-3b0461eec859/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= golang.org/x/net v0.0.0-20190724013045-ca1201d0de80/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= golang.org/x/net v0.0.0-20190813141303-74dc4d7220e7/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= +golang.org/x/net v0.0.0-20190827160401-ba9fcec4b297/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= +golang.org/x/net v0.0.0-20191004110552-13f9640d40b9/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= golang.org/x/net v0.0.0-20191112182307-2180aed22343/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= golang.org/x/net v0.0.0-20191209160850-c0dbc17a3553 h1:efeOvDhwQ29Dj3SdAV/MJf8oukgn+8D8WgaCaRMchF8= golang.org/x/net v0.0.0-20191209160850-c0dbc17a3553/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= @@ -753,6 +942,7 @@ golang.org/x/sync v0.0.0-20190423024810-112230192c58/go.mod h1:RxMgew5VJxzue5/jJ golang.org/x/sync v0.0.0-20190911185100-cd5d95a43a6e/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sync v0.0.0-20200317015054-43a5402ce75a h1:WXEvlFVvvGxCJLG6REjsT03iWnKLEWinaScsxF2Vm2o= golang.org/x/sync v0.0.0-20200317015054-43a5402ce75a/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= +golang.org/x/sys v0.0.0-20170830134202-bb24a47a89ea/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= golang.org/x/sys v0.0.0-20180823144017-11551d06cbcc/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= golang.org/x/sys v0.0.0-20180830151530-49385e6e1522/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= golang.org/x/sys v0.0.0-20180905080454-ebe1bf3edb33/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= @@ -760,11 +950,14 @@ golang.org/x/sys v0.0.0-20180909124046-d0be0721c37e/go.mod h1:STP8DvDyc/dI5b8T5h golang.org/x/sys v0.0.0-20180926160741-c2ed4eda69e7/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= golang.org/x/sys v0.0.0-20181107165924-66b7b1311ac8/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= golang.org/x/sys v0.0.0-20181116152217-5ac8a444bdc5/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= +golang.org/x/sys v0.0.0-20181205085412-a5c9d58dba9a/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= golang.org/x/sys v0.0.0-20190129075346-302c3dd5f1cc/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= golang.org/x/sys v0.0.0-20190130150945-aca44879d564/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= +golang.org/x/sys v0.0.0-20190209173611-3b5209105503/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= golang.org/x/sys v0.0.0-20190215142949-d0b11bdaac8a/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= golang.org/x/sys v0.0.0-20190222072716-a9d3bda3a223/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= golang.org/x/sys v0.0.0-20190312061237-fead79001313/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20190321052220-f7bb7a8bee54/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20190403152447-81d4e9dc473e/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20190412213103-97732733099d/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20190422165155-953cdadca894 h1:Cz4ceDQGXuKRnVBDTS23GTn/pU5OE2C0WrNTOYK1Uuc= @@ -774,10 +967,13 @@ golang.org/x/sys v0.0.0-20190507160741-ecd444e8653b h1:ag/x1USPSsqHud38I9BAC88qd golang.org/x/sys v0.0.0-20190507160741-ecd444e8653b/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20190523142557-0e01d883c5c5/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20190606165138-5da285871e9c/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20190616124812-15dcb6c0061f/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20190620070143-6f217b454f45/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20190624142023-c5567b49c5d0/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20190726091711-fc99dfbffb4e/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20190826190057-c7b8b68b1456/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20191001151750-bb3f8db39f24/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20191022100944-742c48ecaeb7/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20191026070338-33540a1f6037/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20191112214154-59a1497f0cea/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20191204072324-ce4227a45e2e/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= @@ -797,12 +993,14 @@ golang.org/x/sys v0.0.0-20200420163511-1957bb5e6d1f/go.mod h1:h1NjWce9XRLGQEsW7w golang.org/x/sys v0.0.0-20200501052902-10377860bb8e/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20200511232937-7e40ca221e25 h1:OKbAoGs4fGM5cPLlVQLZGYkFC8OnOfgo6tt0Smf9XhM= golang.org/x/sys v0.0.0-20200511232937-7e40ca221e25/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/text v0.0.0-20160726164857-2910a502d2bf/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ= golang.org/x/text v0.0.0-20170915032832-14c0d48ead0c/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ= golang.org/x/text v0.3.0/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ= golang.org/x/text v0.3.1-0.20180807135948-17ff2d5776d2/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ= golang.org/x/text v0.3.1-0.20181227161524-e6919f6577db/go.mod h1:bEr9sfX3Q8Zfm5fL9x+3itogRgK3+ptLWKqgva+5dAk= golang.org/x/text v0.3.2 h1:tW2bmiBqwgJj/UpqtC8EpXEZVYOwU0yG4iWbprSVAcs= golang.org/x/text v0.3.2/go.mod h1:bEr9sfX3Q8Zfm5fL9x+3itogRgK3+ptLWKqgva+5dAk= +golang.org/x/time v0.0.0-20180412165947-fbb02b2291d2/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ= golang.org/x/time v0.0.0-20181108054448-85acf8d2951c/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ= golang.org/x/time v0.0.0-20190308202827-9d24e82272b4 h1:SvFZT6jyqRaOeXpc5h/JSfZenJ2O330aBsf7JfSUXmQ= golang.org/x/time v0.0.0-20190308202827-9d24e82272b4/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ= @@ -810,7 +1008,10 @@ golang.org/x/time v0.0.0-20191024005414-555d28b269f0 h1:/5xXl8Y5W96D+TtHSlonuFqG golang.org/x/time v0.0.0-20191024005414-555d28b269f0/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ= golang.org/x/tools v0.0.0-20180221164845-07fd8470d635/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= golang.org/x/tools v0.0.0-20180917221912-90fa682c2a6e/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= +golang.org/x/tools v0.0.0-20181011042414-1f849cf54d09/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= +golang.org/x/tools v0.0.0-20181030221726-6c7e314b6563/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= golang.org/x/tools v0.0.0-20190114222345-bf090417da8b/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= +golang.org/x/tools v0.0.0-20190125232054-d66bd3c5d5a6/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= golang.org/x/tools v0.0.0-20190226205152-f727befe758c/go.mod h1:9Yl7xja0Znq3iFh3HoIrodX9oNMXvdceNzlUR8zjMvY= golang.org/x/tools v0.0.0-20190311212946-11955173bddd/go.mod h1:LCzVGOaR6xXOjkQ3onu1FJEFr0SW1gC7cKk1uF8kGRs= golang.org/x/tools v0.0.0-20190312151545-0bb0c0a6e846/go.mod h1:LCzVGOaR6xXOjkQ3onu1FJEFr0SW1gC7cKk1uF8kGRs= @@ -821,11 +1022,14 @@ golang.org/x/tools v0.0.0-20190425150028-36563e24a262/go.mod h1:RgjU9mgBXZiqYHBn golang.org/x/tools v0.0.0-20190506145303-2d16b83fe98c/go.mod h1:RgjU9mgBXZiqYHBnxXauZ1Gv1EHHAz9KjViQ78xBX0Q= golang.org/x/tools v0.0.0-20190524140312-2c0ae7006135/go.mod h1:RgjU9mgBXZiqYHBnxXauZ1Gv1EHHAz9KjViQ78xBX0Q= golang.org/x/tools v0.0.0-20190606124116-d0a3d012864b/go.mod h1:/rFqwRUd4F7ZHNgwSSTFct+R/Kf4OFW1sUzUTQQTgfc= +golang.org/x/tools v0.0.0-20190614205625-5aca471b1d59/go.mod h1:/rFqwRUd4F7ZHNgwSSTFct+R/Kf4OFW1sUzUTQQTgfc= +golang.org/x/tools v0.0.0-20190617190820-da514acc4774/go.mod h1:/rFqwRUd4F7ZHNgwSSTFct+R/Kf4OFW1sUzUTQQTgfc= golang.org/x/tools v0.0.0-20190621195816-6e04913cbbac/go.mod h1:/rFqwRUd4F7ZHNgwSSTFct+R/Kf4OFW1sUzUTQQTgfc= golang.org/x/tools v0.0.0-20190628153133-6cdbf07be9d0/go.mod h1:/rFqwRUd4F7ZHNgwSSTFct+R/Kf4OFW1sUzUTQQTgfc= golang.org/x/tools v0.0.0-20190816200558-6889da9d5479/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= golang.org/x/tools v0.0.0-20190911174233-4f2ddba30aff/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= golang.org/x/tools v0.0.0-20190914235951-31e00f45c22e/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= +golang.org/x/tools v0.0.0-20190920225731-5eefd052ad72/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= golang.org/x/tools v0.0.0-20191012152004-8de300cfc20a/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= golang.org/x/tools v0.0.0-20191029041327-9cc4af7d6b2c/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= golang.org/x/tools v0.0.0-20191029190741-b9c20aec41a5/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= @@ -836,6 +1040,7 @@ golang.org/x/tools v0.0.0-20191125144606-a911d9008d1f/go.mod h1:b+2E5dAYhXwXZwtn golang.org/x/tools v0.0.0-20191130070609-6e064ea0cf2d/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= golang.org/x/tools v0.0.0-20191216173652-a0e659d51361/go.mod h1:TB2adYChydJhpapKDTa4BR/hXlZSLoq2Wpct/0txZ28= golang.org/x/tools v0.0.0-20191227053925-7b8e75db28f4/go.mod h1:TB2adYChydJhpapKDTa4BR/hXlZSLoq2Wpct/0txZ28= +golang.org/x/tools v0.0.0-20200115044656-831fdb1e1868/go.mod h1:TB2adYChydJhpapKDTa4BR/hXlZSLoq2Wpct/0txZ28= golang.org/x/tools v0.0.0-20200117161641-43d50277825c/go.mod h1:TB2adYChydJhpapKDTa4BR/hXlZSLoq2Wpct/0txZ28= golang.org/x/tools v0.0.0-20200122220014-bf1340f18c4a/go.mod h1:TB2adYChydJhpapKDTa4BR/hXlZSLoq2Wpct/0txZ28= golang.org/x/tools v0.0.0-20200130002326-2f3ba24bd6e7/go.mod h1:TB2adYChydJhpapKDTa4BR/hXlZSLoq2Wpct/0txZ28= @@ -922,6 +1127,7 @@ google.golang.org/grpc v1.21.0/go.mod h1:oYelfM1adQP15Ek0mdvEgi9Df8B9CZIaU1084ij google.golang.org/grpc v1.21.1/go.mod h1:oYelfM1adQP15Ek0mdvEgi9Df8B9CZIaU1084ijfRaM= google.golang.org/grpc v1.22.0/go.mod h1:Y5yQAOtifL1yxbo5wqy6BxZv8vAUGQwXBOALyacEbxg= google.golang.org/grpc v1.23.0/go.mod h1:Y5yQAOtifL1yxbo5wqy6BxZv8vAUGQwXBOALyacEbxg= +google.golang.org/grpc v1.23.1/go.mod h1:Y5yQAOtifL1yxbo5wqy6BxZv8vAUGQwXBOALyacEbxg= google.golang.org/grpc v1.25.1/go.mod h1:c3i+UQWmh7LiEpx4sFZnkU36qjEYZ0imhYfXVyQciAY= google.golang.org/grpc v1.26.0/go.mod h1:qbnxyOmOxrQa7FizSgH+ReBfzJrCY1pSN7KXBS8abTk= google.golang.org/grpc v1.27.0/go.mod h1:qbnxyOmOxrQa7FizSgH+ReBfzJrCY1pSN7KXBS8abTk= @@ -940,6 +1146,7 @@ google.golang.org/protobuf v1.23.0/go.mod h1:EGpADcykh3NcUnDUJcl1+ZksZNG86OlYog2 gopkg.in/alecthomas/kingpin.v2 v2.2.6 h1:jMFz6MfLP0/4fUyZle81rXUoxOBFi19VUFKVDOQfozc= gopkg.in/alecthomas/kingpin.v2 v2.2.6/go.mod h1:FMv+mEhP44yOT+4EoQTLFTRgOQ1FBLkstjWtayDeSgw= gopkg.in/asn1-ber.v1 v1.0.0-20181015200546-f715ec2f112d/go.mod h1:cuepJuh7vyXfUyUwEgHQXw849cJrilpS5NeIjOWESAw= +gopkg.in/cheggaaa/pb.v1 v1.0.25/go.mod h1:V/YB90LKu/1FcN3WVnfiiE5oMCibMjukxqG/qStrOgw= gopkg.in/cheggaaa/pb.v1 v1.0.28/go.mod h1:V/YB90LKu/1FcN3WVnfiiE5oMCibMjukxqG/qStrOgw= gopkg.in/errgo.v2 v2.1.0/go.mod h1:hNsd1EY+bozCKY1Ytp96fpM3vjJbqLJn88ws8XvfDNI= gopkg.in/fsnotify.v1 v1.4.7 h1:xOHLXZwVvI9hhs+cLKq5+I5onOuwQLhQwiu63xxlHs4= @@ -958,10 +1165,11 @@ gopkg.in/jcmturner/rpc.v1 v1.1.0/go.mod h1:YIdkC4XfD6GXbzje11McwsDuOlZQSb9W4vfLv gopkg.in/kothar/go-backblaze.v0 v0.0.0-20191215213626-7594ed38700f h1:cdE1ou7PeL03MZZ6il83rIcDcK4pDKIccnreJGpztxQ= gopkg.in/kothar/go-backblaze.v0 v0.0.0-20191215213626-7594ed38700f/go.mod h1:zJ2QpyDCYo1KvLXlmdnFlQAyF/Qfth0fB8239Qg7BIE= gopkg.in/ldap.v3 v3.0.3/go.mod h1:oxD7NyBuxchC+SgJDE1Q5Od05eGt29SDQVBmV+HYbzw= -gopkg.in/mgo.v2 v2.0.0-20180705113604-9856a29383ce h1:xcEWjVhvbDy+nHP67nPDDpbYrY+ILlfndk4bRioVHaU= -gopkg.in/mgo.v2 v2.0.0-20180705113604-9856a29383ce/go.mod h1:yeKp02qBN3iKW1OzL3MGk2IdtZzaj7SFntXj72NppTA= +gopkg.in/natefinch/lumberjack.v2 v2.0.0 h1:1Lc07Kr7qY4U2YPouBjpCLxpiyxIVoxqXgkXLknAOE8= +gopkg.in/natefinch/lumberjack.v2 v2.0.0/go.mod h1:l0ndWWf7gzL7RNwBG7wST/UCcT4T24xpD6X8LsfU/+k= gopkg.in/olivere/elastic.v5 v5.0.80/go.mod h1:uhHoB4o3bvX5sorxBU29rPcmBQdV2Qfg0FBrx5D6pV0= gopkg.in/resty.v1 v1.12.0/go.mod h1:mDo4pnntr5jdWRML875a/NmxYqAlA73dVijT2AXvQQo= +gopkg.in/square/go-jose.v2 v2.2.2/go.mod h1:M9dMgbHiYLoDGQrXy7OpJDJWiKiU//h+vD76mk0e1AI= gopkg.in/square/go-jose.v2 v2.3.1/go.mod h1:M9dMgbHiYLoDGQrXy7OpJDJWiKiU//h+vD76mk0e1AI= gopkg.in/tomb.v1 v1.0.0-20141024135613-dd632973f1e7 h1:uRGJdciOHaEIrze2W8Q3AKkepLTh2hOroT7a+7czfdQ= gopkg.in/tomb.v1 v1.0.0-20141024135613-dd632973f1e7/go.mod h1:dt/ZhP58zS4L8KSrWDmTeBkI65Dw0HsyUHuEVlX15mw= @@ -973,8 +1181,9 @@ gopkg.in/yaml.v2 v2.2.1/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI= gopkg.in/yaml.v2 v2.2.2/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI= gopkg.in/yaml.v2 v2.2.4/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI= gopkg.in/yaml.v2 v2.2.5/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI= -gopkg.in/yaml.v2 v2.2.7 h1:VUgggvou5XRW9mHwD/yXxIYSMtY0zoKQf/v226p2nyo= -gopkg.in/yaml.v2 v2.2.7/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI= +gopkg.in/yaml.v2 v2.2.8 h1:obN1ZagJSUGI0Ek/LBmuj4SNLPfIny3KsKFopxRdj10= +gopkg.in/yaml.v2 v2.2.8/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI= +gotest.tools v2.2.0+incompatible/go.mod h1:DsYFclhRJ6vuDpmuTbkuFWG+y2sxOXAzmJt81HFBacw= honnef.co/go/tools v0.0.0-20190102054323-c2f93a96b099/go.mod h1:rf3lG4BRIbNafJWhAfAdb/ePZxsR/4RtNHQocxwk9r4= honnef.co/go/tools v0.0.0-20190106161140-3f1c8253044a/go.mod h1:rf3lG4BRIbNafJWhAfAdb/ePZxsR/4RtNHQocxwk9r4= honnef.co/go/tools v0.0.0-20190418001031-e561f6794a2a/go.mod h1:rf3lG4BRIbNafJWhAfAdb/ePZxsR/4RtNHQocxwk9r4= @@ -982,24 +1191,39 @@ honnef.co/go/tools v0.0.0-20190523083050-ea95bdfd59fc/go.mod h1:rf3lG4BRIbNafJWh honnef.co/go/tools v0.0.1-2019.2.3/go.mod h1:a3bituU0lyd329TUQxRnasdCoJDkEUEAqEt0JzvZhAg= honnef.co/go/tools v0.0.1-2020.1.3 h1:sXmLre5bzIR6ypkjXCDI3jHPssRhc8KD/Ome589sc3U= honnef.co/go/tools v0.0.1-2020.1.3/go.mod h1:X/FiERA/W4tHapMX5mGpAtMSVEeEUOyHaw9vFzvIQ3k= -k8s.io/api v0.0.0-20190708174958-539a33f6e817 h1:V6YPTc5fSnwv7EBjx6es9VyAki/6bqK4M3ECA6WwfBk= -k8s.io/api v0.0.0-20190708174958-539a33f6e817/go.mod h1:iuAfoD4hCxJ8Onx9kaTIt30j7jUFS00AXQi6QMi99vA= -k8s.io/apiextensions-apiserver v0.0.0-20190708181606-527eacf2d4b7 h1:iAZwiJOjeCxGicPs5bDPLNP9DVZHCQp91gKIeLBIKlk= -k8s.io/apiextensions-apiserver v0.0.0-20190708181606-527eacf2d4b7/go.mod h1:IxkesAMoaCRoLrPJdZNZUQp9NfZnzqaVzLhb2VEQzXE= -k8s.io/apimachinery v0.0.0-20190404173353-6a84e37a896d h1:Jmdtdt1ZnoGfWWIIik61Z7nKYgO3J+swQJtPYsP9wHA= -k8s.io/apimachinery v0.0.0-20190404173353-6a84e37a896d/go.mod h1:ccL7Eh7zubPUSh9A3USN90/OzHNSVN6zxzde07TDCL0= -k8s.io/client-go v11.0.1-0.20190708175433-62e1c231c5dc+incompatible h1:mgGP6MavlibbFi6hsTgBNV3wIirs8KItSR0R1JVv8UI= -k8s.io/client-go v11.0.1-0.20190708175433-62e1c231c5dc+incompatible/go.mod h1:7vJpHMYJwNQCWgzmNV+VYUl1zCObLyodBc8nIyt8L5s= +k8s.io/api v0.18.3 h1:2AJaUQdgUZLoDZHrun21PW2Nx9+ll6cUzvn3IKhSIn0= +k8s.io/api v0.18.3/go.mod h1:UOaMwERbqJMfeeeHc8XJKawj4P9TgDRnViIqqBeH2QA= +k8s.io/apiextensions-apiserver v0.18.3 h1:h6oZO+iAgg0HjxmuNnguNdKNB9+wv3O1EBDdDWJViQ0= +k8s.io/apiextensions-apiserver v0.18.3/go.mod h1:TMsNGs7DYpMXd+8MOCX8KzPOCx8fnZMoIGB24m03+JE= +k8s.io/apimachinery v0.18.3 h1:pOGcbVAhxADgUYnjS08EFXs9QMl8qaH5U4fr5LGUrSk= +k8s.io/apimachinery v0.18.3/go.mod h1:OaXp26zu/5J7p0f92ASynJa1pZo06YlV9fG7BoWbCko= +k8s.io/apiserver v0.18.3/go.mod h1:tHQRmthRPLUtwqsOnJJMoI8SW3lnoReZeE861lH8vUw= +k8s.io/client-go v0.18.3 h1:QaJzz92tsN67oorwzmoB0a9r9ZVHuD5ryjbCKP0U22k= +k8s.io/client-go v0.18.3/go.mod h1:4a/dpQEvzAhT1BbuWW09qvIaGw6Gbu1gZYiQZIi1DMw= +k8s.io/code-generator v0.18.3/go.mod h1:TgNEVx9hCyPGpdtCWA34olQYLkh3ok9ar7XfSsr8b6c= +k8s.io/component-base v0.18.3/go.mod h1:bp5GzGR0aGkYEfTj+eTY0AN/vXTgkJdQXjNTTVUaa3k= +k8s.io/gengo v0.0.0-20190128074634-0689ccc1d7d6/go.mod h1:ezvh/TsK7cY6rbqRK0oQQ8IAqLxYwwyPxAX1Pzy0ii0= +k8s.io/gengo v0.0.0-20200114144118-36b2048a9120/go.mod h1:ezvh/TsK7cY6rbqRK0oQQ8IAqLxYwwyPxAX1Pzy0ii0= +k8s.io/klog v0.0.0-20181102134211-b9b56d5dfc92/go.mod h1:Gq+BEi5rUBO/HRz0bTSXDUcqjScdoY3a9IHpCEIOOfk= k8s.io/klog v0.3.0 h1:0VPpR+sizsiivjIfIAQH/rl8tan6jvWkS7lU+0di3lE= k8s.io/klog v0.3.0/go.mod h1:Gq+BEi5rUBO/HRz0bTSXDUcqjScdoY3a9IHpCEIOOfk= -k8s.io/kube-openapi v0.0.0-20190208205540-d7c86cdc46e3 h1:exy9uNfm+xG+9rQsfPhmJQt+l/Pufd86hB9T/QrHeR4= -k8s.io/kube-openapi v0.0.0-20190208205540-d7c86cdc46e3/go.mod h1:BXM9ceUBTj2QnfH2MK1odQs778ajze1RxcmP6S8RVVc= -k8s.io/utils v0.0.0-20190221042446-c2654d5206da h1:ElyM7RPonbKnQqOcw7dG2IK5uvQQn3b/WPHqD5mBvP4= -k8s.io/utils v0.0.0-20190221042446-c2654d5206da/go.mod h1:8k8uAuAQ0rXslZKaEWd0c3oVhZz7sSzSiPnVZayjIX0= +k8s.io/klog v1.0.0 h1:Pt+yjF5aB1xDSVbau4VsWe+dQNzA0qv1LlXdC2dF6Q8= +k8s.io/klog v1.0.0/go.mod h1:4Bi6QPql/J/LkTDqv7R/cd3hPo4k2DG6Ptcz060Ez5I= +k8s.io/kube-openapi v0.0.0-20200410145947-61e04a5be9a6 h1:Oh3Mzx5pJ+yIumsAD0MOECPVeXsVot0UkiaCGVyfGQY= +k8s.io/kube-openapi v0.0.0-20200410145947-61e04a5be9a6/go.mod h1:GRQhZsXIAJ1xR0C9bd8UpWHZ5plfAS9fzPjJuQ6JL3E= +k8s.io/utils v0.0.0-20200324210504-a9aa75ae1b89 h1:d4vVOjXm687F1iLSP2q3lyPPuyvTUt3aVoBpi2DqRsU= +k8s.io/utils v0.0.0-20200324210504-a9aa75ae1b89/go.mod h1:sZAwmy6armz5eXlNoLmJcl4F1QuKu7sr+mFQ0byX7Ew= pack.ag/amqp v0.11.2/go.mod h1:4/cbmt4EJXSKlG6LCfWHoqmN0uFdy5i/+YFz+fTfhV4= rsc.io/binaryregexp v0.2.0/go.mod h1:qTv7/COck+e2FymRvadv62gMdZztPaShugOCi3I+8D8= rsc.io/pdf v0.1.1/go.mod h1:n8OzWcQ6Sp37PL01nO98y4iUCRdTGarVfzxY20ICaU4= rsc.io/quote/v3 v3.1.0/go.mod h1:yEA65RcK8LyAZtP9Kv3t0HmxON59tX3rD+tICJqUlj0= rsc.io/sampler v1.3.0/go.mod h1:T1hPZKmBbMNahiBKFy5HrXp6adAjACjK9JXDnKaTXpA= +sigs.k8s.io/apiserver-network-proxy/konnectivity-client v0.0.7 h1:uuHDyjllyzRyCIvvn0OBjiRB0SgBZGqHNYAmjR7fO50= +sigs.k8s.io/apiserver-network-proxy/konnectivity-client v0.0.7/go.mod h1:PHgbrJT7lCHcxMU+mDHEm+nx46H4zuuHZkDP6icnhu0= +sigs.k8s.io/structured-merge-diff/v3 v3.0.0-20200116222232-67a7b8c61874/go.mod h1:PlARxl6Hbt/+BC80dRLi1qAmnMqwqDg62YvvVkZjemw= +sigs.k8s.io/structured-merge-diff/v3 v3.0.0 h1:dOmIZBMfhcHS09XZkMyUgkq5trg3/jRyJYFZUiaOp8E= +sigs.k8s.io/structured-merge-diff/v3 v3.0.0/go.mod h1:PlARxl6Hbt/+BC80dRLi1qAmnMqwqDg62YvvVkZjemw= sigs.k8s.io/yaml v1.1.0 h1:4A07+ZFc2wgJwo8YNlQpr1rVlgUDlxXHhPJciaPY5gs= sigs.k8s.io/yaml v1.1.0/go.mod h1:UJmg0vDUVViEyp3mgSv9WPwZCDxu4rQW1olrI1uml+o= +sigs.k8s.io/yaml v1.2.0 h1:kr/MCeFWJWTwyaHoR9c8EjH9OumOmoF9YGiZd7lFm/Q= +sigs.k8s.io/yaml v1.2.0/go.mod h1:yfXDCHCao9+ENCvLSE62v9VSji2MKu5jeNfTrofGhJc= diff --git a/pkg/apis/cr/v1alpha1/zz_generated.deepcopy.go b/pkg/apis/cr/v1alpha1/zz_generated.deepcopy.go index 8f95a2532ee..f2cb30dae8d 100644 --- a/pkg/apis/cr/v1alpha1/zz_generated.deepcopy.go +++ b/pkg/apis/cr/v1alpha1/zz_generated.deepcopy.go @@ -64,7 +64,7 @@ func (in *ActionSet) DeepCopyObject() runtime.Object { func (in *ActionSetList) DeepCopyInto(out *ActionSetList) { *out = *in out.TypeMeta = in.TypeMeta - out.ListMeta = in.ListMeta + in.ListMeta.DeepCopyInto(&out.ListMeta) if in.Items != nil { in, out := &in.Items, &out.Items *out = make([]*ActionSet, len(*in)) @@ -339,7 +339,7 @@ func (in *BlueprintAction) DeepCopy() *BlueprintAction { func (in *BlueprintList) DeepCopyInto(out *BlueprintList) { *out = *in out.TypeMeta = in.TypeMeta - out.ListMeta = in.ListMeta + in.ListMeta.DeepCopyInto(&out.ListMeta) if in.Items != nil { in, out := &in.Items, &out.Items *out = make([]*Blueprint, len(*in)) @@ -525,7 +525,7 @@ func (in *Profile) DeepCopyObject() runtime.Object { func (in *ProfileList) DeepCopyInto(out *ProfileList) { *out = *in out.TypeMeta = in.TypeMeta - out.ListMeta = in.ListMeta + in.ListMeta.DeepCopyInto(&out.ListMeta) if in.Items != nil { in, out := &in.Items, &out.Items *out = make([]*Profile, len(*in)) diff --git a/pkg/app/couchbase.go b/pkg/app/couchbase.go index 9bde4d04699..ced1b6841e9 100644 --- a/pkg/app/couchbase.go +++ b/pkg/app/couchbase.go @@ -124,7 +124,7 @@ func (cb *CouchbaseDB) IsReady(ctx context.Context) (bool, error) { } // Read cluster creds from Secret - secret, err := cb.cli.CoreV1().Secrets(cb.namespace).Get(fmt.Sprintf("%s-couchbase-cluster", cb.clusterChart.Release), metav1.GetOptions{}) + secret, err := cb.cli.CoreV1().Secrets(cb.namespace).Get(ctx, fmt.Sprintf("%s-couchbase-cluster", cb.clusterChart.Release), metav1.GetOptions{}) if err != nil { return false, err } @@ -275,7 +275,7 @@ func (cb CouchbaseDB) execCommand(ctx context.Context, command []string) (string // getRunningCBPod name of running couchbase cluster pod if its in ready state func (cb CouchbaseDB) getRunningCBPod() (string, error) { podName := fmt.Sprintf("%s-couchbase-cluster-0000", cb.clusterChart.Release) - pod, err := cb.cli.CoreV1().Pods(cb.namespace).Get(podName, metav1.GetOptions{}) + pod, err := cb.cli.CoreV1().Pods(cb.namespace).Get(context.TODO(), podName, metav1.GetOptions{}) if err != nil { return "", err } diff --git a/pkg/app/foundationdb.go b/pkg/app/foundationdb.go index 5c47dba16cb..5e93057c779 100644 --- a/pkg/app/foundationdb.go +++ b/pkg/app/foundationdb.go @@ -153,7 +153,7 @@ func (fdb *FoundationDB) getRunningFDBPod() (string, error) { // Format of the name of the pods that get generated is // helmReleaseName-sample-index podName := fmt.Sprintf("%s-%s", fdb.fdbReleaseName, podNameSuffix) - pod, err := fdb.cli.CoreV1().Pods(fdb.namespace).Get(podName, metav1.GetOptions{}) + pod, err := fdb.cli.CoreV1().Pods(fdb.namespace).Get(context.TODO(), podName, metav1.GetOptions{}) if err != nil { return "", err } diff --git a/pkg/app/postgresql-deploymentconfig.go b/pkg/app/postgresql-deploymentconfig.go index 1dd15f73e77..1ae093645f2 100644 --- a/pkg/app/postgresql-deploymentconfig.go +++ b/pkg/app/postgresql-deploymentconfig.go @@ -105,7 +105,7 @@ func (pgres *PostgreSQLDepConfig) createPostgreSQLSecret(ctx context.Context) er }, } - _, err := pgres.cli.CoreV1().Secrets(pgres.namespace).Create(postgreSQLSecret) + _, err := pgres.cli.CoreV1().Secrets(pgres.namespace).Create(ctx, postgreSQLSecret, metav1.CreateOptions{}) return errors.Wrapf(err, "Error creating secret for mysqldepconf app.") } diff --git a/pkg/app/rds_postgres.go b/pkg/app/rds_postgres.go index 42a54858af9..37fac2acf0b 100644 --- a/pkg/app/rds_postgres.go +++ b/pkg/app/rds_postgres.go @@ -26,7 +26,7 @@ import ( awsrds "github.com/aws/aws-sdk-go/service/rds" "github.com/ghodss/yaml" "github.com/pkg/errors" - "k8s.io/api/core/v1" + v1 "k8s.io/api/core/v1" metav1 "k8s.io/apimachinery/pkg/apis/meta/v1" "k8s.io/client-go/kubernetes" @@ -179,7 +179,7 @@ func (pdb *RDSPostgresDB) Install(ctx context.Context, ns string) error { "postgres.secret": "dbsecret", }, } - _, err = pdb.cli.CoreV1().ConfigMaps(ns).Create(dbconfig) + _, err = pdb.cli.CoreV1().ConfigMaps(ns).Create(ctx, dbconfig, metav1.CreateOptions{}) if err != nil { return err } @@ -201,7 +201,7 @@ func (pdb *RDSPostgresDB) Install(ctx context.Context, ns string) error { "aws_region": pdb.region, }, } - _, err = pdb.cli.CoreV1().Secrets(ns).Create(dbsecret) + _, err = pdb.cli.CoreV1().Secrets(ns).Create(ctx, dbsecret, metav1.CreateOptions{}) if err != nil { return err } @@ -224,13 +224,13 @@ func (pdb *RDSPostgresDB) Object() crv1alpha1.ObjectReference { // Ping makes and tests DB connection func (pdb *RDSPostgresDB) Ping(ctx context.Context) error { // Get connection info from configmap - dbconfig, err := pdb.cli.CoreV1().ConfigMaps(pdb.namespace).Get("dbconfig", metav1.GetOptions{}) + dbconfig, err := pdb.cli.CoreV1().ConfigMaps(pdb.namespace).Get(ctx, "dbconfig", metav1.GetOptions{}) if err != nil { return err } // Get secret creds - dbsecret, err := pdb.cli.CoreV1().Secrets(pdb.namespace).Get("dbsecret", metav1.GetOptions{}) + dbsecret, err := pdb.cli.CoreV1().Secrets(pdb.namespace).Get(ctx, "dbsecret", metav1.GetOptions{}) if err != nil { return err } diff --git a/pkg/blockstorage/ibm/client.go b/pkg/blockstorage/ibm/client.go index 5f8f40bb338..2674db1aa1f 100644 --- a/pkg/blockstorage/ibm/client.go +++ b/pkg/blockstorage/ibm/client.go @@ -169,7 +169,7 @@ func getDefIBMStoreSecret(ctx context.Context, args map[string]string) (*ibmcfg. secretNS = sns } - storeSecret, err := k8scli.CoreV1().Secrets(secretNS).Get(secretNam, metav1.GetOptions{}) + storeSecret, err := k8scli.CoreV1().Secrets(secretNS).Get(ctx, secretNam, metav1.GetOptions{}) if err != nil { return nil, errors.Wrap(err, "Failed to read Default IBM storage secret.") } diff --git a/pkg/blockstorage/ibm/client_kube_test.go b/pkg/blockstorage/ibm/client_kube_test.go index 9c5cdcacb7c..4dbc21f93ca 100644 --- a/pkg/blockstorage/ibm/client_kube_test.go +++ b/pkg/blockstorage/ibm/client_kube_test.go @@ -64,7 +64,7 @@ func (s *KubeTestIBMClient) SetUpSuite(c *C) { Type: v1.SecretTypeOpaque, Data: secretData, } - s.k8sSec, err = s.k8scli.CoreV1().Secrets(IBMK8sSecretNS).Create(&k8sSec) + s.k8sSec, err = s.k8scli.CoreV1().Secrets(IBMK8sSecretNS).Create(context.TODO(), &k8sSec, metav1.CreateOptions{}) c.Assert(err, IsNil) } @@ -72,7 +72,7 @@ func (s KubeTestIBMClient) TearDownSuite(c *C) { if _, ok := os.LookupEnv(workAroundEnv); !ok { c.Skip(workAroundEnv + "TOML path is not present") } - err := s.k8scli.CoreV1().Secrets(s.k8sSec.Namespace).Delete(s.k8sSec.Name, &metav1.DeleteOptions{}) + err := s.k8scli.CoreV1().Secrets(s.k8sSec.Namespace).Delete(context.TODO(), s.k8sSec.Name, metav1.DeleteOptions{}) c.Assert(err, IsNil) } @@ -110,9 +110,9 @@ func (s KubeTestIBMClient) TestIBMOldSecret(c *C) { Type: v1.SecretTypeOpaque, Data: secretData, } - s.k8sSec, err = s.k8scli.CoreV1().Secrets(IBMK8sSecretNS).Create(&k8sSec) + s.k8sSec, err = s.k8scli.CoreV1().Secrets(IBMK8sSecretNS).Create(context.TODO(), &k8sSec, metav1.CreateOptions{}) defer func() { - _ = s.k8scli.CoreV1().Secrets(IBMK8sSecretNS).Delete(testOldSecretName, &metav1.DeleteOptions{}) + _ = s.k8scli.CoreV1().Secrets(IBMK8sSecretNS).Delete(context.TODO(), testOldSecretName, metav1.DeleteOptions{}) }() c.Assert(err, IsNil) slAPIKey, ok := os.LookupEnv(IBMSLApiKeyEnv) @@ -127,7 +127,7 @@ func (s KubeTestIBMClient) TestIBMOldSecret(c *C) { c.Assert(ibmCli.Service, NotNil) defer ibmCli.Service.Close() defer func() { - _ = s.k8scli.CoreV1().Secrets(IBMK8sSecretNS).Delete(testOldSecretName, &metav1.DeleteOptions{}) + _ = s.k8scli.CoreV1().Secrets(IBMK8sSecretNS).Delete(context.TODO(), testOldSecretName, metav1.DeleteOptions{}) }() c.Assert(*ibmCli, FitsTypeOf, client{}) _, err = ibmCli.Service.ListSnapshots() diff --git a/pkg/blockstorage/ibm/utils/ibmcloud_utils.go b/pkg/blockstorage/ibm/utils/ibmcloud_utils.go index a12c27d7121..86169470052 100644 --- a/pkg/blockstorage/ibm/utils/ibmcloud_utils.go +++ b/pkg/blockstorage/ibm/utils/ibmcloud_utils.go @@ -21,7 +21,7 @@ import ( ibmprov "github.com/IBM/ibmcloud-storage-volume-lib/lib/provider" "github.com/pkg/errors" - "k8s.io/api/core/v1" + v1 "k8s.io/api/core/v1" metav1 "k8s.io/apimachinery/pkg/apis/meta/v1" "github.com/kanisterio/kanister/pkg/kube" @@ -34,7 +34,7 @@ func AuthorizeSoftLayerFileHosts(ctx context.Context, vol *ibmprov.Volume, slCli return errors.Wrap(err, "Failed to created k8s client.") } - nodes, err := k8scli.CoreV1().Nodes().List(metav1.ListOptions{}) + nodes, err := k8scli.CoreV1().Nodes().List(ctx, metav1.ListOptions{}) if err != nil { return errors.Wrap(err, "Failed to list nodes") } diff --git a/pkg/blockstorage/zone/zone.go b/pkg/blockstorage/zone/zone.go index c3e4c4efb4e..894ac1ebfd1 100644 --- a/pkg/blockstorage/zone/zone.go +++ b/pkg/blockstorage/zone/zone.go @@ -21,7 +21,7 @@ import ( "strings" "github.com/pkg/errors" - "k8s.io/api/core/v1" + v1 "k8s.io/api/core/v1" metav1 "k8s.io/apimachinery/pkg/apis/meta/v1" "k8s.io/client-go/kubernetes" @@ -195,7 +195,7 @@ func NodeZonesAndRegion(ctx context.Context, cli kubernetes.Interface) (map[stri // Derived from "k8s.io/kubernetes/test/e2e/framework/node" // TODO: check for taints as well func GetReadySchedulableNodes(cli kubernetes.Interface) ([]v1.Node, error) { - ns, err := cli.CoreV1().Nodes().List(metav1.ListOptions{}) + ns, err := cli.CoreV1().Nodes().List(context.TODO(), metav1.ListOptions{}) if err != nil { return nil, err } diff --git a/pkg/client/clientset/versioned/clientset.go b/pkg/client/clientset/versioned/clientset.go index 2afe3034df6..900e401826f 100644 --- a/pkg/client/clientset/versioned/clientset.go +++ b/pkg/client/clientset/versioned/clientset.go @@ -19,6 +19,8 @@ limitations under the License. package versioned import ( + "fmt" + crv1alpha1 "github.com/kanisterio/kanister/pkg/client/clientset/versioned/typed/cr/v1alpha1" discovery "k8s.io/client-go/discovery" rest "k8s.io/client-go/rest" @@ -51,9 +53,14 @@ func (c *Clientset) Discovery() discovery.DiscoveryInterface { } // NewForConfig creates a new Clientset for the given config. +// If config's RateLimiter is not set and QPS and Burst are acceptable, +// NewForConfig will generate a rate-limiter in configShallowCopy. func NewForConfig(c *rest.Config) (*Clientset, error) { configShallowCopy := *c if configShallowCopy.RateLimiter == nil && configShallowCopy.QPS > 0 { + if configShallowCopy.Burst <= 0 { + return nil, fmt.Errorf("burst is required to be greater than 0 when RateLimiter is not set and QPS is set to greater than 0") + } configShallowCopy.RateLimiter = flowcontrol.NewTokenBucketRateLimiter(configShallowCopy.QPS, configShallowCopy.Burst) } var cs Clientset diff --git a/pkg/client/clientset/versioned/fake/clientset_generated.go b/pkg/client/clientset/versioned/fake/clientset_generated.go index fe57e0c1eca..05adfe5f388 100644 --- a/pkg/client/clientset/versioned/fake/clientset_generated.go +++ b/pkg/client/clientset/versioned/fake/clientset_generated.go @@ -41,7 +41,7 @@ func NewSimpleClientset(objects ...runtime.Object) *Clientset { } } - cs := &Clientset{} + cs := &Clientset{tracker: o} cs.discovery = &fakediscovery.FakeDiscovery{Fake: &cs.Fake} cs.AddReactor("*", "*", testing.ObjectReaction(o)) cs.AddWatchReactor("*", func(action testing.Action) (handled bool, ret watch.Interface, err error) { @@ -63,12 +63,17 @@ func NewSimpleClientset(objects ...runtime.Object) *Clientset { type Clientset struct { testing.Fake discovery *fakediscovery.FakeDiscovery + tracker testing.ObjectTracker } func (c *Clientset) Discovery() discovery.DiscoveryInterface { return c.discovery } +func (c *Clientset) Tracker() testing.ObjectTracker { + return c.tracker +} + var _ clientset.Interface = &Clientset{} // CrV1alpha1 retrieves the CrV1alpha1Client diff --git a/pkg/client/clientset/versioned/typed/cr/v1alpha1/actionset.go b/pkg/client/clientset/versioned/typed/cr/v1alpha1/actionset.go index 36210de0cb7..321cd65cb12 100644 --- a/pkg/client/clientset/versioned/typed/cr/v1alpha1/actionset.go +++ b/pkg/client/clientset/versioned/typed/cr/v1alpha1/actionset.go @@ -19,6 +19,7 @@ limitations under the License. package v1alpha1 import ( + "context" "time" v1alpha1 "github.com/kanisterio/kanister/pkg/apis/cr/v1alpha1" @@ -37,14 +38,14 @@ type ActionSetsGetter interface { // ActionSetInterface has methods to work with ActionSet resources. type ActionSetInterface interface { - Create(*v1alpha1.ActionSet) (*v1alpha1.ActionSet, error) - Update(*v1alpha1.ActionSet) (*v1alpha1.ActionSet, error) - Delete(name string, options *v1.DeleteOptions) error - DeleteCollection(options *v1.DeleteOptions, listOptions v1.ListOptions) error - Get(name string, options v1.GetOptions) (*v1alpha1.ActionSet, error) - List(opts v1.ListOptions) (*v1alpha1.ActionSetList, error) - Watch(opts v1.ListOptions) (watch.Interface, error) - Patch(name string, pt types.PatchType, data []byte, subresources ...string) (result *v1alpha1.ActionSet, err error) + Create(ctx context.Context, actionSet *v1alpha1.ActionSet, opts v1.CreateOptions) (*v1alpha1.ActionSet, error) + Update(ctx context.Context, actionSet *v1alpha1.ActionSet, opts v1.UpdateOptions) (*v1alpha1.ActionSet, error) + Delete(ctx context.Context, name string, opts v1.DeleteOptions) error + DeleteCollection(ctx context.Context, opts v1.DeleteOptions, listOpts v1.ListOptions) error + Get(ctx context.Context, name string, opts v1.GetOptions) (*v1alpha1.ActionSet, error) + List(ctx context.Context, opts v1.ListOptions) (*v1alpha1.ActionSetList, error) + Watch(ctx context.Context, opts v1.ListOptions) (watch.Interface, error) + Patch(ctx context.Context, name string, pt types.PatchType, data []byte, opts v1.PatchOptions, subresources ...string) (result *v1alpha1.ActionSet, err error) ActionSetExpansion } @@ -63,20 +64,20 @@ func newActionSets(c *CrV1alpha1Client, namespace string) *actionSets { } // Get takes name of the actionSet, and returns the corresponding actionSet object, and an error if there is any. -func (c *actionSets) Get(name string, options v1.GetOptions) (result *v1alpha1.ActionSet, err error) { +func (c *actionSets) Get(ctx context.Context, name string, options v1.GetOptions) (result *v1alpha1.ActionSet, err error) { result = &v1alpha1.ActionSet{} err = c.client.Get(). Namespace(c.ns). Resource("actionsets"). Name(name). VersionedParams(&options, scheme.ParameterCodec). - Do(). + Do(ctx). Into(result) return } // List takes label and field selectors, and returns the list of ActionSets that match those selectors. -func (c *actionSets) List(opts v1.ListOptions) (result *v1alpha1.ActionSetList, err error) { +func (c *actionSets) List(ctx context.Context, opts v1.ListOptions) (result *v1alpha1.ActionSetList, err error) { var timeout time.Duration if opts.TimeoutSeconds != nil { timeout = time.Duration(*opts.TimeoutSeconds) * time.Second @@ -87,13 +88,13 @@ func (c *actionSets) List(opts v1.ListOptions) (result *v1alpha1.ActionSetList, Resource("actionsets"). VersionedParams(&opts, scheme.ParameterCodec). Timeout(timeout). - Do(). + Do(ctx). Into(result) return } // Watch returns a watch.Interface that watches the requested actionSets. -func (c *actionSets) Watch(opts v1.ListOptions) (watch.Interface, error) { +func (c *actionSets) Watch(ctx context.Context, opts v1.ListOptions) (watch.Interface, error) { var timeout time.Duration if opts.TimeoutSeconds != nil { timeout = time.Duration(*opts.TimeoutSeconds) * time.Second @@ -104,71 +105,74 @@ func (c *actionSets) Watch(opts v1.ListOptions) (watch.Interface, error) { Resource("actionsets"). VersionedParams(&opts, scheme.ParameterCodec). Timeout(timeout). - Watch() + Watch(ctx) } // Create takes the representation of a actionSet and creates it. Returns the server's representation of the actionSet, and an error, if there is any. -func (c *actionSets) Create(actionSet *v1alpha1.ActionSet) (result *v1alpha1.ActionSet, err error) { +func (c *actionSets) Create(ctx context.Context, actionSet *v1alpha1.ActionSet, opts v1.CreateOptions) (result *v1alpha1.ActionSet, err error) { result = &v1alpha1.ActionSet{} err = c.client.Post(). Namespace(c.ns). Resource("actionsets"). + VersionedParams(&opts, scheme.ParameterCodec). Body(actionSet). - Do(). + Do(ctx). Into(result) return } // Update takes the representation of a actionSet and updates it. Returns the server's representation of the actionSet, and an error, if there is any. -func (c *actionSets) Update(actionSet *v1alpha1.ActionSet) (result *v1alpha1.ActionSet, err error) { +func (c *actionSets) Update(ctx context.Context, actionSet *v1alpha1.ActionSet, opts v1.UpdateOptions) (result *v1alpha1.ActionSet, err error) { result = &v1alpha1.ActionSet{} err = c.client.Put(). Namespace(c.ns). Resource("actionsets"). Name(actionSet.Name). + VersionedParams(&opts, scheme.ParameterCodec). Body(actionSet). - Do(). + Do(ctx). Into(result) return } // Delete takes name of the actionSet and deletes it. Returns an error if one occurs. -func (c *actionSets) Delete(name string, options *v1.DeleteOptions) error { +func (c *actionSets) Delete(ctx context.Context, name string, opts v1.DeleteOptions) error { return c.client.Delete(). Namespace(c.ns). Resource("actionsets"). Name(name). - Body(options). - Do(). + Body(&opts). + Do(ctx). Error() } // DeleteCollection deletes a collection of objects. -func (c *actionSets) DeleteCollection(options *v1.DeleteOptions, listOptions v1.ListOptions) error { +func (c *actionSets) DeleteCollection(ctx context.Context, opts v1.DeleteOptions, listOpts v1.ListOptions) error { var timeout time.Duration - if listOptions.TimeoutSeconds != nil { - timeout = time.Duration(*listOptions.TimeoutSeconds) * time.Second + if listOpts.TimeoutSeconds != nil { + timeout = time.Duration(*listOpts.TimeoutSeconds) * time.Second } return c.client.Delete(). Namespace(c.ns). Resource("actionsets"). - VersionedParams(&listOptions, scheme.ParameterCodec). + VersionedParams(&listOpts, scheme.ParameterCodec). Timeout(timeout). - Body(options). - Do(). + Body(&opts). + Do(ctx). Error() } // Patch applies the patch and returns the patched actionSet. -func (c *actionSets) Patch(name string, pt types.PatchType, data []byte, subresources ...string) (result *v1alpha1.ActionSet, err error) { +func (c *actionSets) Patch(ctx context.Context, name string, pt types.PatchType, data []byte, opts v1.PatchOptions, subresources ...string) (result *v1alpha1.ActionSet, err error) { result = &v1alpha1.ActionSet{} err = c.client.Patch(pt). Namespace(c.ns). Resource("actionsets"). - SubResource(subresources...). Name(name). + SubResource(subresources...). + VersionedParams(&opts, scheme.ParameterCodec). Body(data). - Do(). + Do(ctx). Into(result) return } diff --git a/pkg/client/clientset/versioned/typed/cr/v1alpha1/blueprint.go b/pkg/client/clientset/versioned/typed/cr/v1alpha1/blueprint.go index edef88d9c09..871ba981336 100644 --- a/pkg/client/clientset/versioned/typed/cr/v1alpha1/blueprint.go +++ b/pkg/client/clientset/versioned/typed/cr/v1alpha1/blueprint.go @@ -19,6 +19,7 @@ limitations under the License. package v1alpha1 import ( + "context" "time" v1alpha1 "github.com/kanisterio/kanister/pkg/apis/cr/v1alpha1" @@ -37,14 +38,14 @@ type BlueprintsGetter interface { // BlueprintInterface has methods to work with Blueprint resources. type BlueprintInterface interface { - Create(*v1alpha1.Blueprint) (*v1alpha1.Blueprint, error) - Update(*v1alpha1.Blueprint) (*v1alpha1.Blueprint, error) - Delete(name string, options *v1.DeleteOptions) error - DeleteCollection(options *v1.DeleteOptions, listOptions v1.ListOptions) error - Get(name string, options v1.GetOptions) (*v1alpha1.Blueprint, error) - List(opts v1.ListOptions) (*v1alpha1.BlueprintList, error) - Watch(opts v1.ListOptions) (watch.Interface, error) - Patch(name string, pt types.PatchType, data []byte, subresources ...string) (result *v1alpha1.Blueprint, err error) + Create(ctx context.Context, blueprint *v1alpha1.Blueprint, opts v1.CreateOptions) (*v1alpha1.Blueprint, error) + Update(ctx context.Context, blueprint *v1alpha1.Blueprint, opts v1.UpdateOptions) (*v1alpha1.Blueprint, error) + Delete(ctx context.Context, name string, opts v1.DeleteOptions) error + DeleteCollection(ctx context.Context, opts v1.DeleteOptions, listOpts v1.ListOptions) error + Get(ctx context.Context, name string, opts v1.GetOptions) (*v1alpha1.Blueprint, error) + List(ctx context.Context, opts v1.ListOptions) (*v1alpha1.BlueprintList, error) + Watch(ctx context.Context, opts v1.ListOptions) (watch.Interface, error) + Patch(ctx context.Context, name string, pt types.PatchType, data []byte, opts v1.PatchOptions, subresources ...string) (result *v1alpha1.Blueprint, err error) BlueprintExpansion } @@ -63,20 +64,20 @@ func newBlueprints(c *CrV1alpha1Client, namespace string) *blueprints { } // Get takes name of the blueprint, and returns the corresponding blueprint object, and an error if there is any. -func (c *blueprints) Get(name string, options v1.GetOptions) (result *v1alpha1.Blueprint, err error) { +func (c *blueprints) Get(ctx context.Context, name string, options v1.GetOptions) (result *v1alpha1.Blueprint, err error) { result = &v1alpha1.Blueprint{} err = c.client.Get(). Namespace(c.ns). Resource("blueprints"). Name(name). VersionedParams(&options, scheme.ParameterCodec). - Do(). + Do(ctx). Into(result) return } // List takes label and field selectors, and returns the list of Blueprints that match those selectors. -func (c *blueprints) List(opts v1.ListOptions) (result *v1alpha1.BlueprintList, err error) { +func (c *blueprints) List(ctx context.Context, opts v1.ListOptions) (result *v1alpha1.BlueprintList, err error) { var timeout time.Duration if opts.TimeoutSeconds != nil { timeout = time.Duration(*opts.TimeoutSeconds) * time.Second @@ -87,13 +88,13 @@ func (c *blueprints) List(opts v1.ListOptions) (result *v1alpha1.BlueprintList, Resource("blueprints"). VersionedParams(&opts, scheme.ParameterCodec). Timeout(timeout). - Do(). + Do(ctx). Into(result) return } // Watch returns a watch.Interface that watches the requested blueprints. -func (c *blueprints) Watch(opts v1.ListOptions) (watch.Interface, error) { +func (c *blueprints) Watch(ctx context.Context, opts v1.ListOptions) (watch.Interface, error) { var timeout time.Duration if opts.TimeoutSeconds != nil { timeout = time.Duration(*opts.TimeoutSeconds) * time.Second @@ -104,71 +105,74 @@ func (c *blueprints) Watch(opts v1.ListOptions) (watch.Interface, error) { Resource("blueprints"). VersionedParams(&opts, scheme.ParameterCodec). Timeout(timeout). - Watch() + Watch(ctx) } // Create takes the representation of a blueprint and creates it. Returns the server's representation of the blueprint, and an error, if there is any. -func (c *blueprints) Create(blueprint *v1alpha1.Blueprint) (result *v1alpha1.Blueprint, err error) { +func (c *blueprints) Create(ctx context.Context, blueprint *v1alpha1.Blueprint, opts v1.CreateOptions) (result *v1alpha1.Blueprint, err error) { result = &v1alpha1.Blueprint{} err = c.client.Post(). Namespace(c.ns). Resource("blueprints"). + VersionedParams(&opts, scheme.ParameterCodec). Body(blueprint). - Do(). + Do(ctx). Into(result) return } // Update takes the representation of a blueprint and updates it. Returns the server's representation of the blueprint, and an error, if there is any. -func (c *blueprints) Update(blueprint *v1alpha1.Blueprint) (result *v1alpha1.Blueprint, err error) { +func (c *blueprints) Update(ctx context.Context, blueprint *v1alpha1.Blueprint, opts v1.UpdateOptions) (result *v1alpha1.Blueprint, err error) { result = &v1alpha1.Blueprint{} err = c.client.Put(). Namespace(c.ns). Resource("blueprints"). Name(blueprint.Name). + VersionedParams(&opts, scheme.ParameterCodec). Body(blueprint). - Do(). + Do(ctx). Into(result) return } // Delete takes name of the blueprint and deletes it. Returns an error if one occurs. -func (c *blueprints) Delete(name string, options *v1.DeleteOptions) error { +func (c *blueprints) Delete(ctx context.Context, name string, opts v1.DeleteOptions) error { return c.client.Delete(). Namespace(c.ns). Resource("blueprints"). Name(name). - Body(options). - Do(). + Body(&opts). + Do(ctx). Error() } // DeleteCollection deletes a collection of objects. -func (c *blueprints) DeleteCollection(options *v1.DeleteOptions, listOptions v1.ListOptions) error { +func (c *blueprints) DeleteCollection(ctx context.Context, opts v1.DeleteOptions, listOpts v1.ListOptions) error { var timeout time.Duration - if listOptions.TimeoutSeconds != nil { - timeout = time.Duration(*listOptions.TimeoutSeconds) * time.Second + if listOpts.TimeoutSeconds != nil { + timeout = time.Duration(*listOpts.TimeoutSeconds) * time.Second } return c.client.Delete(). Namespace(c.ns). Resource("blueprints"). - VersionedParams(&listOptions, scheme.ParameterCodec). + VersionedParams(&listOpts, scheme.ParameterCodec). Timeout(timeout). - Body(options). - Do(). + Body(&opts). + Do(ctx). Error() } // Patch applies the patch and returns the patched blueprint. -func (c *blueprints) Patch(name string, pt types.PatchType, data []byte, subresources ...string) (result *v1alpha1.Blueprint, err error) { +func (c *blueprints) Patch(ctx context.Context, name string, pt types.PatchType, data []byte, opts v1.PatchOptions, subresources ...string) (result *v1alpha1.Blueprint, err error) { result = &v1alpha1.Blueprint{} err = c.client.Patch(pt). Namespace(c.ns). Resource("blueprints"). - SubResource(subresources...). Name(name). + SubResource(subresources...). + VersionedParams(&opts, scheme.ParameterCodec). Body(data). - Do(). + Do(ctx). Into(result) return } diff --git a/pkg/client/clientset/versioned/typed/cr/v1alpha1/cr_client.go b/pkg/client/clientset/versioned/typed/cr/v1alpha1/cr_client.go index d491f677615..efbe925b50e 100644 --- a/pkg/client/clientset/versioned/typed/cr/v1alpha1/cr_client.go +++ b/pkg/client/clientset/versioned/typed/cr/v1alpha1/cr_client.go @@ -21,7 +21,6 @@ package v1alpha1 import ( v1alpha1 "github.com/kanisterio/kanister/pkg/apis/cr/v1alpha1" "github.com/kanisterio/kanister/pkg/client/clientset/versioned/scheme" - serializer "k8s.io/apimachinery/pkg/runtime/serializer" rest "k8s.io/client-go/rest" ) @@ -81,7 +80,7 @@ func setConfigDefaults(config *rest.Config) error { gv := v1alpha1.SchemeGroupVersion config.GroupVersion = &gv config.APIPath = "/apis" - config.NegotiatedSerializer = serializer.DirectCodecFactory{CodecFactory: scheme.Codecs} + config.NegotiatedSerializer = scheme.Codecs.WithoutConversion() if config.UserAgent == "" { config.UserAgent = rest.DefaultKubernetesUserAgent() diff --git a/pkg/client/clientset/versioned/typed/cr/v1alpha1/fake/fake_actionset.go b/pkg/client/clientset/versioned/typed/cr/v1alpha1/fake/fake_actionset.go index 142afb70436..a6e1b04256a 100644 --- a/pkg/client/clientset/versioned/typed/cr/v1alpha1/fake/fake_actionset.go +++ b/pkg/client/clientset/versioned/typed/cr/v1alpha1/fake/fake_actionset.go @@ -19,6 +19,8 @@ limitations under the License. package fake import ( + "context" + v1alpha1 "github.com/kanisterio/kanister/pkg/apis/cr/v1alpha1" v1 "k8s.io/apimachinery/pkg/apis/meta/v1" labels "k8s.io/apimachinery/pkg/labels" @@ -39,7 +41,7 @@ var actionsetsResource = schema.GroupVersionResource{Group: "cr.kanister.io", Ve var actionsetsKind = schema.GroupVersionKind{Group: "cr.kanister.io", Version: "v1alpha1", Kind: "ActionSet"} // Get takes name of the actionSet, and returns the corresponding actionSet object, and an error if there is any. -func (c *FakeActionSets) Get(name string, options v1.GetOptions) (result *v1alpha1.ActionSet, err error) { +func (c *FakeActionSets) Get(ctx context.Context, name string, options v1.GetOptions) (result *v1alpha1.ActionSet, err error) { obj, err := c.Fake. Invokes(testing.NewGetAction(actionsetsResource, c.ns, name), &v1alpha1.ActionSet{}) @@ -50,7 +52,7 @@ func (c *FakeActionSets) Get(name string, options v1.GetOptions) (result *v1alph } // List takes label and field selectors, and returns the list of ActionSets that match those selectors. -func (c *FakeActionSets) List(opts v1.ListOptions) (result *v1alpha1.ActionSetList, err error) { +func (c *FakeActionSets) List(ctx context.Context, opts v1.ListOptions) (result *v1alpha1.ActionSetList, err error) { obj, err := c.Fake. Invokes(testing.NewListAction(actionsetsResource, actionsetsKind, c.ns, opts), &v1alpha1.ActionSetList{}) @@ -72,14 +74,14 @@ func (c *FakeActionSets) List(opts v1.ListOptions) (result *v1alpha1.ActionSetLi } // Watch returns a watch.Interface that watches the requested actionSets. -func (c *FakeActionSets) Watch(opts v1.ListOptions) (watch.Interface, error) { +func (c *FakeActionSets) Watch(ctx context.Context, opts v1.ListOptions) (watch.Interface, error) { return c.Fake. InvokesWatch(testing.NewWatchAction(actionsetsResource, c.ns, opts)) } // Create takes the representation of a actionSet and creates it. Returns the server's representation of the actionSet, and an error, if there is any. -func (c *FakeActionSets) Create(actionSet *v1alpha1.ActionSet) (result *v1alpha1.ActionSet, err error) { +func (c *FakeActionSets) Create(ctx context.Context, actionSet *v1alpha1.ActionSet, opts v1.CreateOptions) (result *v1alpha1.ActionSet, err error) { obj, err := c.Fake. Invokes(testing.NewCreateAction(actionsetsResource, c.ns, actionSet), &v1alpha1.ActionSet{}) @@ -90,7 +92,7 @@ func (c *FakeActionSets) Create(actionSet *v1alpha1.ActionSet) (result *v1alpha1 } // Update takes the representation of a actionSet and updates it. Returns the server's representation of the actionSet, and an error, if there is any. -func (c *FakeActionSets) Update(actionSet *v1alpha1.ActionSet) (result *v1alpha1.ActionSet, err error) { +func (c *FakeActionSets) Update(ctx context.Context, actionSet *v1alpha1.ActionSet, opts v1.UpdateOptions) (result *v1alpha1.ActionSet, err error) { obj, err := c.Fake. Invokes(testing.NewUpdateAction(actionsetsResource, c.ns, actionSet), &v1alpha1.ActionSet{}) @@ -101,7 +103,7 @@ func (c *FakeActionSets) Update(actionSet *v1alpha1.ActionSet) (result *v1alpha1 } // Delete takes name of the actionSet and deletes it. Returns an error if one occurs. -func (c *FakeActionSets) Delete(name string, options *v1.DeleteOptions) error { +func (c *FakeActionSets) Delete(ctx context.Context, name string, opts v1.DeleteOptions) error { _, err := c.Fake. Invokes(testing.NewDeleteAction(actionsetsResource, c.ns, name), &v1alpha1.ActionSet{}) @@ -109,15 +111,15 @@ func (c *FakeActionSets) Delete(name string, options *v1.DeleteOptions) error { } // DeleteCollection deletes a collection of objects. -func (c *FakeActionSets) DeleteCollection(options *v1.DeleteOptions, listOptions v1.ListOptions) error { - action := testing.NewDeleteCollectionAction(actionsetsResource, c.ns, listOptions) +func (c *FakeActionSets) DeleteCollection(ctx context.Context, opts v1.DeleteOptions, listOpts v1.ListOptions) error { + action := testing.NewDeleteCollectionAction(actionsetsResource, c.ns, listOpts) _, err := c.Fake.Invokes(action, &v1alpha1.ActionSetList{}) return err } // Patch applies the patch and returns the patched actionSet. -func (c *FakeActionSets) Patch(name string, pt types.PatchType, data []byte, subresources ...string) (result *v1alpha1.ActionSet, err error) { +func (c *FakeActionSets) Patch(ctx context.Context, name string, pt types.PatchType, data []byte, opts v1.PatchOptions, subresources ...string) (result *v1alpha1.ActionSet, err error) { obj, err := c.Fake. Invokes(testing.NewPatchSubresourceAction(actionsetsResource, c.ns, name, pt, data, subresources...), &v1alpha1.ActionSet{}) diff --git a/pkg/client/clientset/versioned/typed/cr/v1alpha1/fake/fake_blueprint.go b/pkg/client/clientset/versioned/typed/cr/v1alpha1/fake/fake_blueprint.go index fb4ef7eb6f9..c907ceaa22d 100644 --- a/pkg/client/clientset/versioned/typed/cr/v1alpha1/fake/fake_blueprint.go +++ b/pkg/client/clientset/versioned/typed/cr/v1alpha1/fake/fake_blueprint.go @@ -19,6 +19,8 @@ limitations under the License. package fake import ( + "context" + v1alpha1 "github.com/kanisterio/kanister/pkg/apis/cr/v1alpha1" v1 "k8s.io/apimachinery/pkg/apis/meta/v1" labels "k8s.io/apimachinery/pkg/labels" @@ -39,7 +41,7 @@ var blueprintsResource = schema.GroupVersionResource{Group: "cr.kanister.io", Ve var blueprintsKind = schema.GroupVersionKind{Group: "cr.kanister.io", Version: "v1alpha1", Kind: "Blueprint"} // Get takes name of the blueprint, and returns the corresponding blueprint object, and an error if there is any. -func (c *FakeBlueprints) Get(name string, options v1.GetOptions) (result *v1alpha1.Blueprint, err error) { +func (c *FakeBlueprints) Get(ctx context.Context, name string, options v1.GetOptions) (result *v1alpha1.Blueprint, err error) { obj, err := c.Fake. Invokes(testing.NewGetAction(blueprintsResource, c.ns, name), &v1alpha1.Blueprint{}) @@ -50,7 +52,7 @@ func (c *FakeBlueprints) Get(name string, options v1.GetOptions) (result *v1alph } // List takes label and field selectors, and returns the list of Blueprints that match those selectors. -func (c *FakeBlueprints) List(opts v1.ListOptions) (result *v1alpha1.BlueprintList, err error) { +func (c *FakeBlueprints) List(ctx context.Context, opts v1.ListOptions) (result *v1alpha1.BlueprintList, err error) { obj, err := c.Fake. Invokes(testing.NewListAction(blueprintsResource, blueprintsKind, c.ns, opts), &v1alpha1.BlueprintList{}) @@ -72,14 +74,14 @@ func (c *FakeBlueprints) List(opts v1.ListOptions) (result *v1alpha1.BlueprintLi } // Watch returns a watch.Interface that watches the requested blueprints. -func (c *FakeBlueprints) Watch(opts v1.ListOptions) (watch.Interface, error) { +func (c *FakeBlueprints) Watch(ctx context.Context, opts v1.ListOptions) (watch.Interface, error) { return c.Fake. InvokesWatch(testing.NewWatchAction(blueprintsResource, c.ns, opts)) } // Create takes the representation of a blueprint and creates it. Returns the server's representation of the blueprint, and an error, if there is any. -func (c *FakeBlueprints) Create(blueprint *v1alpha1.Blueprint) (result *v1alpha1.Blueprint, err error) { +func (c *FakeBlueprints) Create(ctx context.Context, blueprint *v1alpha1.Blueprint, opts v1.CreateOptions) (result *v1alpha1.Blueprint, err error) { obj, err := c.Fake. Invokes(testing.NewCreateAction(blueprintsResource, c.ns, blueprint), &v1alpha1.Blueprint{}) @@ -90,7 +92,7 @@ func (c *FakeBlueprints) Create(blueprint *v1alpha1.Blueprint) (result *v1alpha1 } // Update takes the representation of a blueprint and updates it. Returns the server's representation of the blueprint, and an error, if there is any. -func (c *FakeBlueprints) Update(blueprint *v1alpha1.Blueprint) (result *v1alpha1.Blueprint, err error) { +func (c *FakeBlueprints) Update(ctx context.Context, blueprint *v1alpha1.Blueprint, opts v1.UpdateOptions) (result *v1alpha1.Blueprint, err error) { obj, err := c.Fake. Invokes(testing.NewUpdateAction(blueprintsResource, c.ns, blueprint), &v1alpha1.Blueprint{}) @@ -101,7 +103,7 @@ func (c *FakeBlueprints) Update(blueprint *v1alpha1.Blueprint) (result *v1alpha1 } // Delete takes name of the blueprint and deletes it. Returns an error if one occurs. -func (c *FakeBlueprints) Delete(name string, options *v1.DeleteOptions) error { +func (c *FakeBlueprints) Delete(ctx context.Context, name string, opts v1.DeleteOptions) error { _, err := c.Fake. Invokes(testing.NewDeleteAction(blueprintsResource, c.ns, name), &v1alpha1.Blueprint{}) @@ -109,15 +111,15 @@ func (c *FakeBlueprints) Delete(name string, options *v1.DeleteOptions) error { } // DeleteCollection deletes a collection of objects. -func (c *FakeBlueprints) DeleteCollection(options *v1.DeleteOptions, listOptions v1.ListOptions) error { - action := testing.NewDeleteCollectionAction(blueprintsResource, c.ns, listOptions) +func (c *FakeBlueprints) DeleteCollection(ctx context.Context, opts v1.DeleteOptions, listOpts v1.ListOptions) error { + action := testing.NewDeleteCollectionAction(blueprintsResource, c.ns, listOpts) _, err := c.Fake.Invokes(action, &v1alpha1.BlueprintList{}) return err } // Patch applies the patch and returns the patched blueprint. -func (c *FakeBlueprints) Patch(name string, pt types.PatchType, data []byte, subresources ...string) (result *v1alpha1.Blueprint, err error) { +func (c *FakeBlueprints) Patch(ctx context.Context, name string, pt types.PatchType, data []byte, opts v1.PatchOptions, subresources ...string) (result *v1alpha1.Blueprint, err error) { obj, err := c.Fake. Invokes(testing.NewPatchSubresourceAction(blueprintsResource, c.ns, name, pt, data, subresources...), &v1alpha1.Blueprint{}) diff --git a/pkg/client/clientset/versioned/typed/cr/v1alpha1/fake/fake_profile.go b/pkg/client/clientset/versioned/typed/cr/v1alpha1/fake/fake_profile.go index 9ee57746bb8..e8ebeb0234f 100644 --- a/pkg/client/clientset/versioned/typed/cr/v1alpha1/fake/fake_profile.go +++ b/pkg/client/clientset/versioned/typed/cr/v1alpha1/fake/fake_profile.go @@ -19,6 +19,8 @@ limitations under the License. package fake import ( + "context" + v1alpha1 "github.com/kanisterio/kanister/pkg/apis/cr/v1alpha1" v1 "k8s.io/apimachinery/pkg/apis/meta/v1" labels "k8s.io/apimachinery/pkg/labels" @@ -39,7 +41,7 @@ var profilesResource = schema.GroupVersionResource{Group: "cr.kanister.io", Vers var profilesKind = schema.GroupVersionKind{Group: "cr.kanister.io", Version: "v1alpha1", Kind: "Profile"} // Get takes name of the profile, and returns the corresponding profile object, and an error if there is any. -func (c *FakeProfiles) Get(name string, options v1.GetOptions) (result *v1alpha1.Profile, err error) { +func (c *FakeProfiles) Get(ctx context.Context, name string, options v1.GetOptions) (result *v1alpha1.Profile, err error) { obj, err := c.Fake. Invokes(testing.NewGetAction(profilesResource, c.ns, name), &v1alpha1.Profile{}) @@ -50,7 +52,7 @@ func (c *FakeProfiles) Get(name string, options v1.GetOptions) (result *v1alpha1 } // List takes label and field selectors, and returns the list of Profiles that match those selectors. -func (c *FakeProfiles) List(opts v1.ListOptions) (result *v1alpha1.ProfileList, err error) { +func (c *FakeProfiles) List(ctx context.Context, opts v1.ListOptions) (result *v1alpha1.ProfileList, err error) { obj, err := c.Fake. Invokes(testing.NewListAction(profilesResource, profilesKind, c.ns, opts), &v1alpha1.ProfileList{}) @@ -72,14 +74,14 @@ func (c *FakeProfiles) List(opts v1.ListOptions) (result *v1alpha1.ProfileList, } // Watch returns a watch.Interface that watches the requested profiles. -func (c *FakeProfiles) Watch(opts v1.ListOptions) (watch.Interface, error) { +func (c *FakeProfiles) Watch(ctx context.Context, opts v1.ListOptions) (watch.Interface, error) { return c.Fake. InvokesWatch(testing.NewWatchAction(profilesResource, c.ns, opts)) } // Create takes the representation of a profile and creates it. Returns the server's representation of the profile, and an error, if there is any. -func (c *FakeProfiles) Create(profile *v1alpha1.Profile) (result *v1alpha1.Profile, err error) { +func (c *FakeProfiles) Create(ctx context.Context, profile *v1alpha1.Profile, opts v1.CreateOptions) (result *v1alpha1.Profile, err error) { obj, err := c.Fake. Invokes(testing.NewCreateAction(profilesResource, c.ns, profile), &v1alpha1.Profile{}) @@ -90,7 +92,7 @@ func (c *FakeProfiles) Create(profile *v1alpha1.Profile) (result *v1alpha1.Profi } // Update takes the representation of a profile and updates it. Returns the server's representation of the profile, and an error, if there is any. -func (c *FakeProfiles) Update(profile *v1alpha1.Profile) (result *v1alpha1.Profile, err error) { +func (c *FakeProfiles) Update(ctx context.Context, profile *v1alpha1.Profile, opts v1.UpdateOptions) (result *v1alpha1.Profile, err error) { obj, err := c.Fake. Invokes(testing.NewUpdateAction(profilesResource, c.ns, profile), &v1alpha1.Profile{}) @@ -101,7 +103,7 @@ func (c *FakeProfiles) Update(profile *v1alpha1.Profile) (result *v1alpha1.Profi } // Delete takes name of the profile and deletes it. Returns an error if one occurs. -func (c *FakeProfiles) Delete(name string, options *v1.DeleteOptions) error { +func (c *FakeProfiles) Delete(ctx context.Context, name string, opts v1.DeleteOptions) error { _, err := c.Fake. Invokes(testing.NewDeleteAction(profilesResource, c.ns, name), &v1alpha1.Profile{}) @@ -109,15 +111,15 @@ func (c *FakeProfiles) Delete(name string, options *v1.DeleteOptions) error { } // DeleteCollection deletes a collection of objects. -func (c *FakeProfiles) DeleteCollection(options *v1.DeleteOptions, listOptions v1.ListOptions) error { - action := testing.NewDeleteCollectionAction(profilesResource, c.ns, listOptions) +func (c *FakeProfiles) DeleteCollection(ctx context.Context, opts v1.DeleteOptions, listOpts v1.ListOptions) error { + action := testing.NewDeleteCollectionAction(profilesResource, c.ns, listOpts) _, err := c.Fake.Invokes(action, &v1alpha1.ProfileList{}) return err } // Patch applies the patch and returns the patched profile. -func (c *FakeProfiles) Patch(name string, pt types.PatchType, data []byte, subresources ...string) (result *v1alpha1.Profile, err error) { +func (c *FakeProfiles) Patch(ctx context.Context, name string, pt types.PatchType, data []byte, opts v1.PatchOptions, subresources ...string) (result *v1alpha1.Profile, err error) { obj, err := c.Fake. Invokes(testing.NewPatchSubresourceAction(profilesResource, c.ns, name, pt, data, subresources...), &v1alpha1.Profile{}) diff --git a/pkg/client/clientset/versioned/typed/cr/v1alpha1/profile.go b/pkg/client/clientset/versioned/typed/cr/v1alpha1/profile.go index 3f619b9862b..e05bb63019e 100644 --- a/pkg/client/clientset/versioned/typed/cr/v1alpha1/profile.go +++ b/pkg/client/clientset/versioned/typed/cr/v1alpha1/profile.go @@ -19,6 +19,7 @@ limitations under the License. package v1alpha1 import ( + "context" "time" v1alpha1 "github.com/kanisterio/kanister/pkg/apis/cr/v1alpha1" @@ -37,14 +38,14 @@ type ProfilesGetter interface { // ProfileInterface has methods to work with Profile resources. type ProfileInterface interface { - Create(*v1alpha1.Profile) (*v1alpha1.Profile, error) - Update(*v1alpha1.Profile) (*v1alpha1.Profile, error) - Delete(name string, options *v1.DeleteOptions) error - DeleteCollection(options *v1.DeleteOptions, listOptions v1.ListOptions) error - Get(name string, options v1.GetOptions) (*v1alpha1.Profile, error) - List(opts v1.ListOptions) (*v1alpha1.ProfileList, error) - Watch(opts v1.ListOptions) (watch.Interface, error) - Patch(name string, pt types.PatchType, data []byte, subresources ...string) (result *v1alpha1.Profile, err error) + Create(ctx context.Context, profile *v1alpha1.Profile, opts v1.CreateOptions) (*v1alpha1.Profile, error) + Update(ctx context.Context, profile *v1alpha1.Profile, opts v1.UpdateOptions) (*v1alpha1.Profile, error) + Delete(ctx context.Context, name string, opts v1.DeleteOptions) error + DeleteCollection(ctx context.Context, opts v1.DeleteOptions, listOpts v1.ListOptions) error + Get(ctx context.Context, name string, opts v1.GetOptions) (*v1alpha1.Profile, error) + List(ctx context.Context, opts v1.ListOptions) (*v1alpha1.ProfileList, error) + Watch(ctx context.Context, opts v1.ListOptions) (watch.Interface, error) + Patch(ctx context.Context, name string, pt types.PatchType, data []byte, opts v1.PatchOptions, subresources ...string) (result *v1alpha1.Profile, err error) ProfileExpansion } @@ -63,20 +64,20 @@ func newProfiles(c *CrV1alpha1Client, namespace string) *profiles { } // Get takes name of the profile, and returns the corresponding profile object, and an error if there is any. -func (c *profiles) Get(name string, options v1.GetOptions) (result *v1alpha1.Profile, err error) { +func (c *profiles) Get(ctx context.Context, name string, options v1.GetOptions) (result *v1alpha1.Profile, err error) { result = &v1alpha1.Profile{} err = c.client.Get(). Namespace(c.ns). Resource("profiles"). Name(name). VersionedParams(&options, scheme.ParameterCodec). - Do(). + Do(ctx). Into(result) return } // List takes label and field selectors, and returns the list of Profiles that match those selectors. -func (c *profiles) List(opts v1.ListOptions) (result *v1alpha1.ProfileList, err error) { +func (c *profiles) List(ctx context.Context, opts v1.ListOptions) (result *v1alpha1.ProfileList, err error) { var timeout time.Duration if opts.TimeoutSeconds != nil { timeout = time.Duration(*opts.TimeoutSeconds) * time.Second @@ -87,13 +88,13 @@ func (c *profiles) List(opts v1.ListOptions) (result *v1alpha1.ProfileList, err Resource("profiles"). VersionedParams(&opts, scheme.ParameterCodec). Timeout(timeout). - Do(). + Do(ctx). Into(result) return } // Watch returns a watch.Interface that watches the requested profiles. -func (c *profiles) Watch(opts v1.ListOptions) (watch.Interface, error) { +func (c *profiles) Watch(ctx context.Context, opts v1.ListOptions) (watch.Interface, error) { var timeout time.Duration if opts.TimeoutSeconds != nil { timeout = time.Duration(*opts.TimeoutSeconds) * time.Second @@ -104,71 +105,74 @@ func (c *profiles) Watch(opts v1.ListOptions) (watch.Interface, error) { Resource("profiles"). VersionedParams(&opts, scheme.ParameterCodec). Timeout(timeout). - Watch() + Watch(ctx) } // Create takes the representation of a profile and creates it. Returns the server's representation of the profile, and an error, if there is any. -func (c *profiles) Create(profile *v1alpha1.Profile) (result *v1alpha1.Profile, err error) { +func (c *profiles) Create(ctx context.Context, profile *v1alpha1.Profile, opts v1.CreateOptions) (result *v1alpha1.Profile, err error) { result = &v1alpha1.Profile{} err = c.client.Post(). Namespace(c.ns). Resource("profiles"). + VersionedParams(&opts, scheme.ParameterCodec). Body(profile). - Do(). + Do(ctx). Into(result) return } // Update takes the representation of a profile and updates it. Returns the server's representation of the profile, and an error, if there is any. -func (c *profiles) Update(profile *v1alpha1.Profile) (result *v1alpha1.Profile, err error) { +func (c *profiles) Update(ctx context.Context, profile *v1alpha1.Profile, opts v1.UpdateOptions) (result *v1alpha1.Profile, err error) { result = &v1alpha1.Profile{} err = c.client.Put(). Namespace(c.ns). Resource("profiles"). Name(profile.Name). + VersionedParams(&opts, scheme.ParameterCodec). Body(profile). - Do(). + Do(ctx). Into(result) return } // Delete takes name of the profile and deletes it. Returns an error if one occurs. -func (c *profiles) Delete(name string, options *v1.DeleteOptions) error { +func (c *profiles) Delete(ctx context.Context, name string, opts v1.DeleteOptions) error { return c.client.Delete(). Namespace(c.ns). Resource("profiles"). Name(name). - Body(options). - Do(). + Body(&opts). + Do(ctx). Error() } // DeleteCollection deletes a collection of objects. -func (c *profiles) DeleteCollection(options *v1.DeleteOptions, listOptions v1.ListOptions) error { +func (c *profiles) DeleteCollection(ctx context.Context, opts v1.DeleteOptions, listOpts v1.ListOptions) error { var timeout time.Duration - if listOptions.TimeoutSeconds != nil { - timeout = time.Duration(*listOptions.TimeoutSeconds) * time.Second + if listOpts.TimeoutSeconds != nil { + timeout = time.Duration(*listOpts.TimeoutSeconds) * time.Second } return c.client.Delete(). Namespace(c.ns). Resource("profiles"). - VersionedParams(&listOptions, scheme.ParameterCodec). + VersionedParams(&listOpts, scheme.ParameterCodec). Timeout(timeout). - Body(options). - Do(). + Body(&opts). + Do(ctx). Error() } // Patch applies the patch and returns the patched profile. -func (c *profiles) Patch(name string, pt types.PatchType, data []byte, subresources ...string) (result *v1alpha1.Profile, err error) { +func (c *profiles) Patch(ctx context.Context, name string, pt types.PatchType, data []byte, opts v1.PatchOptions, subresources ...string) (result *v1alpha1.Profile, err error) { result = &v1alpha1.Profile{} err = c.client.Patch(pt). Namespace(c.ns). Resource("profiles"). - SubResource(subresources...). Name(name). + SubResource(subresources...). + VersionedParams(&opts, scheme.ParameterCodec). Body(data). - Do(). + Do(ctx). Into(result) return } diff --git a/pkg/client/informers/externalversions/cr/v1alpha1/actionset.go b/pkg/client/informers/externalversions/cr/v1alpha1/actionset.go index fa4f2bac028..b013ec14aff 100644 --- a/pkg/client/informers/externalversions/cr/v1alpha1/actionset.go +++ b/pkg/client/informers/externalversions/cr/v1alpha1/actionset.go @@ -19,6 +19,7 @@ limitations under the License. package v1alpha1 import ( + "context" time "time" crv1alpha1 "github.com/kanisterio/kanister/pkg/apis/cr/v1alpha1" @@ -61,13 +62,13 @@ func NewFilteredActionSetInformer(client versioned.Interface, namespace string, if tweakListOptions != nil { tweakListOptions(&options) } - return client.CrV1alpha1().ActionSets(namespace).List(options) + return client.CrV1alpha1().ActionSets(namespace).List(context.TODO(), options) }, WatchFunc: func(options v1.ListOptions) (watch.Interface, error) { if tweakListOptions != nil { tweakListOptions(&options) } - return client.CrV1alpha1().ActionSets(namespace).Watch(options) + return client.CrV1alpha1().ActionSets(namespace).Watch(context.TODO(), options) }, }, &crv1alpha1.ActionSet{}, diff --git a/pkg/client/informers/externalversions/cr/v1alpha1/blueprint.go b/pkg/client/informers/externalversions/cr/v1alpha1/blueprint.go index 0d88e6ec758..238c06172f8 100644 --- a/pkg/client/informers/externalversions/cr/v1alpha1/blueprint.go +++ b/pkg/client/informers/externalversions/cr/v1alpha1/blueprint.go @@ -19,6 +19,7 @@ limitations under the License. package v1alpha1 import ( + "context" time "time" crv1alpha1 "github.com/kanisterio/kanister/pkg/apis/cr/v1alpha1" @@ -61,13 +62,13 @@ func NewFilteredBlueprintInformer(client versioned.Interface, namespace string, if tweakListOptions != nil { tweakListOptions(&options) } - return client.CrV1alpha1().Blueprints(namespace).List(options) + return client.CrV1alpha1().Blueprints(namespace).List(context.TODO(), options) }, WatchFunc: func(options v1.ListOptions) (watch.Interface, error) { if tweakListOptions != nil { tweakListOptions(&options) } - return client.CrV1alpha1().Blueprints(namespace).Watch(options) + return client.CrV1alpha1().Blueprints(namespace).Watch(context.TODO(), options) }, }, &crv1alpha1.Blueprint{}, diff --git a/pkg/client/informers/externalversions/cr/v1alpha1/profile.go b/pkg/client/informers/externalversions/cr/v1alpha1/profile.go index 60e7ce6f2a4..850f96f23b9 100644 --- a/pkg/client/informers/externalversions/cr/v1alpha1/profile.go +++ b/pkg/client/informers/externalversions/cr/v1alpha1/profile.go @@ -19,6 +19,7 @@ limitations under the License. package v1alpha1 import ( + "context" time "time" crv1alpha1 "github.com/kanisterio/kanister/pkg/apis/cr/v1alpha1" @@ -61,13 +62,13 @@ func NewFilteredProfileInformer(client versioned.Interface, namespace string, re if tweakListOptions != nil { tweakListOptions(&options) } - return client.CrV1alpha1().Profiles(namespace).List(options) + return client.CrV1alpha1().Profiles(namespace).List(context.TODO(), options) }, WatchFunc: func(options v1.ListOptions) (watch.Interface, error) { if tweakListOptions != nil { tweakListOptions(&options) } - return client.CrV1alpha1().Profiles(namespace).Watch(options) + return client.CrV1alpha1().Profiles(namespace).Watch(context.TODO(), options) }, }, &crv1alpha1.Profile{}, diff --git a/pkg/config/helpers.go b/pkg/config/helpers.go index 99e92e38a84..014db742736 100644 --- a/pkg/config/helpers.go +++ b/pkg/config/helpers.go @@ -1,6 +1,7 @@ package config import ( + "context" "fmt" "os" @@ -30,7 +31,7 @@ func GetClusterName(cli kubernetes.Interface) (string, error) { cli = tmpcli } - ns, err := cli.CoreV1().Namespaces().Get(defaultNamespaceName, metav1.GetOptions{}) + ns, err := cli.CoreV1().Namespaces().Get(context.TODO(), defaultNamespaceName, metav1.GetOptions{}) return string(ns.GetUID()), err } diff --git a/pkg/controller/controller.go b/pkg/controller/controller.go index 94592d17982..c8c6cc31873 100644 --- a/pkg/controller/controller.go +++ b/pkg/controller/controller.go @@ -122,13 +122,13 @@ func (c *Controller) StartWatch(ctx context.Context, namespace string) error { } func checkCRAccess(cli versioned.Interface, ns string) error { - if _, err := cli.CrV1alpha1().ActionSets(ns).List(v1.ListOptions{}); err != nil { + if _, err := cli.CrV1alpha1().ActionSets(ns).List(context.TODO(), v1.ListOptions{}); err != nil { return errors.Wrap(err, "Could not list ActionSets") } - if _, err := cli.CrV1alpha1().Blueprints(ns).List(v1.ListOptions{}); err != nil { + if _, err := cli.CrV1alpha1().Blueprints(ns).List(context.TODO(), v1.ListOptions{}); err != nil { return errors.Wrap(err, "Could not list Blueprints") } - if _, err := cli.CrV1alpha1().Profiles(ns).List(v1.ListOptions{}); err != nil { + if _, err := cli.CrV1alpha1().Profiles(ns).List(context.TODO(), v1.ListOptions{}); err != nil { return errors.Wrap(err, "Could not list Profiles") } return nil @@ -161,7 +161,7 @@ func (c *Controller) onUpdate(oldObj, newObj interface{}) { new := newObj.(*crv1alpha1.ActionSet) if err := c.onUpdateActionSet(old, new); err != nil { bpName := new.Spec.Actions[0].Blueprint - bp, _ := c.crClient.CrV1alpha1().Blueprints(new.GetNamespace()).Get(bpName, v1.GetOptions{}) + bp, _ := c.crClient.CrV1alpha1().Blueprints(new.GetNamespace()).Get(context.TODO(), bpName, v1.GetOptions{}) c.logAndErrorEvent(context.TODO(), "Callback onUpdateActionSet() failed:", "Error", err, new, bp) } case *crv1alpha1.Blueprint: @@ -178,7 +178,7 @@ func (c *Controller) onDelete(obj interface{}) { case *crv1alpha1.ActionSet: if err := c.onDeleteActionSet(v); err != nil { bpName := v.Spec.Actions[0].Blueprint - bp, _ := c.crClient.CrV1alpha1().Blueprints(v.GetNamespace()).Get(bpName, v1.GetOptions{}) + bp, _ := c.crClient.CrV1alpha1().Blueprints(v.GetNamespace()).Get(context.TODO(), bpName, v1.GetOptions{}) c.logAndErrorEvent(context.TODO(), "Callback onDeleteActionSet() failed:", "Error", err, v, bp) } case *crv1alpha1.Blueprint: @@ -190,7 +190,7 @@ func (c *Controller) onDelete(obj interface{}) { } func (c *Controller) onAddActionSet(as *crv1alpha1.ActionSet) error { - as, err := c.crClient.CrV1alpha1().ActionSets(as.GetNamespace()).Get(as.GetName(), v1.GetOptions{}) + as, err := c.crClient.CrV1alpha1().ActionSets(as.GetNamespace()).Get(context.TODO(), as.GetName(), v1.GetOptions{}) if err != nil { return errors.WithStack(err) } @@ -198,7 +198,7 @@ func (c *Controller) onAddActionSet(as *crv1alpha1.ActionSet) error { return err } c.initActionSetStatus(as) - as, err = c.crClient.CrV1alpha1().ActionSets(as.GetNamespace()).Get(as.GetName(), v1.GetOptions{}) + as, err = c.crClient.CrV1alpha1().ActionSets(as.GetNamespace()).Get(context.TODO(), as.GetName(), v1.GetOptions{}) if err != nil { return errors.WithStack(err) } @@ -289,7 +289,7 @@ func (c *Controller) initActionSetStatus(as *crv1alpha1.ActionSet) { var actionStatus *crv1alpha1.ActionStatus actionStatus, err = c.initialActionStatus(as.GetNamespace(), a) if err != nil { - bp, _ := c.crClient.CrV1alpha1().Blueprints(as.GetNamespace()).Get(a.Blueprint, v1.GetOptions{}) + bp, _ := c.crClient.CrV1alpha1().Blueprints(as.GetNamespace()).Get(ctx, a.Blueprint, v1.GetOptions{}) reason := fmt.Sprintf("ActionSetFailed Action: %s", a.Name) c.logAndErrorEvent(ctx, "Could not get initial action:", reason, err, as, bp) break @@ -305,7 +305,7 @@ func (c *Controller) initActionSetStatus(as *crv1alpha1.ActionSet) { as.Status.State = crv1alpha1.StatePending as.Status.Actions = actions } - if _, err = c.crClient.CrV1alpha1().ActionSets(as.GetNamespace()).Update(as); err != nil { + if _, err = c.crClient.CrV1alpha1().ActionSets(as.GetNamespace()).Update(ctx, as, v1.UpdateOptions{}); err != nil { c.logAndErrorEvent(ctx, "Could not update ActionSet:", "Update Failed", err, as) } } @@ -315,7 +315,7 @@ func (c *Controller) initialActionStatus(namespace string, a crv1alpha1.ActionSp // TODO: If no blueprint is specified, we should consider a default. return nil, errors.New("Blueprint not specified") } - bp, err := c.crClient.CrV1alpha1().Blueprints(namespace).Get(a.Blueprint, v1.GetOptions{}) + bp, err := c.crClient.CrV1alpha1().Blueprints(namespace).Get(context.TODO(), a.Blueprint, v1.GetOptions{}) if err != nil { return nil, errors.Wrap(err, "Failed to query blueprint") } @@ -347,7 +347,7 @@ func (c *Controller) handleActionSet(as *crv1alpha1.ActionSet) (err error) { return nil } as.Status.State = crv1alpha1.StateRunning - if as, err = c.crClient.CrV1alpha1().ActionSets(as.GetNamespace()).Update(as); err != nil { + if as, err = c.crClient.CrV1alpha1().ActionSets(as.GetNamespace()).Update(context.TODO(), as, v1.UpdateOptions{}); err != nil { return errors.WithStack(err) } ctx := context.Background() @@ -357,7 +357,7 @@ func (c *Controller) handleActionSet(as *crv1alpha1.ActionSet) (err error) { // If runAction returns an error, it is a failure in the synchronous // part of running the action. bpName := as.Spec.Actions[i].Blueprint - bp, _ := c.crClient.CrV1alpha1().Blueprints(as.GetNamespace()).Get(bpName, v1.GetOptions{}) + bp, _ := c.crClient.CrV1alpha1().Blueprints(as.GetNamespace()).Get(ctx, bpName, v1.GetOptions{}) reason := fmt.Sprintf("ActionSetFailed Action: %s", as.Status.Actions[i].Name) c.logAndErrorEvent(ctx, fmt.Sprintf("Failed to launch Action %s:", as.GetName()), reason, err, as, bp) as.Status.State = crv1alpha1.StateFailed @@ -365,7 +365,7 @@ func (c *Controller) handleActionSet(as *crv1alpha1.ActionSet) (err error) { Message: err.Error(), } as.Status.Actions[i].Phases[0].State = crv1alpha1.StateFailed - _, err = c.crClient.CrV1alpha1().ActionSets(as.GetNamespace()).Update(as) + _, err = c.crClient.CrV1alpha1().ActionSets(as.GetNamespace()).Update(ctx, as, v1.UpdateOptions{}) return errors.WithStack(err) } } @@ -378,7 +378,7 @@ func (c *Controller) runAction(ctx context.Context, as *crv1alpha1.ActionSet, aI action := as.Spec.Actions[aIDX] c.logAndSuccessEvent(ctx, fmt.Sprintf("Executing action %s", action.Name), "Started Action", as) bpName := as.Spec.Actions[aIDX].Blueprint - bp, err := c.crClient.CrV1alpha1().Blueprints(as.GetNamespace()).Get(bpName, v1.GetOptions{}) + bp, err := c.crClient.CrV1alpha1().Blueprints(as.GetNamespace()).Get(ctx, bpName, v1.GetOptions{}) if err != nil { return errors.WithStack(err) } diff --git a/pkg/controller/controller_test.go b/pkg/controller/controller_test.go index 9d0a7d65081..77a68dd74d4 100644 --- a/pkg/controller/controller_test.go +++ b/pkg/controller/controller_test.go @@ -79,37 +79,37 @@ func (s *ControllerSuite) SetUpSuite(c *C) { GenerateName: "kanistercontrollertest-", }, } - cns, err := s.cli.CoreV1().Namespaces().Create(ns) + cns, err := s.cli.CoreV1().Namespaces().Create(context.TODO(), ns, metav1.CreateOptions{}) c.Assert(err, IsNil) s.namespace = cns.Name sec := testutil.NewTestProfileSecret() - sec, err = s.cli.CoreV1().Secrets(s.namespace).Create(sec) + sec, err = s.cli.CoreV1().Secrets(s.namespace).Create(context.TODO(), sec, metav1.CreateOptions{}) c.Assert(err, IsNil) p := testutil.NewTestProfile(s.namespace, sec.GetName()) - _, err = s.crCli.Profiles(s.namespace).Create(p) + _, err = s.crCli.Profiles(s.namespace).Create(context.TODO(), p, metav1.CreateOptions{}) c.Assert(err, IsNil) ss := testutil.NewTestStatefulSet(1) - ss, err = s.cli.AppsV1().StatefulSets(s.namespace).Create(ss) + ss, err = s.cli.AppsV1().StatefulSets(s.namespace).Create(context.TODO(), ss, metav1.CreateOptions{}) c.Assert(err, IsNil) s.ss = ss d := testutil.NewTestDeployment(1) - d, err = s.cli.AppsV1().Deployments(s.namespace).Create(d) + d, err = s.cli.AppsV1().Deployments(s.namespace).Create(context.TODO(), d, metav1.CreateOptions{}) c.Assert(err, IsNil) s.deployment = d cm := testutil.NewTestConfigMap() - cm, err = s.cli.CoreV1().ConfigMaps(s.namespace).Create(cm) + cm, err = s.cli.CoreV1().ConfigMaps(s.namespace).Create(context.TODO(), cm, metav1.CreateOptions{}) c.Assert(err, IsNil) s.confimap = cm } func (s *ControllerSuite) TearDownSuite(c *C) { if s.namespace != "" { - _ = s.cli.CoreV1().Namespaces().Delete(s.namespace, nil) + _ = s.cli.CoreV1().Namespaces().Delete(context.TODO(), s.namespace, metav1.DeleteOptions{}) } } @@ -140,7 +140,7 @@ func (s *ControllerSuite) waitOnActionSetState(c *C, as *crv1alpha1.ActionSet, s ctx, cancel := context.WithTimeout(context.Background(), 10*time.Second) defer cancel() err := poll.Wait(ctx, func(context.Context) (bool, error) { - as, err := s.crCli.ActionSets(as.GetNamespace()).Get(as.GetName(), metav1.GetOptions{}) + as, err := s.crCli.ActionSets(as.GetNamespace()).Get(ctx, as.GetName(), metav1.GetOptions{}) if err != nil { return false, err } @@ -223,10 +223,10 @@ func (s *ControllerSuite) TestEmptyActionSetStatus(c *C) { Actions: []crv1alpha1.ActionSpec{}, }, } - as, err := s.crCli.ActionSets(s.namespace).Create(as) + as, err := s.crCli.ActionSets(s.namespace).Create(context.TODO(), as, metav1.CreateOptions{}) c.Assert(err, IsNil) defer func() { - err := s.crCli.ActionSets(s.namespace).Delete(as.GetName(), nil) + err := s.crCli.ActionSets(s.namespace).Delete(context.TODO(), as.GetName(), metav1.DeleteOptions{}) c.Assert(err, IsNil) }() @@ -251,10 +251,10 @@ func (s *ControllerSuite) TestSynchronousFailure(c *C) { }, }, } - as, err := s.crCli.ActionSets(s.namespace).Create(as) + as, err := s.crCli.ActionSets(s.namespace).Create(context.TODO(), as, metav1.CreateOptions{}) c.Assert(err, IsNil) defer func() { - err := s.crCli.ActionSets(s.namespace).Delete(as.GetName(), nil) + err := s.crCli.ActionSets(s.namespace).Delete(context.TODO(), as.GetName(), metav1.DeleteOptions{}) c.Assert(err, IsNil) }() @@ -345,7 +345,7 @@ func (s *ControllerSuite) TestExecActionSet(c *C) { // Add a blueprint with a mocked kanister function. bp := testutil.NewTestBlueprint(pok, tc.funcNames...) bp = testutil.BlueprintWithConfigMap(bp) - bp, err = s.crCli.Blueprints(s.namespace).Create(bp) + bp, err = s.crCli.Blueprints(s.namespace).Create(context.TODO(), bp, metav1.CreateOptions{}) c.Assert(err, IsNil) var n string @@ -361,7 +361,7 @@ func (s *ControllerSuite) TestExecActionSet(c *C) { // Add an actionset that references that blueprint. as := testutil.NewTestActionSet(s.namespace, bp.GetName(), pok, n, s.namespace, tc.version) as = testutil.ActionSetWithConfigMap(as, s.confimap.GetName()) - as, err = s.crCli.ActionSets(s.namespace).Create(as) + as, err = s.crCli.ActionSets(s.namespace).Create(context.TODO(), as, metav1.CreateOptions{}) c.Assert(err, IsNil, Commentf("Failed case: %s", tc.name)) err = s.waitOnActionSetState(c, as, crv1alpha1.StateRunning) @@ -383,7 +383,7 @@ func (s *ControllerSuite) TestExecActionSet(c *C) { case testutil.OutputFuncName: c.Assert(testutil.OutputFuncOut(), DeepEquals, map[string]interface{}{"key": "myValue"}, Commentf("Failed case: %s", tc.name)) case testutil.CancelFuncName: - err = s.crCli.ActionSets(s.namespace).Delete(as.GetName(), nil) + err = s.crCli.ActionSets(s.namespace).Delete(context.TODO(), as.GetName(), metav1.DeleteOptions{}) c.Assert(err, IsNil) c.Assert(testutil.CancelFuncOut().Error(), DeepEquals, "context canceled") cancel = true @@ -397,9 +397,9 @@ func (s *ControllerSuite) TestExecActionSet(c *C) { err = s.waitOnActionSetState(c, as, final) c.Assert(err, IsNil, Commentf("Failed case: %s", tc.name)) } - err = s.crCli.Blueprints(s.namespace).Delete(bp.GetName(), nil) + err = s.crCli.Blueprints(s.namespace).Delete(context.TODO(), bp.GetName(), metav1.DeleteOptions{}) c.Assert(err, IsNil) - err = s.crCli.ActionSets(s.namespace).Delete(as.GetName(), nil) + err = s.crCli.ActionSets(s.namespace).Delete(context.TODO(), as.GetName(), metav1.DeleteOptions{}) if !cancel { c.Assert(err, IsNil) } else { @@ -424,7 +424,7 @@ func (s *ControllerSuite) TestRuntimeObjEventLogs(c *C) { }, }, } - as, err := s.crCli.ActionSets(s.namespace).Create(as) + as, err := s.crCli.ActionSets(s.namespace).Create(context.TODO(), as, metav1.CreateOptions{}) c.Assert(err, IsNil) msg := "Unit testing event logs" reason := "Test Logs" @@ -434,7 +434,7 @@ func (s *ControllerSuite) TestRuntimeObjEventLogs(c *C) { // Create Blueprint bp := testutil.NewTestBlueprint("StatefulSet", testutil.WaitFuncName) - bp, err = s.crCli.Blueprints(s.namespace).Create(bp) + bp, err = s.crCli.Blueprints(s.namespace).Create(context.TODO(), bp, metav1.CreateOptions{}) c.Assert(err, IsNil) //Test the logAndErrorEvent function @@ -476,13 +476,13 @@ func (s *ControllerSuite) TestPhaseOutputAsArtifact(c *C) { // Create a blueprint that uses func output as artifact bp := newBPWithOutputArtifact() bp = testutil.BlueprintWithConfigMap(bp) - bp, err := s.crCli.Blueprints(s.namespace).Create(bp) + bp, err := s.crCli.Blueprints(s.namespace).Create(context.TODO(), bp, metav1.CreateOptions{}) c.Assert(err, IsNil) // Add an actionset that references that blueprint. as := testutil.NewTestActionSet(s.namespace, bp.GetName(), "Deployment", s.deployment.GetName(), s.namespace, kanister.DefaultVersion) as = testutil.ActionSetWithConfigMap(as, s.confimap.GetName()) - as, err = s.crCli.ActionSets(s.namespace).Create(as) + as, err = s.crCli.ActionSets(s.namespace).Create(context.TODO(), as, metav1.CreateOptions{}) c.Assert(err, IsNil) err = s.waitOnActionSetState(c, as, crv1alpha1.StateRunning) @@ -495,7 +495,7 @@ func (s *ControllerSuite) TestPhaseOutputAsArtifact(c *C) { c.Assert(err, IsNil) // Check if the artifacts got updated correctly - as, _ = s.crCli.ActionSets(as.GetNamespace()).Get(as.GetName(), metav1.GetOptions{}) + as, _ = s.crCli.ActionSets(as.GetNamespace()).Get(context.TODO(), as.GetName(), metav1.GetOptions{}) arts := as.Status.Actions[0].Artifacts c.Assert(arts, NotNil) c.Assert(arts, HasLen, 1) @@ -506,13 +506,13 @@ func (s *ControllerSuite) TestPhaseOutputAsArtifact(c *C) { func (s *ControllerSuite) TestRenderArtifactsFailure(c *C) { bp := newBPWithFakeOutputArtifact() bp = testutil.BlueprintWithConfigMap(bp) - bp, err := s.crCli.Blueprints(s.namespace).Create(bp) + bp, err := s.crCli.Blueprints(s.namespace).Create(context.TODO(), bp, metav1.CreateOptions{}) c.Assert(err, IsNil) // Add an actionset that references that blueprint. as := testutil.NewTestActionSet(s.namespace, bp.GetName(), "Deployment", s.deployment.GetName(), s.namespace, kanister.DefaultVersion) as = testutil.ActionSetWithConfigMap(as, s.confimap.GetName()) - as, err = s.crCli.ActionSets(s.namespace).Create(as) + as, err = s.crCli.ActionSets(s.namespace).Create(context.TODO(), as, metav1.CreateOptions{}) c.Assert(err, IsNil) err = s.waitOnActionSetState(c, as, crv1alpha1.StateRunning) diff --git a/pkg/customresource/customresource.go b/pkg/customresource/customresource.go index 7cc5957b1b0..97604505892 100644 --- a/pkg/customresource/customresource.go +++ b/pkg/customresource/customresource.go @@ -16,6 +16,7 @@ package customresource import ( + contextpkg "context" "fmt" "time" @@ -110,7 +111,7 @@ func createCRD(context Context, resource CustomResource) error { }, } - _, err := context.APIExtensionClientset.ApiextensionsV1beta1().CustomResourceDefinitions().Create(crd) + _, err := context.APIExtensionClientset.ApiextensionsV1beta1().CustomResourceDefinitions().Create(contextpkg.TODO(), crd, metav1.CreateOptions{}) if err != nil { if !errors.IsAlreadyExists(err) { return fmt.Errorf("failed to create %s CRD. %+v", resource.Name, err) @@ -122,7 +123,7 @@ func createCRD(context Context, resource CustomResource) error { func waitForCRDInit(context Context, resource CustomResource) error { crdName := fmt.Sprintf("%s.%s", resource.Plural, resource.Group) return wait.Poll(context.Interval, context.Timeout, func() (bool, error) { - crd, err := context.APIExtensionClientset.ApiextensionsV1beta1().CustomResourceDefinitions().Get(crdName, metav1.GetOptions{}) + crd, err := context.APIExtensionClientset.ApiextensionsV1beta1().CustomResourceDefinitions().Get(contextpkg.TODO(), crdName, metav1.GetOptions{}) if err != nil { return false, err } diff --git a/pkg/discovery/crd.go b/pkg/discovery/crd.go index 7f41e125530..5c3591afed8 100644 --- a/pkg/discovery/crd.go +++ b/pkg/discovery/crd.go @@ -26,7 +26,7 @@ import ( // CRDMatcher returns a ResourceTypeMatcher that matches all CRs in this cluster. func CRDMatcher(ctx context.Context, cli crdclient.Interface) (filter.ResourceTypeMatcher, error) { - crds, err := cli.ApiextensionsV1beta1().CustomResourceDefinitions().List(metav1.ListOptions{}) + crds, err := cli.ApiextensionsV1beta1().CustomResourceDefinitions().List(ctx, metav1.ListOptions{}) if err != nil { return nil, errors.Wrap(err, "Failed to query CRDs in cluster") } diff --git a/pkg/eventer/event_recorder.go b/pkg/eventer/event_recorder.go index 60701c78d97..5c409f9c708 100644 --- a/pkg/eventer/event_recorder.go +++ b/pkg/eventer/event_recorder.go @@ -15,7 +15,10 @@ package eventer import ( + "context" + core "k8s.io/api/core/v1" + metav1 "k8s.io/apimachinery/pkg/apis/meta/v1" "k8s.io/client-go/kubernetes" "k8s.io/client-go/kubernetes/scheme" "k8s.io/client-go/tools/record" @@ -29,7 +32,7 @@ func NewEventRecorder(client kubernetes.Interface, component string) record.Even broadcaster := record.NewBroadcaster() broadcaster.StartEventWatcher( func(event *core.Event) { - if _, err := client.CoreV1().Events(event.Namespace).Create(event); err != nil { + if _, err := client.CoreV1().Events(event.Namespace).Create(context.TODO(), event, metav1.CreateOptions{}); err != nil { log.Error().WithError(err).Print("Error while creating the event") } }, diff --git a/pkg/function/copy_volume_data.go b/pkg/function/copy_volume_data.go index 883673be383..6c85b025050 100644 --- a/pkg/function/copy_volume_data.go +++ b/pkg/function/copy_volume_data.go @@ -65,7 +65,7 @@ func (*copyVolumeDataFunc) Name() string { func copyVolumeData(ctx context.Context, cli kubernetes.Interface, tp param.TemplateParams, namespace, pvc, targetPath, encryptionKey string, podOverride map[string]interface{}) (map[string]interface{}, error) { // Validate PVC exists - if _, err := cli.CoreV1().PersistentVolumeClaims(namespace).Get(pvc, metav1.GetOptions{}); err != nil { + if _, err := cli.CoreV1().PersistentVolumeClaims(namespace).Get(ctx, pvc, metav1.GetOptions{}); err != nil { return nil, errors.Wrapf(err, "Failed to retrieve PVC. Namespace %s, Name %s", namespace, pvc) } // Create a pod with PVCs attached diff --git a/pkg/function/create_volume_from_snapshot.go b/pkg/function/create_volume_from_snapshot.go index 2772c105ebd..dc6238e6a9c 100644 --- a/pkg/function/create_volume_from_snapshot.go +++ b/pkg/function/create_volume_from_snapshot.go @@ -83,7 +83,7 @@ func createVolumeFromSnapshot(ctx context.Context, cli kubernetes.Interface, nam if err != nil { return nil, errors.Wrapf(err, "Could not get storage provider %v", pvcInfo.Type) } - _, err = cli.CoreV1().PersistentVolumeClaims(namespace).Get(pvcName, metav1.GetOptions{}) + _, err = cli.CoreV1().PersistentVolumeClaims(namespace).Get(ctx, pvcName, metav1.GetOptions{}) if err == nil { if err = kubevolume.DeletePVC(cli, namespace, pvcName); err != nil { return nil, err diff --git a/pkg/function/create_volume_from_snapshot_test.go b/pkg/function/create_volume_from_snapshot_test.go index ac11f13dd4a..4a3c3928b7e 100644 --- a/pkg/function/create_volume_from_snapshot_test.go +++ b/pkg/function/create_volume_from_snapshot_test.go @@ -20,7 +20,7 @@ import ( "fmt" . "gopkg.in/check.v1" - "k8s.io/api/core/v1" + v1 "k8s.io/api/core/v1" metav1 "k8s.io/apimachinery/pkg/apis/meta/v1" "k8s.io/apimachinery/pkg/runtime" "k8s.io/client-go/kubernetes/fake" @@ -121,14 +121,14 @@ func (s *CreateVolumeFromSnapshotTestSuite) TestCreateVolumeFromSnapshot(c *C) { c.Assert(len(provider.(*mockblockstorage.Provider).VolIDList) == 1, Equals, true) if tc.newPVCs != nil { - _, err = cli.CoreV1().PersistentVolumeClaims(ns).Get("newpvc-1", metav1.GetOptions{}) + _, err = cli.CoreV1().PersistentVolumeClaims(ns).Get(ctx, "newpvc-1", metav1.GetOptions{}) c.Assert(err, IsNil) - _, err = cli.CoreV1().PersistentVolumeClaims(ns).Get("newpvc-2", metav1.GetOptions{}) + _, err = cli.CoreV1().PersistentVolumeClaims(ns).Get(ctx, "newpvc-2", metav1.GetOptions{}) c.Assert(err, IsNil) } else { - _, err = cli.CoreV1().PersistentVolumeClaims(ns).Get("pvc-1", metav1.GetOptions{}) + _, err = cli.CoreV1().PersistentVolumeClaims(ns).Get(ctx, "pvc-1", metav1.GetOptions{}) c.Assert(err, IsNil) - _, err = cli.CoreV1().PersistentVolumeClaims(ns).Get("pvc-2", metav1.GetOptions{}) + _, err = cli.CoreV1().PersistentVolumeClaims(ns).Get(ctx, "pvc-2", metav1.GetOptions{}) c.Assert(err, IsNil) } } diff --git a/pkg/function/create_volume_snapshot.go b/pkg/function/create_volume_snapshot.go index a508c54d77e..6b57d3e32b7 100644 --- a/pkg/function/create_volume_snapshot.go +++ b/pkg/function/create_volume_snapshot.go @@ -175,7 +175,7 @@ func getPVCInfo(ctx context.Context, kubeCli kubernetes.Interface, namespace str _ = ctx var region string var provider blockstorage.Provider - pvc, err := kubeCli.CoreV1().PersistentVolumeClaims(namespace).Get(name, metav1.GetOptions{}) + pvc, err := kubeCli.CoreV1().PersistentVolumeClaims(namespace).Get(ctx, name, metav1.GetOptions{}) if err != nil { return nil, errors.Wrapf(err, "Failed to get PVC, PVC name: %s, namespace: %s", name, namespace) } @@ -183,7 +183,7 @@ func getPVCInfo(ctx context.Context, kubeCli kubernetes.Interface, namespace str if pvName == "" { return nil, errors.Errorf("PVC %s in namespace %s not bound", name, namespace) } - pv, err := kubeCli.CoreV1().PersistentVolumes().Get(pvName, metav1.GetOptions{}) + pv, err := kubeCli.CoreV1().PersistentVolumes().Get(ctx, pvName, metav1.GetOptions{}) if err != nil { return nil, errors.Wrapf(err, "Failed to get PV %s, namespace: %s", pvName, namespace) } diff --git a/pkg/function/create_volume_snapshot_test.go b/pkg/function/create_volume_snapshot_test.go index 41c70ff8ec7..6bf5bb0cfbf 100644 --- a/pkg/function/create_volume_snapshot_test.go +++ b/pkg/function/create_volume_snapshot_test.go @@ -18,7 +18,7 @@ import ( "context" . "gopkg.in/check.v1" - "k8s.io/api/core/v1" + v1 "k8s.io/api/core/v1" k8sresource "k8s.io/apimachinery/pkg/api/resource" metav1 "k8s.io/apimachinery/pkg/apis/meta/v1" "k8s.io/client-go/kubernetes/fake" @@ -129,9 +129,9 @@ func (s *CreateVolumeSnapshotTestSuite) TestGetPVCInfo(c *C) { }, }, ) - _, err := cli.CoreV1().PersistentVolumeClaims(ns).Get("pvc-test-1", metav1.GetOptions{}) + _, err := cli.CoreV1().PersistentVolumeClaims(ns).Get(ctx, "pvc-test-1", metav1.GetOptions{}) c.Assert(err, IsNil) - _, err = cli.CoreV1().PersistentVolumes().Get("pv-test-1", metav1.GetOptions{}) + _, err = cli.CoreV1().PersistentVolumes().Get(ctx, "pv-test-1", metav1.GetOptions{}) c.Assert(err, IsNil) for _, tc := range []struct { diff --git a/pkg/function/data_test.go b/pkg/function/data_test.go index c14ea7628fb..aa2aab3983c 100644 --- a/pkg/function/data_test.go +++ b/pkg/function/data_test.go @@ -76,16 +76,16 @@ func (s *DataSuite) SetUpSuite(c *C) { ns := testutil.NewTestNamespace() ns.GenerateName = "kanister-datatest-" - cns, err := s.cli.CoreV1().Namespaces().Create(ns) + cns, err := s.cli.CoreV1().Namespaces().Create(context.TODO(), ns, metav1.CreateOptions{}) c.Assert(err, IsNil) s.namespace = cns.GetName() sec := testutil.NewTestProfileSecret() - sec, err = s.cli.CoreV1().Secrets(s.namespace).Create(sec) + sec, err = s.cli.CoreV1().Secrets(s.namespace).Create(context.TODO(), sec, metav1.CreateOptions{}) c.Assert(err, IsNil) p := testutil.NewTestProfile(s.namespace, sec.GetName()) - _, err = s.crCli.CrV1alpha1().Profiles(s.namespace).Create(p) + _, err = s.crCli.CrV1alpha1().Profiles(s.namespace).Create(context.TODO(), p, metav1.CreateOptions{}) c.Assert(err, IsNil) var location crv1alpha1.Location @@ -116,7 +116,7 @@ func (s *DataSuite) TearDownSuite(c *C) { c.Assert(err, IsNil) } if s.namespace != "" { - _ = s.cli.CoreV1().Namespaces().Delete(s.namespace, nil) + _ = s.cli.CoreV1().Namespaces().Delete(ctx, s.namespace, metav1.DeleteOptions{}) } } @@ -302,7 +302,7 @@ func newDeleteDataAllBlueprint() *crv1alpha1.Blueprint { func (s *DataSuite) getTemplateParamsAndPVCName(c *C, replicas int32) (*param.TemplateParams, []string) { ctx := context.Background() - ss, err := s.cli.AppsV1().StatefulSets(s.namespace).Create(testutil.NewTestStatefulSet(replicas)) + ss, err := s.cli.AppsV1().StatefulSets(s.namespace).Create(context.TODO(), testutil.NewTestStatefulSet(replicas), metav1.CreateOptions{}) c.Assert(err, IsNil) err = kube.WaitOnStatefulSetReady(ctx, s.cli, ss.GetNamespace(), ss.GetName()) c.Assert(err, IsNil) @@ -310,7 +310,7 @@ func (s *DataSuite) getTemplateParamsAndPVCName(c *C, replicas int32) (*param.Te var i int32 for i = 0; i < replicas; i++ { pvc := testutil.NewTestPVC() - pvc, err = s.cli.CoreV1().PersistentVolumeClaims(s.namespace).Create(pvc) + pvc, err = s.cli.CoreV1().PersistentVolumeClaims(s.namespace).Create(context.TODO(), pvc, metav1.CreateOptions{}) c.Assert(err, IsNil) pvcs = append(pvcs, pvc.GetName()) } @@ -325,7 +325,7 @@ func (s *DataSuite) getTemplateParamsAndPVCName(c *C, replicas int32) (*param.Te "password": "myPassword", }, } - secret, err = s.cli.CoreV1().Secrets(s.namespace).Create(secret) + secret, err = s.cli.CoreV1().Secrets(s.namespace).Create(context.TODO(), secret, metav1.CreateOptions{}) c.Assert(err, IsNil) as := crv1alpha1.ActionSpec{ @@ -522,7 +522,7 @@ func newCopyDataTestBlueprint() crv1alpha1.Blueprint { } func (s *DataSuite) TestCopyData(c *C) { pvcSpec := testutil.NewTestPVC() - pvc, err := s.cli.CoreV1().PersistentVolumeClaims(s.namespace).Create(pvcSpec) + pvc, err := s.cli.CoreV1().PersistentVolumeClaims(s.namespace).Create(context.TODO(), pvcSpec, metav1.CreateOptions{}) c.Assert(err, IsNil) tp := s.initPVCTemplateParams(c, pvc, nil) bp := newCopyDataTestBlueprint() @@ -546,7 +546,7 @@ func (s *DataSuite) TestCopyData(c *C) { } // Create a new PVC - pvc2, err := s.cli.CoreV1().PersistentVolumeClaims(s.namespace).Create(pvcSpec) + pvc2, err := s.cli.CoreV1().PersistentVolumeClaims(s.namespace).Create(context.TODO(), pvcSpec, metav1.CreateOptions{}) c.Assert(err, IsNil) tp = s.initPVCTemplateParams(c, pvc2, options) // Restore data from copy diff --git a/pkg/function/e2e_volume_snapshot_test.go b/pkg/function/e2e_volume_snapshot_test.go index c875cc35669..dbdf18656d2 100644 --- a/pkg/function/e2e_volume_snapshot_test.go +++ b/pkg/function/e2e_volume_snapshot_test.go @@ -76,12 +76,12 @@ func (s *VolumeSnapshotTestSuite) SetUpTest(c *C) { ns := testutil.NewTestNamespace() - cns, err := s.cli.CoreV1().Namespaces().Create(ns) + cns, err := s.cli.CoreV1().Namespaces().Create(context.TODO(), ns, metav1.CreateOptions{}) c.Assert(err, IsNil) s.namespace = cns.GetName() ctx := context.Background() - ss, err := s.cli.AppsV1().StatefulSets(s.namespace).Create(newStatefulSet(s.namespace)) + ss, err := s.cli.AppsV1().StatefulSets(s.namespace).Create(ctx, newStatefulSet(s.namespace), metav1.CreateOptions{}) c.Assert(err, IsNil) err = kube.WaitOnStatefulSetReady(ctx, s.cli, ss.GetNamespace(), ss.GetName()) c.Assert(err, IsNil) @@ -98,11 +98,11 @@ func (s *VolumeSnapshotTestSuite) SetUpTest(c *C) { } sec := NewTestProfileSecret(id, secret) - sec, err = s.cli.CoreV1().Secrets(s.namespace).Create(sec) + sec, err = s.cli.CoreV1().Secrets(s.namespace).Create(ctx, sec, metav1.CreateOptions{}) c.Assert(err, IsNil) p := NewTestProfile(s.namespace, sec.GetName(), locationType) - _, err = s.crCli.CrV1alpha1().Profiles(s.namespace).Create(p) + _, err = s.crCli.CrV1alpha1().Profiles(s.namespace).Create(ctx, p, metav1.CreateOptions{}) c.Assert(err, IsNil) as := crv1alpha1.ActionSpec{ @@ -167,7 +167,7 @@ func NewTestProfile(namespace string, secretName string, locationType crv1alpha1 func (s *VolumeSnapshotTestSuite) TearDownTest(c *C) { if s.namespace != "" { - _ = s.cli.CoreV1().Namespaces().Delete(s.namespace, nil) + _ = s.cli.CoreV1().Namespaces().Delete(context.TODO(), s.namespace, metav1.DeleteOptions{}) } } @@ -332,12 +332,12 @@ func (s *VolumeSnapshotTestSuite) TestVolumeSnapshot(c *C) { } func (s *VolumeSnapshotTestSuite) getCreds(c *C, cli kubernetes.Interface, namespace string, pvcname string) (string, string, crv1alpha1.LocationType, error) { - pvc, err := cli.CoreV1().PersistentVolumeClaims(namespace).Get(pvcname, metav1.GetOptions{}) + pvc, err := cli.CoreV1().PersistentVolumeClaims(namespace).Get(context.TODO(), pvcname, metav1.GetOptions{}) if err != nil { return "", "", "", err } pvName := pvc.Spec.VolumeName - pv, err := cli.CoreV1().PersistentVolumes().Get(pvName, metav1.GetOptions{}) + pv, err := cli.CoreV1().PersistentVolumes().Get(context.TODO(), pvName, metav1.GetOptions{}) if err != nil { return "", "", "", err } diff --git a/pkg/function/kube_exec_all_test.go b/pkg/function/kube_exec_all_test.go index 855e10cfef7..8024af14121 100644 --- a/pkg/function/kube_exec_all_test.go +++ b/pkg/function/kube_exec_all_test.go @@ -67,22 +67,22 @@ func (s *KubeExecAllTest) SetUpSuite(c *C) { GenerateName: "kubeexecall-", }, } - cns, err := s.cli.CoreV1().Namespaces().Create(ns) + cns, err := s.cli.CoreV1().Namespaces().Create(context.TODO(), ns, metav1.CreateOptions{}) c.Assert(err, IsNil) s.namespace = cns.Name sec := testutil.NewTestProfileSecret() - sec, err = s.cli.CoreV1().Secrets(s.namespace).Create(sec) + sec, err = s.cli.CoreV1().Secrets(s.namespace).Create(context.TODO(), sec, metav1.CreateOptions{}) c.Assert(err, IsNil) p := testutil.NewTestProfile(s.namespace, sec.GetName()) - _, err = s.crCli.CrV1alpha1().Profiles(s.namespace).Create(p) + _, err = s.crCli.CrV1alpha1().Profiles(s.namespace).Create(context.TODO(), p, metav1.CreateOptions{}) c.Assert(err, IsNil) } func (s *KubeExecAllTest) TearDownSuite(c *C) { if s.namespace != "" { - _ = s.cli.CoreV1().Namespaces().Delete(s.namespace, nil) + _ = s.cli.CoreV1().Namespaces().Delete(context.TODO(), s.namespace, metav1.DeleteOptions{}) } } @@ -111,7 +111,7 @@ func newExecAllBlueprint(kind string) *crv1alpha1.Blueprint { func (s *KubeExecAllTest) TestKubeExecAllDeployment(c *C) { ctx := context.Background() d := testutil.NewTestDeployment(1) - d, err := s.cli.AppsV1().Deployments(s.namespace).Create(d) + d, err := s.cli.AppsV1().Deployments(s.namespace).Create(context.TODO(), d, metav1.CreateOptions{}) c.Assert(err, IsNil) err = kube.WaitOnDeploymentReady(ctx, s.cli, d.Namespace, d.Name) @@ -145,7 +145,7 @@ func (s *KubeExecAllTest) TestKubeExecAllDeployment(c *C) { func (s *KubeExecAllTest) TestKubeExecAllStatefulSet(c *C) { ctx := context.Background() ss := testutil.NewTestStatefulSet(1) - ss, err := s.cli.AppsV1().StatefulSets(s.namespace).Create(ss) + ss, err := s.cli.AppsV1().StatefulSets(s.namespace).Create(context.TODO(), ss, metav1.CreateOptions{}) c.Assert(err, IsNil) err = kube.WaitOnStatefulSetReady(ctx, s.cli, ss.Namespace, ss.Name) diff --git a/pkg/function/kube_exec_test.go b/pkg/function/kube_exec_test.go index 6c4240414f2..71a22b5274a 100644 --- a/pkg/function/kube_exec_test.go +++ b/pkg/function/kube_exec_test.go @@ -68,22 +68,22 @@ func (s *KubeExecTest) SetUpSuite(c *C) { GenerateName: "kanisterkubeexectest-", }, } - cns, err := s.cli.CoreV1().Namespaces().Create(ns) + cns, err := s.cli.CoreV1().Namespaces().Create(context.TODO(), ns, metav1.CreateOptions{}) c.Assert(err, IsNil) s.namespace = cns.Name sec := testutil.NewTestProfileSecret() - sec, err = s.cli.CoreV1().Secrets(s.namespace).Create(sec) + sec, err = s.cli.CoreV1().Secrets(s.namespace).Create(context.TODO(), sec, metav1.CreateOptions{}) c.Assert(err, IsNil) p := testutil.NewTestProfile(s.namespace, sec.GetName()) - _, err = s.crCli.CrV1alpha1().Profiles(s.namespace).Create(p) + _, err = s.crCli.CrV1alpha1().Profiles(s.namespace).Create(context.TODO(), p, metav1.CreateOptions{}) c.Assert(err, IsNil) } func (s *KubeExecTest) TearDownSuite(c *C) { if s.namespace != "" { - _ = s.cli.CoreV1().Namespaces().Delete(s.namespace, nil) + _ = s.cli.CoreV1().Namespaces().Delete(context.TODO(), s.namespace, metav1.DeleteOptions{}) } } diff --git a/pkg/function/kube_task_test.go b/pkg/function/kube_task_test.go index cfeb7ea5cdb..6869e766c3f 100644 --- a/pkg/function/kube_task_test.go +++ b/pkg/function/kube_task_test.go @@ -47,7 +47,7 @@ func (s *KubeTaskSuite) SetUpSuite(c *C) { GenerateName: "kanisterkubetasktest-", }, } - cns, err := s.cli.CoreV1().Namespaces().Create(ns) + cns, err := s.cli.CoreV1().Namespaces().Create(context.TODO(), ns, metav1.CreateOptions{}) c.Assert(err, IsNil) s.namespace = cns.Name os.Setenv("POD_NAMESPACE", cns.Name) @@ -56,7 +56,7 @@ func (s *KubeTaskSuite) SetUpSuite(c *C) { func (s *KubeTaskSuite) TearDownSuite(c *C) { if s.namespace != "" { - _ = s.cli.CoreV1().Namespaces().Delete(s.namespace, nil) + _ = s.cli.CoreV1().Namespaces().Delete(context.TODO(), s.namespace, metav1.DeleteOptions{}) } } diff --git a/pkg/function/prepare_data.go b/pkg/function/prepare_data.go index 1267886ddc6..5b2f606e464 100644 --- a/pkg/function/prepare_data.go +++ b/pkg/function/prepare_data.go @@ -80,7 +80,7 @@ func getVolumes(tp param.TemplateParams) (map[string]string, error) { func prepareData(ctx context.Context, cli kubernetes.Interface, namespace, serviceAccount, image string, vols map[string]string, podOverride crv1alpha1.JSONMap, command ...string) (map[string]interface{}, error) { // Validate volumes for pvc := range vols { - if _, err := cli.CoreV1().PersistentVolumeClaims(namespace).Get(pvc, metav1.GetOptions{}); err != nil { + if _, err := cli.CoreV1().PersistentVolumeClaims(namespace).Get(ctx, pvc, metav1.GetOptions{}); err != nil { return nil, errors.Wrapf(err, "Failed to retrieve PVC. Namespace %s, Name %s", namespace, pvc) } } diff --git a/pkg/function/prepare_data_test.go b/pkg/function/prepare_data_test.go index edcded5a7d9..625bc4aec10 100644 --- a/pkg/function/prepare_data_test.go +++ b/pkg/function/prepare_data_test.go @@ -52,14 +52,14 @@ func (s *PrepareDataSuite) SetUpSuite(c *C) { GenerateName: "preparedatatest-", }, } - cns, err := s.cli.CoreV1().Namespaces().Create(ns) + cns, err := s.cli.CoreV1().Namespaces().Create(context.TODO(), ns, metav1.CreateOptions{}) c.Assert(err, IsNil) s.namespace = cns.Name } func (s *PrepareDataSuite) TearDownSuite(c *C) { if s.namespace != "" { - _ = s.cli.CoreV1().Namespaces().Delete(s.namespace, nil) + _ = s.cli.CoreV1().Namespaces().Delete(context.TODO(), s.namespace, metav1.DeleteOptions{}) } } @@ -116,7 +116,7 @@ func newPrepareDataBlueprint(kind, pvc string) *crv1alpha1.Blueprint { func (s *PrepareDataSuite) TestPrepareData(c *C) { pvc := testutil.NewTestPVC() - createdPVC, err := s.cli.CoreV1().PersistentVolumeClaims(s.namespace).Create(pvc) + createdPVC, err := s.cli.CoreV1().PersistentVolumeClaims(s.namespace).Create(context.TODO(), pvc, metav1.CreateOptions{}) c.Assert(err, IsNil) ctx := context.Background() diff --git a/pkg/function/restore_data.go b/pkg/function/restore_data.go index 72f7f6aa697..2b3d2ddeecf 100644 --- a/pkg/function/restore_data.go +++ b/pkg/function/restore_data.go @@ -112,7 +112,7 @@ func restoreData(ctx context.Context, cli kubernetes.Interface, tp param.Templat vols map[string]string, podOverride crv1alpha1.JSONMap) (map[string]interface{}, error) { // Validate volumes for pvc := range vols { - if _, err := cli.CoreV1().PersistentVolumeClaims(namespace).Get(pvc, metav1.GetOptions{}); err != nil { + if _, err := cli.CoreV1().PersistentVolumeClaims(namespace).Get(ctx, pvc, metav1.GetOptions{}); err != nil { return nil, errors.Wrapf(err, "Failed to retrieve PVC. Namespace %s, Name %s", namespace, pvc) } } diff --git a/pkg/function/scale_test.go b/pkg/function/scale_test.go index e6d86a3b812..64bfeab1917 100644 --- a/pkg/function/scale_test.go +++ b/pkg/function/scale_test.go @@ -66,22 +66,22 @@ func (s *ScaleSuite) SetUpTest(c *C) { GenerateName: "kanister-scale-test-", }, } - cns, err := s.cli.CoreV1().Namespaces().Create(ns) + cns, err := s.cli.CoreV1().Namespaces().Create(context.TODO(), ns, metav1.CreateOptions{}) c.Assert(err, IsNil) s.namespace = cns.Name sec := testutil.NewTestProfileSecret() - sec, err = s.cli.CoreV1().Secrets(s.namespace).Create(sec) + sec, err = s.cli.CoreV1().Secrets(s.namespace).Create(context.TODO(), sec, metav1.CreateOptions{}) c.Assert(err, IsNil) p := testutil.NewTestProfile(s.namespace, sec.GetName()) - _, err = crCli.CrV1alpha1().Profiles(s.namespace).Create(p) + _, err = crCli.CrV1alpha1().Profiles(s.namespace).Create(context.TODO(), p, metav1.CreateOptions{}) c.Assert(err, IsNil) } func (s *ScaleSuite) TearDownTest(c *C) { if s.namespace != "" { - _ = s.cli.CoreV1().Namespaces().Delete(s.namespace, nil) + _ = s.cli.CoreV1().Namespaces().Delete(context.TODO(), s.namespace, metav1.DeleteOptions{}) } } @@ -142,7 +142,7 @@ func (s *ScaleSuite) TestScaleDeployment(c *C) { }, } - d, err := s.cli.AppsV1().Deployments(s.namespace).Create(d) + d, err := s.cli.AppsV1().Deployments(s.namespace).Create(ctx, d, metav1.CreateOptions{}) c.Assert(err, IsNil) err = kube.WaitOnDeploymentReady(ctx, s.cli, d.GetNamespace(), d.GetName()) @@ -175,7 +175,7 @@ func (s *ScaleSuite) TestScaleDeployment(c *C) { c.Assert(ok, Equals, true) } - pods, err := s.cli.CoreV1().Pods(s.namespace).List(metav1.ListOptions{}) + pods, err := s.cli.CoreV1().Pods(s.namespace).List(context.TODO(), metav1.ListOptions{}) c.Assert(err, IsNil) c.Assert(pods.Items, HasLen, 0) } @@ -190,7 +190,7 @@ func (s *ScaleSuite) TestScaleStatefulSet(c *C) { }, }, } - ss, err := s.cli.AppsV1().StatefulSets(s.namespace).Create(ss) + ss, err := s.cli.AppsV1().StatefulSets(s.namespace).Create(ctx, ss, metav1.CreateOptions{}) c.Assert(err, IsNil) err = kube.WaitOnStatefulSetReady(ctx, s.cli, ss.GetNamespace(), ss.GetName()) @@ -224,7 +224,7 @@ func (s *ScaleSuite) TestScaleStatefulSet(c *C) { c.Assert(ok, Equals, true) } - pods, err := s.cli.CoreV1().Pods(s.namespace).List(metav1.ListOptions{}) + pods, err := s.cli.CoreV1().Pods(s.namespace).List(context.TODO(), metav1.ListOptions{}) c.Assert(err, IsNil) // This check can flake on underprovisioned clusters so we exit early. diff --git a/pkg/function/utils.go b/pkg/function/utils.go index 8610677baf8..1cbe3dce295 100644 --- a/pkg/function/utils.go +++ b/pkg/function/utils.go @@ -180,10 +180,10 @@ func createPostgresSecret(cli kubernetes.Interface, name, namespace, username, p "password": []byte(password), }, } - _, err := cli.CoreV1().Secrets(namespace).Create(secret) + _, err := cli.CoreV1().Secrets(namespace).Create(context.TODO(), secret, metav1.CreateOptions{}) return err } func deletePostgresSecret(cli kubernetes.Interface, name, namespace string) error { - return cli.CoreV1().Secrets(namespace).Delete(name, &metav1.DeleteOptions{}) + return cli.CoreV1().Secrets(namespace).Delete(context.TODO(), name, metav1.DeleteOptions{}) } diff --git a/pkg/kanctl/actionset.go b/pkg/kanctl/actionset.go index 3390687382f..24e14ac69bb 100644 --- a/pkg/kanctl/actionset.go +++ b/pkg/kanctl/actionset.go @@ -124,7 +124,7 @@ func perform(ctx context.Context, crCli versioned.Interface, params *PerformPara switch { case params.ParentName != "": - pas, err = crCli.CrV1alpha1().ActionSets(params.Namespace).Get(params.ParentName, metav1.GetOptions{}) + pas, err = crCli.CrV1alpha1().ActionSets(params.Namespace).Get(ctx, params.ParentName, metav1.GetOptions{}) if err != nil { return err } @@ -233,7 +233,7 @@ func ChildActionSet(parent *crv1alpha1.ActionSet, params *PerformParams) (*crv1a } func createActionSet(ctx context.Context, crCli versioned.Interface, namespace string, as *crv1alpha1.ActionSet) error { - as, err := crCli.CrV1alpha1().ActionSets(namespace).Create(as) + as, err := crCli.CrV1alpha1().ActionSets(namespace).Create(ctx, as, metav1.CreateOptions{}) if err == nil { fmt.Printf("actionset %s created\n", as.Name) } @@ -457,7 +457,7 @@ func parseObjectsFromSelector(selector, kind, sns string, cli kubernetes.Interfa case "all": fallthrough case param.DeploymentKind: - dpts, err := cli.AppsV1().Deployments(sns).List(metav1.ListOptions{LabelSelector: selector}) + dpts, err := cli.AppsV1().Deployments(sns).List(context.TODO(), metav1.ListOptions{LabelSelector: selector}) if err != nil { return nil, errors.Errorf("failed to get deployments using selector '%s' in namespace '%s'", selector, sns) } @@ -470,7 +470,7 @@ func parseObjectsFromSelector(selector, kind, sns string, cli kubernetes.Interfa fallthrough case param.DeploymentConfigKind: // use open shift SDK to get the deployment config resource - dcs, err := osCli.AppsV1().DeploymentConfigs(sns).List(metav1.ListOptions{LabelSelector: selector}) + dcs, err := osCli.AppsV1().DeploymentConfigs(sns).List(context.TODO(), metav1.ListOptions{LabelSelector: selector}) if err != nil { return nil, errors.Wrapf(err, "failed to get deploymentconfig using select '%s' in namespaces '%s'", selector, sns) } @@ -482,7 +482,7 @@ func parseObjectsFromSelector(selector, kind, sns string, cli kubernetes.Interfa } fallthrough case param.StatefulSetKind: - ss, err := cli.AppsV1().StatefulSets(sns).List(metav1.ListOptions{LabelSelector: selector}) + ss, err := cli.AppsV1().StatefulSets(sns).List(context.TODO(), metav1.ListOptions{LabelSelector: selector}) if err != nil { return nil, errors.Errorf("failed to get statefulsets using selector '%s' in namespace '%s'", selector, sns) } @@ -494,7 +494,7 @@ func parseObjectsFromSelector(selector, kind, sns string, cli kubernetes.Interfa } fallthrough case param.PVCKind: - pvcs, err := cli.CoreV1().PersistentVolumeClaims(sns).List(metav1.ListOptions{LabelSelector: selector}) + pvcs, err := cli.CoreV1().PersistentVolumeClaims(sns).List(context.TODO(), metav1.ListOptions{LabelSelector: selector}) if err != nil { return nil, errors.Errorf("failed to get pvcs using selector '%s' in namespace '%s'", selector, sns) } @@ -502,7 +502,7 @@ func parseObjectsFromSelector(selector, kind, sns string, cli kubernetes.Interfa appendObj(param.PVCKind, pvc.Namespace, pvc.Name) } case param.NamespaceKind: - namespaces, err := cli.CoreV1().Namespaces().List(metav1.ListOptions{LabelSelector: selector}) + namespaces, err := cli.CoreV1().Namespaces().List(context.TODO(), metav1.ListOptions{LabelSelector: selector}) if err != nil { return nil, errors.Errorf("failed to get namespaces using selector '%s' '", selector) } @@ -597,7 +597,7 @@ func verifyParams(ctx context.Context, p *PerformParams, cli kubernetes.Interfac go func() { defer wg.Done() if p.Blueprint != "" { - _, err := crCli.CrV1alpha1().Blueprints(p.Namespace).Get(p.Blueprint, metav1.GetOptions{}) + _, err := crCli.CrV1alpha1().Blueprints(p.Namespace).Get(ctx, p.Blueprint, metav1.GetOptions{}) if err != nil { msgs <- errors.Wrapf(err, notFoundTmpl, "blueprint", p.Blueprint, p.Namespace) } @@ -608,7 +608,7 @@ func verifyParams(ctx context.Context, p *PerformParams, cli kubernetes.Interfac go func() { defer wg.Done() if p.Profile != nil { - _, err := crCli.CrV1alpha1().Profiles(p.Profile.Namespace).Get(p.Profile.Name, metav1.GetOptions{}) + _, err := crCli.CrV1alpha1().Profiles(p.Profile.Namespace).Get(ctx, p.Profile.Name, metav1.GetOptions{}) if err != nil { msgs <- errors.Wrapf(err, notFoundTmpl, "profile", p.Profile.Name, p.Profile.Namespace) } @@ -622,16 +622,16 @@ func verifyParams(ctx context.Context, p *PerformParams, cli kubernetes.Interfac for _, obj := range p.Objects { switch obj.Kind { case param.DeploymentKind: - _, err = cli.AppsV1().Deployments(obj.Namespace).Get(obj.Name, metav1.GetOptions{}) + _, err = cli.AppsV1().Deployments(obj.Namespace).Get(ctx, obj.Name, metav1.GetOptions{}) case param.StatefulSetKind: - _, err = cli.AppsV1().StatefulSets(obj.Namespace).Get(obj.Name, metav1.GetOptions{}) + _, err = cli.AppsV1().StatefulSets(obj.Namespace).Get(ctx, obj.Name, metav1.GetOptions{}) case param.DeploymentConfigKind: // use open shift client to get the deployment config resource - _, err = osCli.AppsV1().DeploymentConfigs(obj.Namespace).Get(obj.Name, metav1.GetOptions{}) + _, err = osCli.AppsV1().DeploymentConfigs(obj.Namespace).Get(ctx, obj.Name, metav1.GetOptions{}) case param.PVCKind: - _, err = cli.CoreV1().PersistentVolumeClaims(obj.Namespace).Get(obj.Name, metav1.GetOptions{}) + _, err = cli.CoreV1().PersistentVolumeClaims(obj.Namespace).Get(ctx, obj.Name, metav1.GetOptions{}) case param.NamespaceKind: - _, err = cli.CoreV1().Namespaces().Get(obj.Name, metav1.GetOptions{}) + _, err = cli.CoreV1().Namespaces().Get(ctx, obj.Name, metav1.GetOptions{}) default: gvr := schema.GroupVersionResource{ Group: obj.Group, @@ -650,7 +650,7 @@ func verifyParams(ctx context.Context, p *PerformParams, cli kubernetes.Interfac go func() { defer wg.Done() for _, cm := range p.ConfigMaps { - _, err := cli.CoreV1().ConfigMaps(cm.Namespace).Get(cm.Name, metav1.GetOptions{}) + _, err := cli.CoreV1().ConfigMaps(cm.Namespace).Get(ctx, cm.Name, metav1.GetOptions{}) if err != nil { msgs <- errors.Wrapf(err, notFoundTmpl, "config map", cm.Name, cm.Namespace) } @@ -661,7 +661,7 @@ func verifyParams(ctx context.Context, p *PerformParams, cli kubernetes.Interfac go func() { defer wg.Done() for _, secret := range p.Secrets { - _, err := cli.CoreV1().Secrets(secret.Namespace).Get(secret.Name, metav1.GetOptions{}) + _, err := cli.CoreV1().Secrets(secret.Namespace).Get(ctx, secret.Name, metav1.GetOptions{}) if err != nil { msgs <- errors.Wrapf(err, notFoundTmpl, "secret", secret.Name, secret.Namespace) } diff --git a/pkg/kanctl/profile.go b/pkg/kanctl/profile.go index 63fcf647642..9732dddcc34 100644 --- a/pkg/kanctl/profile.go +++ b/pkg/kanctl/profile.go @@ -317,7 +317,7 @@ func constructSecret(ctx context.Context, lP *locationParams, cmd *cobra.Command } func createSecret(ctx context.Context, s *v1.Secret, cli kubernetes.Interface) (*v1.Secret, error) { - secret, err := cli.CoreV1().Secrets(s.GetNamespace()).Create(s) + secret, err := cli.CoreV1().Secrets(s.GetNamespace()).Create(ctx, s, metav1.CreateOptions{}) if err != nil { return nil, err } @@ -326,7 +326,7 @@ func createSecret(ctx context.Context, s *v1.Secret, cli kubernetes.Interface) ( } func deleteSecret(ctx context.Context, secret *v1.Secret, cli kubernetes.Interface) error { - err := cli.CoreV1().Secrets(secret.GetNamespace()).Delete(secret.GetName(), &metav1.DeleteOptions{}) + err := cli.CoreV1().Secrets(secret.GetNamespace()).Delete(ctx, secret.GetName(), metav1.DeleteOptions{}) if err == nil { fmt.Printf("secret '%s' deleted\n", secret.GetName()) } @@ -360,7 +360,7 @@ func printProfile(profile *v1alpha1.Profile) error { } func createProfile(ctx context.Context, profile *v1alpha1.Profile, crCli versioned.Interface) error { - profile, err := crCli.CrV1alpha1().Profiles(profile.GetNamespace()).Create(profile) + profile, err := crCli.CrV1alpha1().Profiles(profile.GetNamespace()).Create(ctx, profile, metav1.CreateOptions{}) if err == nil { fmt.Printf("profile '%s' created\n", profile.GetName()) } @@ -424,7 +424,7 @@ func validateProfile(ctx context.Context, profile *v1alpha1.Profile, cli kuberne func getProfileFromCmd(ctx context.Context, crCli versioned.Interface, p *validateParams) (*v1alpha1.Profile, error) { if p.name != "" { - return crCli.CrV1alpha1().Profiles(p.namespace).Get(p.name, metav1.GetOptions{}) + return crCli.CrV1alpha1().Profiles(p.namespace).Get(ctx, p.name, metav1.GetOptions{}) } return getProfileFromFile(ctx, p.filename) } diff --git a/pkg/kube/exec_test.go b/pkg/kube/exec_test.go index dddbea7af12..409fb0d944a 100644 --- a/pkg/kube/exec_test.go +++ b/pkg/kube/exec_test.go @@ -22,7 +22,7 @@ import ( "time" . "gopkg.in/check.v1" - "k8s.io/api/core/v1" + v1 "k8s.io/api/core/v1" metav1 "k8s.io/apimachinery/pkg/apis/meta/v1" "k8s.io/client-go/kubernetes" ) @@ -44,7 +44,7 @@ func (s *ExecSuite) SetUpSuite(c *C) { GenerateName: "exectest-", }, } - ns, err = s.cli.CoreV1().Namespaces().Create(ns) + ns, err = s.cli.CoreV1().Namespaces().Create(context.TODO(), ns, metav1.CreateOptions{}) c.Assert(err, IsNil) s.namespace = ns.Name pod := &v1.Pod{ @@ -59,18 +59,18 @@ func (s *ExecSuite) SetUpSuite(c *C) { }, }, } - s.pod, err = s.cli.CoreV1().Pods(s.namespace).Create(pod) + s.pod, err = s.cli.CoreV1().Pods(s.namespace).Create(context.TODO(), pod, metav1.CreateOptions{}) c.Assert(err, IsNil) ctx, cancel := context.WithTimeout(context.Background(), 5*time.Minute) defer cancel() c.Assert(WaitForPodReady(ctx, s.cli, s.namespace, s.pod.Name), IsNil) - s.pod, err = s.cli.CoreV1().Pods(s.namespace).Get(s.pod.Name, metav1.GetOptions{}) + s.pod, err = s.cli.CoreV1().Pods(s.namespace).Get(ctx, s.pod.Name, metav1.GetOptions{}) c.Assert(err, IsNil) } func (s *ExecSuite) TearDownSuite(c *C) { if s.namespace != "" { - err := s.cli.CoreV1().Namespaces().Delete(s.namespace, nil) + err := s.cli.CoreV1().Namespaces().Delete(context.TODO(), s.namespace, metav1.DeleteOptions{}) c.Assert(err, IsNil) } } diff --git a/pkg/kube/job.go b/pkg/kube/job.go index 1c4b9d1091a..4443a280f4c 100644 --- a/pkg/kube/job.go +++ b/pkg/kube/job.go @@ -111,7 +111,7 @@ func (job *Job) Create() error { batchClient := job.clientset.BatchV1() jobsClient := batchClient.Jobs(job.namespace) - newJob, err := jobsClient.Create(k8sJob) + newJob, err := jobsClient.Create(context.TODO(), k8sJob, metav1.CreateOptions{}) if err != nil { return errors.Wrapf(err, "Failed to create job %s", job.name) } @@ -144,14 +144,14 @@ func createVolumeSpecs(vols map[string]string) (volumeMounts []v1.VolumeMount, p func (job *Job) WaitForCompletion(ctx context.Context) error { batchClient := job.clientset.BatchV1() jobsClient := batchClient.Jobs(job.namespace) - watch, err := jobsClient.Watch(metav1.ListOptions{LabelSelector: "job-name=" + job.name}) + watch, err := jobsClient.Watch(ctx, metav1.ListOptions{LabelSelector: "job-name=" + job.name}) if err != nil { return errors.Wrap(err, "Failed to create watch object") } // Before getting into the loop of watching events, confirm that the job is actually present // in Kubernetes. - k8sjob, err := jobsClient.Get(job.name, metav1.GetOptions{}) + k8sjob, err := jobsClient.Get(ctx, job.name, metav1.GetOptions{}) if err != nil { return errors.Wrapf(err, "Failed to get job %s", job.name) } @@ -191,7 +191,7 @@ func (job *Job) Delete() error { batchClient := job.clientset.BatchV1() jobsClient := batchClient.Jobs(job.namespace) deletePropagation := metav1.DeletePropagationForeground - err := jobsClient.Delete(job.name, &metav1.DeleteOptions{PropagationPolicy: &deletePropagation}) + err := jobsClient.Delete(context.TODO(), job.name, metav1.DeleteOptions{PropagationPolicy: &deletePropagation}) if err != nil { return errors.Wrapf(err, "Failed to delete job %s", job.name) } diff --git a/pkg/kube/job_test.go b/pkg/kube/job_test.go index b6884b6cfed..2009dd9bcde 100644 --- a/pkg/kube/job_test.go +++ b/pkg/kube/job_test.go @@ -102,7 +102,7 @@ func (s *JobSuite) TestJobsNoCommand(c *C) { func getK8sJobCount(clientset kubernetes.Interface, namespace string, c *C) int { jobsCli := clientset.BatchV1().Jobs(namespace) - list, err := jobsCli.List(metav1.ListOptions{LabelSelector: "job-name=" + testJobName}) + list, err := jobsCli.List(context.TODO(), metav1.ListOptions{LabelSelector: "job-name=" + testJobName}) c.Assert(err, IsNil) return len(list.Items) @@ -204,7 +204,7 @@ func (s *JobSuite) TestJobsWaitAfterDelete(c *C) { _ = job.Delete() lo := metav1.ListOptions{LabelSelector: "job-name=" + testJobName} - jl, err := clientset.BatchV1().Jobs(testJobNamespace).List(lo) + jl, err := clientset.BatchV1().Jobs(testJobNamespace).List(context.TODO(), lo) c.Assert(err, IsNil) for _, j := range jl.Items { c.Assert(j.GetDeletionTimestamp(), NotNil) diff --git a/pkg/kube/log_reader.go b/pkg/kube/log_reader.go index f4f75095adc..515fac425db 100644 --- a/pkg/kube/log_reader.go +++ b/pkg/kube/log_reader.go @@ -1,6 +1,7 @@ package kube import ( + "context" "io" "k8s.io/client-go/rest" @@ -25,7 +26,7 @@ type logReader struct { func (lr *logReader) Read(p []byte) (n int, err error) { if lr.rc == nil { - lr.rc, lr.err = lr.rw.Stream() + lr.rc, lr.err = lr.rw.Stream(context.TODO()) } if lr.err != nil { return 0, lr.err diff --git a/pkg/kube/log_reader_test.go b/pkg/kube/log_reader_test.go index e4722dfaf5c..bd502a3da11 100644 --- a/pkg/kube/log_reader_test.go +++ b/pkg/kube/log_reader_test.go @@ -2,6 +2,7 @@ package kube import ( "bytes" + "context" "fmt" "io" "io/ioutil" @@ -31,10 +32,10 @@ type fakeResponseWrapper struct { buf *bytes.Buffer } -func (frw *fakeResponseWrapper) DoRaw() ([]byte, error) { +func (frw *fakeResponseWrapper) DoRaw(context.Context) ([]byte, error) { return nil, nil } -func (frw *fakeResponseWrapper) Stream() (io.ReadCloser, error) { +func (frw *fakeResponseWrapper) Stream(context.Context) (io.ReadCloser, error) { return buffer{frw.buf}, frw.err } diff --git a/pkg/kube/pod.go b/pkg/kube/pod.go index 2656bae8893..02dca42490a 100644 --- a/pkg/kube/pod.go +++ b/pkg/kube/pod.go @@ -23,7 +23,7 @@ import ( json "github.com/json-iterator/go" "github.com/pkg/errors" - "k8s.io/api/core/v1" + v1 "k8s.io/api/core/v1" apierrors "k8s.io/apimachinery/pkg/api/errors" metav1 "k8s.io/apimachinery/pkg/apis/meta/v1" sp "k8s.io/apimachinery/pkg/util/strategicpatch" @@ -105,7 +105,7 @@ func CreatePod(ctx context.Context, cli kubernetes.Interface, opts *PodOptions) }, Spec: patchedSpecs, } - pod, err = cli.CoreV1().Pods(ns).Create(pod) + pod, err = cli.CoreV1().Pods(ns).Create(ctx, pod, metav1.CreateOptions{}) if err != nil { return nil, errors.Wrapf(err, "Failed to create pod. Namespace: %s, NameFmt: %s", ns, opts.GenerateName) } @@ -114,7 +114,7 @@ func CreatePod(ctx context.Context, cli kubernetes.Interface, opts *PodOptions) // DeletePod deletes the specified pod func DeletePod(ctx context.Context, cli kubernetes.Interface, pod *v1.Pod) error { - if err := cli.CoreV1().Pods(pod.Namespace).Delete(pod.Name, nil); err != nil { + if err := cli.CoreV1().Pods(pod.Namespace).Delete(ctx, pod.Name, metav1.DeleteOptions{}); err != nil { log.WithError(err).Print("DeletePod failed") } return nil @@ -124,12 +124,12 @@ func StreamPodLogs(ctx context.Context, cli kubernetes.Interface, namespace, nam plo := &v1.PodLogOptions{ Follow: true, } - return cli.CoreV1().Pods(namespace).GetLogs(name, plo).Stream() + return cli.CoreV1().Pods(namespace).GetLogs(name, plo).Stream(ctx) } // GetPodLogs fetches the logs from the given pod func GetPodLogs(ctx context.Context, cli kubernetes.Interface, namespace, name string) (string, error) { - reader, err := cli.CoreV1().Pods(namespace).GetLogs(name, &v1.PodLogOptions{}).Stream() + reader, err := cli.CoreV1().Pods(namespace).GetLogs(name, &v1.PodLogOptions{}).Stream(ctx) if err != nil { return "", err } @@ -146,7 +146,7 @@ func WaitForPodReady(ctx context.Context, cli kubernetes.Interface, namespace, n timeoutCtx, waitCancel := context.WithTimeout(ctx, podReadyWaitTimeout) defer waitCancel() err := poll.Wait(timeoutCtx, func(ctx context.Context) (bool, error) { - p, err := cli.CoreV1().Pods(namespace).Get(name, metav1.GetOptions{}) + p, err := cli.CoreV1().Pods(namespace).Get(ctx, name, metav1.GetOptions{}) if err != nil { return false, err } @@ -177,7 +177,7 @@ func WaitForPodReady(ctx context.Context, cli kubernetes.Interface, namespace, n func checkNodesStatus(p *v1.Pod, cli kubernetes.Interface) error { n := strings.Split(p.Spec.NodeName, "/") if n[0] != "" { - node, err := cli.CoreV1().Nodes().Get(n[0], metav1.GetOptions{}) + node, err := cli.CoreV1().Nodes().Get(context.TODO(), n[0], metav1.GetOptions{}) if err != nil { return errors.Wrapf(err, "%s %s", errAccessingNode, n[0]) } @@ -211,7 +211,7 @@ func checkPVCAndPVStatus(vol v1.Volume, p *v1.Pod, cli kubernetes.Interface, nam return nil } pvcName := vol.VolumeSource.PersistentVolumeClaim.ClaimName - pvc, err := cli.CoreV1().PersistentVolumeClaims(namespace).Get(pvcName, metav1.GetOptions{}) + pvc, err := cli.CoreV1().PersistentVolumeClaims(namespace).Get(context.TODO(), pvcName, metav1.GetOptions{}) if err != nil { if apierrors.IsNotFound(errors.Cause(err)) { // Do not return err, wait for timeout, since sometimes in case of statefulsets, they trigger creation of a volume @@ -230,7 +230,7 @@ func checkPVCAndPVStatus(vol v1.Volume, p *v1.Pod, cli kubernetes.Interface, nam // wait for timeout return nil } - pv, err := cli.CoreV1().PersistentVolumes().Get(pvName, metav1.GetOptions{}) + pv, err := cli.CoreV1().PersistentVolumes().Get(context.TODO(), pvName, metav1.GetOptions{}) if err != nil { if apierrors.IsNotFound(errors.Cause(err)) { // wait for timeout @@ -250,7 +250,7 @@ func checkPVCAndPVStatus(vol v1.Volume, p *v1.Pod, cli kubernetes.Interface, nam // WaitForPodCompletion waits for a pod to reach a terminal state func WaitForPodCompletion(ctx context.Context, cli kubernetes.Interface, namespace, name string) error { err := poll.Wait(ctx, func(ctx context.Context) (bool, error) { - p, err := cli.CoreV1().Pods(namespace).Get(name, metav1.GetOptions{}) + p, err := cli.CoreV1().Pods(namespace).Get(ctx, name, metav1.GetOptions{}) if err != nil { return true, err } diff --git a/pkg/kube/pod_test.go b/pkg/kube/pod_test.go index c8712ed7c44..4289ef1b0ee 100644 --- a/pkg/kube/pod_test.go +++ b/pkg/kube/pod_test.go @@ -24,7 +24,7 @@ import ( "time" . "gopkg.in/check.v1" - "k8s.io/api/core/v1" + v1 "k8s.io/api/core/v1" "k8s.io/apimachinery/pkg/api/resource" metav1 "k8s.io/apimachinery/pkg/apis/meta/v1" "k8s.io/apimachinery/pkg/runtime" @@ -57,7 +57,7 @@ func (s *PodSuite) SetUpSuite(c *C) { GenerateName: "podtest-", }, } - ns, err = s.cli.CoreV1().Namespaces().Create(ns) + ns, err = s.cli.CoreV1().Namespaces().Create(context.TODO(), ns, metav1.CreateOptions{}) c.Assert(err, IsNil) s.namespace = ns.Name @@ -73,7 +73,7 @@ func (s *PodSuite) SetUpSuite(c *C) { func (s *PodSuite) TearDownSuite(c *C) { if s.namespace != "" { - err := s.cli.CoreV1().Namespaces().Delete(s.namespace, nil) + err := s.cli.CoreV1().Namespaces().Delete(context.TODO(), s.namespace, metav1.DeleteOptions{}) c.Assert(err, IsNil) } } @@ -147,7 +147,7 @@ func (s *PodSuite) createServiceAccount(name, ns string) error { Namespace: ns, }, } - if _, err := s.cli.CoreV1().ServiceAccounts(ns).Create(&sa); err != nil { + if _, err := s.cli.CoreV1().ServiceAccounts(ns).Create(context.TODO(), &sa, metav1.CreateOptions{}); err != nil { return err } return nil @@ -168,7 +168,7 @@ func (s *PodSuite) TestPodWithVolumes(c *C) { }, }, } - pvc, err := cli.CoreV1().PersistentVolumeClaims(s.namespace).Create(pvc) + pvc, err := cli.CoreV1().PersistentVolumeClaims(s.namespace).Create(context.TODO(), pvc, metav1.CreateOptions{}) c.Assert(err, IsNil) vols := map[string]string{pvc.Name: "/mnt/data1"} ctx := context.Background() diff --git a/pkg/kube/pod_writer_test.go b/pkg/kube/pod_writer_test.go index ceababb666d..02bb6b4786d 100644 --- a/pkg/kube/pod_writer_test.go +++ b/pkg/kube/pod_writer_test.go @@ -22,7 +22,7 @@ import ( "time" . "gopkg.in/check.v1" - "k8s.io/api/core/v1" + v1 "k8s.io/api/core/v1" metav1 "k8s.io/apimachinery/pkg/apis/meta/v1" "k8s.io/client-go/kubernetes" ) @@ -44,7 +44,7 @@ func (p *PodWriteSuite) SetUpSuite(c *C) { GenerateName: "podwritertest-", }, } - ns, err = p.cli.CoreV1().Namespaces().Create(ns) + ns, err = p.cli.CoreV1().Namespaces().Create(context.TODO(), ns, metav1.CreateOptions{}) c.Assert(err, IsNil) p.namespace = ns.Name pod := &v1.Pod{ @@ -59,18 +59,18 @@ func (p *PodWriteSuite) SetUpSuite(c *C) { }, }, } - p.pod, err = p.cli.CoreV1().Pods(p.namespace).Create(pod) + p.pod, err = p.cli.CoreV1().Pods(p.namespace).Create(context.TODO(), pod, metav1.CreateOptions{}) c.Assert(err, IsNil) ctx, cancel := context.WithTimeout(context.Background(), 5*time.Minute) defer cancel() c.Assert(WaitForPodReady(ctx, p.cli, p.namespace, p.pod.Name), IsNil) - p.pod, err = p.cli.CoreV1().Pods(p.namespace).Get(p.pod.Name, metav1.GetOptions{}) + p.pod, err = p.cli.CoreV1().Pods(p.namespace).Get(ctx, p.pod.Name, metav1.GetOptions{}) c.Assert(err, IsNil) } func (p *PodWriteSuite) TearDownSuite(c *C) { if p.namespace != "" { - err := p.cli.CoreV1().Namespaces().Delete(p.namespace, nil) + err := p.cli.CoreV1().Namespaces().Delete(context.TODO(), p.namespace, metav1.DeleteOptions{}) c.Assert(err, IsNil) } } diff --git a/pkg/kube/podinfo.go b/pkg/kube/podinfo.go index 90430668cde..d25a33518d6 100644 --- a/pkg/kube/podinfo.go +++ b/pkg/kube/podinfo.go @@ -15,6 +15,7 @@ package kube import ( + "context" "io/ioutil" "os" @@ -60,7 +61,7 @@ func GetControllerServiceAccount(k8sclient kubernetes.Interface) (string, error) return "", errors.Wrapf(err, "Failed to get Controller pod name") } - pod, err := k8sclient.CoreV1().Pods(ns).Get(podName, metav1.GetOptions{}) + pod, err := k8sclient.CoreV1().Pods(ns).Get(context.TODO(), podName, metav1.GetOptions{}) if err != nil { return "", errors.Wrapf(err, "Failed to get Controller pod object from k8s") } diff --git a/pkg/kube/snapshot/snapshot_alpha.go b/pkg/kube/snapshot/snapshot_alpha.go index e1f2ade419e..396f6affaf1 100644 --- a/pkg/kube/snapshot/snapshot_alpha.go +++ b/pkg/kube/snapshot/snapshot_alpha.go @@ -58,7 +58,7 @@ func NewSnapshotAlpha(kubeCli kubernetes.Interface, dynCli dynamic.Interface) Sn // CloneVolumeSnapshotClass creates a copy of the source volume snapshot class func (sna *SnapshotAlpha) CloneVolumeSnapshotClass(sourceClassName, targetClassName, newDeletionPolicy string, excludeAnnotations []string) error { - usSourceSnapClass, err := sna.dynCli.Resource(v1alpha1.VolSnapClassGVR).Get(sourceClassName, metav1.GetOptions{}) + usSourceSnapClass, err := sna.dynCli.Resource(v1alpha1.VolSnapClassGVR).Get(context.TODO(), sourceClassName, metav1.GetOptions{}) if err != nil { return errors.Wrapf(err, "Failed to find source VolumeSnapshotClass: %s", sourceClassName) } @@ -74,7 +74,7 @@ func (sna *SnapshotAlpha) CloneVolumeSnapshotClass(sourceClassName, targetClassN // Set Annotations/Labels usNew.SetAnnotations(existingAnnotations) usNew.SetLabels(map[string]string{CloneVolumeSnapshotClassLabelName: sourceClassName}) - if _, err = sna.dynCli.Resource(v1alpha1.VolSnapClassGVR).Create(usNew, metav1.CreateOptions{}); !apierrors.IsAlreadyExists(err) { + if _, err = sna.dynCli.Resource(v1alpha1.VolSnapClassGVR).Create(context.TODO(), usNew, metav1.CreateOptions{}); !apierrors.IsAlreadyExists(err) { return errors.Wrapf(err, "Failed to create VolumeSnapshotClass: %s", targetClassName) } return nil @@ -87,7 +87,7 @@ func (sna *SnapshotAlpha) GetVolumeSnapshotClass(annotationKey, annotationValue, // Create creates a VolumeSnapshot and returns it or any error that happened meanwhile. func (sna *SnapshotAlpha) Create(ctx context.Context, name, namespace, pvcName string, snapshotClass *string, waitForReady bool) error { - if _, err := sna.kubeCli.CoreV1().PersistentVolumeClaims(namespace).Get(pvcName, metav1.GetOptions{}); err != nil { + if _, err := sna.kubeCli.CoreV1().PersistentVolumeClaims(namespace).Get(ctx, pvcName, metav1.GetOptions{}); err != nil { if k8errors.IsNotFound(err) { return errors.Errorf("Failed to find PVC %s, Namespace %s", pvcName, namespace) } @@ -95,7 +95,7 @@ func (sna *SnapshotAlpha) Create(ctx context.Context, name, namespace, pvcName s } snap := UnstructuredVolumeSnapshotAlpha(name, namespace, pvcName, "", *snapshotClass) - if _, err := sna.dynCli.Resource(v1alpha1.VolSnapGVR).Namespace(namespace).Create(snap, metav1.CreateOptions{}); err != nil { + if _, err := sna.dynCli.Resource(v1alpha1.VolSnapGVR).Namespace(namespace).Create(ctx, snap, metav1.CreateOptions{}); err != nil { return err } @@ -113,7 +113,7 @@ func (sna *SnapshotAlpha) Create(ctx context.Context, name, namespace, pvcName s // Get will return the VolumeSnapshot in the 'namespace' with given 'name'. func (sna *SnapshotAlpha) Get(ctx context.Context, name, namespace string) (*v1alpha1.VolumeSnapshot, error) { - us, err := sna.dynCli.Resource(v1alpha1.VolSnapGVR).Namespace(namespace).Get(name, metav1.GetOptions{}) + us, err := sna.dynCli.Resource(v1alpha1.VolSnapGVR).Namespace(namespace).Get(ctx, name, metav1.GetOptions{}) if err != nil { return nil, err } @@ -131,7 +131,7 @@ func (sna *SnapshotAlpha) Delete(ctx context.Context, name, namespace string) (* if err != nil { return nil, errors.Wrapf(err, "Failed to find VolumeSnapshot: %s/%s", namespace, name) } - if err := sna.dynCli.Resource(v1alpha1.VolSnapGVR).Namespace(namespace).Delete(name, &metav1.DeleteOptions{}); err != nil && !apierrors.IsNotFound(err) { + if err := sna.dynCli.Resource(v1alpha1.VolSnapGVR).Namespace(namespace).Delete(ctx, name, metav1.DeleteOptions{}); err != nil && !apierrors.IsNotFound(err) { return nil, errors.Wrapf(err, "Failed to delete VolumeSnapshot: %s/%s", namespace, name) } // If the Snapshot does not exist, that's an acceptable error and we ignore it @@ -140,7 +140,7 @@ func (sna *SnapshotAlpha) Delete(ctx context.Context, name, namespace string) (* // DeleteContent will delete the specified VolumeSnapshotContent func (sna *SnapshotAlpha) DeleteContent(ctx context.Context, name string) error { - if err := sna.dynCli.Resource(v1alpha1.VolSnapContentGVR).Delete(name, &metav1.DeleteOptions{}); err != nil && !apierrors.IsNotFound(err) { + if err := sna.dynCli.Resource(v1alpha1.VolSnapContentGVR).Delete(ctx, name, metav1.DeleteOptions{}); err != nil && !apierrors.IsNotFound(err) { return errors.Wrapf(err, "Failed to delete VolumeSnapshotContent: %s", name) } // If the Snapshot Content does not exist, that's an acceptable error and we ignore it @@ -202,7 +202,7 @@ func (sna *SnapshotAlpha) CreateFromSource(ctx context.Context, source *Source, if err := sna.CreateContentFromSource(ctx, source, contentName, snapshotName, namespace, deletionPolicy); err != nil { return err } - if _, err := sna.dynCli.Resource(v1alpha1.VolSnapGVR).Namespace(namespace).Create(snap, metav1.CreateOptions{}); err != nil { + if _, err := sna.dynCli.Resource(v1alpha1.VolSnapGVR).Namespace(namespace).Create(ctx, snap, metav1.CreateOptions{}); err != nil { return errors.Errorf("Failed to create content, Volumesnapshot: %s, Error: %v", snap.GetName(), err) } if !waitForReady { @@ -215,7 +215,7 @@ func (sna *SnapshotAlpha) CreateFromSource(ctx context.Context, source *Source, // CreateContentFromSource will create a 'VolumesnaphotContent' for the underlying snapshot source. func (sna *SnapshotAlpha) CreateContentFromSource(ctx context.Context, source *Source, contentName, snapshotName, namespace, deletionPolicy string) error { content := UnstructuredVolumeSnapshotContentAlpha(contentName, snapshotName, namespace, deletionPolicy, source.Driver, source.Handle, source.VolumeSnapshotClassName) - if _, err := sna.dynCli.Resource(v1alpha1.VolSnapContentGVR).Create(content, metav1.CreateOptions{}); err != nil { + if _, err := sna.dynCli.Resource(v1alpha1.VolSnapContentGVR).Create(ctx, content, metav1.CreateOptions{}); err != nil { return errors.Errorf("Failed to create content, VolumesnapshotContent: %s, Error: %v", content.GetName(), err) } return nil @@ -225,7 +225,7 @@ func (sna *SnapshotAlpha) CreateContentFromSource(ctx context.Context, source *S // has status 'ReadyToUse' or 'ctx.Done()' is signalled. func (sna *SnapshotAlpha) WaitOnReadyToUse(ctx context.Context, snapshotName, namespace string) error { return poll.Wait(ctx, func(context.Context) (bool, error) { - us, err := sna.dynCli.Resource(v1alpha1.VolSnapGVR).Namespace(namespace).Get(snapshotName, metav1.GetOptions{}) + us, err := sna.dynCli.Resource(v1alpha1.VolSnapGVR).Namespace(namespace).Get(ctx, snapshotName, metav1.GetOptions{}) if err != nil { return false, err } @@ -242,7 +242,7 @@ func (sna *SnapshotAlpha) WaitOnReadyToUse(ctx context.Context, snapshotName, na } func (sna *SnapshotAlpha) getContent(ctx context.Context, contentName string) (*v1alpha1.VolumeSnapshotContent, error) { - us, err := sna.dynCli.Resource(v1alpha1.VolSnapContentGVR).Get(contentName, metav1.GetOptions{}) + us, err := sna.dynCli.Resource(v1alpha1.VolSnapContentGVR).Get(ctx, contentName, metav1.GetOptions{}) if err != nil { return nil, err } @@ -254,7 +254,7 @@ func (sna *SnapshotAlpha) getContent(ctx context.Context, contentName string) (* } func (sna *SnapshotAlpha) getDeletionPolicyFromClass(snapClassName string) (string, error) { - us, err := sna.dynCli.Resource(v1alpha1.VolSnapClassGVR).Get(snapClassName, metav1.GetOptions{}) + us, err := sna.dynCli.Resource(v1alpha1.VolSnapClassGVR).Get(context.TODO(), snapClassName, metav1.GetOptions{}) if err != nil { return "", errors.Wrapf(err, "Failed to find VolumeSnapshotClass: %s", snapClassName) } @@ -346,7 +346,7 @@ func TransformUnstructured(u *unstructured.Unstructured, value interface{}) erro } func getSnapshotClassbyAnnotation(dynCli dynamic.Interface, kubeCli kubernetes.Interface, gvr schema.GroupVersionResource, annotationKey, annotationValue, storageClass string) (string, error) { - us, err := dynCli.Resource(gvr).List(metav1.ListOptions{}) + us, err := dynCli.Resource(gvr).List(context.TODO(), metav1.ListOptions{}) if err != nil { return "", errors.Errorf("Failed to get VolumeSnapshotClasses in the cluster: %v", err) } @@ -354,7 +354,7 @@ func getSnapshotClassbyAnnotation(dynCli dynamic.Interface, kubeCli kubernetes.I return "", errors.Errorf("Failed to find any VolumeSnapshotClass in the cluster: %v", err) } // fetch storageClass - sc, err := kubeCli.StorageV1().StorageClasses().Get(storageClass, metav1.GetOptions{}) + sc, err := kubeCli.StorageV1().StorageClasses().Get(context.TODO(), storageClass, metav1.GetOptions{}) if err != nil { return "", errors.Errorf("Failed to find StorageClass (%s) in the cluster: %v", storageClass, err) } diff --git a/pkg/kube/snapshot/snapshot_beta.go b/pkg/kube/snapshot/snapshot_beta.go index 1d16443df30..9d22aeffcf6 100644 --- a/pkg/kube/snapshot/snapshot_beta.go +++ b/pkg/kube/snapshot/snapshot_beta.go @@ -45,7 +45,7 @@ func NewSnapshotBeta(kubeCli kubernetes.Interface, dynCli dynamic.Interface) Sna // CloneVolumeSnapshotClass creates a copy of the source volume snapshot class func (sna *SnapshotBeta) CloneVolumeSnapshotClass(sourceClassName, targetClassName, newDeletionPolicy string, excludeAnnotations []string) error { - usSourceSnapClass, err := sna.dynCli.Resource(v1beta1.VolSnapClassGVR).Get(sourceClassName, metav1.GetOptions{}) + usSourceSnapClass, err := sna.dynCli.Resource(v1beta1.VolSnapClassGVR).Get(context.TODO(), sourceClassName, metav1.GetOptions{}) if err != nil { return errors.Wrapf(err, "Failed to find source VolumeSnapshotClass: %s", sourceClassName) } @@ -61,7 +61,7 @@ func (sna *SnapshotBeta) CloneVolumeSnapshotClass(sourceClassName, targetClassNa // Set Annotations/Labels usNew.SetAnnotations(existingAnnotations) usNew.SetLabels(map[string]string{CloneVolumeSnapshotClassLabelName: sourceClassName}) - if _, err = sna.dynCli.Resource(v1beta1.VolSnapClassGVR).Create(usNew, metav1.CreateOptions{}); !apierrors.IsAlreadyExists(err) { + if _, err = sna.dynCli.Resource(v1beta1.VolSnapClassGVR).Create(context.TODO(), usNew, metav1.CreateOptions{}); !apierrors.IsAlreadyExists(err) { return errors.Wrapf(err, "Failed to create VolumeSnapshotClass: %s", targetClassName) } return nil @@ -74,7 +74,7 @@ func (sna *SnapshotBeta) GetVolumeSnapshotClass(annotationKey, annotationValue, // Create creates a VolumeSnapshot and returns it or any error happened meanwhile. func (sna *SnapshotBeta) Create(ctx context.Context, name, namespace, volumeName string, snapshotClass *string, waitForReady bool) error { - if _, err := sna.kubeCli.CoreV1().PersistentVolumeClaims(namespace).Get(volumeName, metav1.GetOptions{}); err != nil { + if _, err := sna.kubeCli.CoreV1().PersistentVolumeClaims(namespace).Get(ctx, volumeName, metav1.GetOptions{}); err != nil { if k8errors.IsNotFound(err) { return errors.Errorf("Failed to find PVC %s, Namespace %s", volumeName, namespace) } @@ -82,7 +82,7 @@ func (sna *SnapshotBeta) Create(ctx context.Context, name, namespace, volumeName } snap := UnstructuredVolumeSnapshotBeta(name, namespace, volumeName, "", *snapshotClass) - if _, err := sna.dynCli.Resource(v1beta1.VolSnapGVR).Namespace(namespace).Create(snap, metav1.CreateOptions{}); err != nil { + if _, err := sna.dynCli.Resource(v1beta1.VolSnapGVR).Namespace(namespace).Create(ctx, snap, metav1.CreateOptions{}); err != nil { return errors.Wrapf(err, "Failed to create snapshot resource %s, Namespace %s", name, namespace) } @@ -100,7 +100,7 @@ func (sna *SnapshotBeta) Create(ctx context.Context, name, namespace, volumeName // Get will return the VolumeSnapshot in the 'namespace' with given 'name'. func (sna *SnapshotBeta) Get(ctx context.Context, name, namespace string) (*v1alpha1.VolumeSnapshot, error) { - us, err := sna.dynCli.Resource(v1beta1.VolSnapGVR).Namespace(namespace).Get(name, metav1.GetOptions{}) + us, err := sna.dynCli.Resource(v1beta1.VolSnapGVR).Namespace(namespace).Get(ctx, name, metav1.GetOptions{}) if err != nil { return nil, err } @@ -161,7 +161,7 @@ func (sna *SnapshotBeta) Delete(ctx context.Context, name, namespace string) (*v if err != nil { return nil, errors.Wrapf(err, "Failed to find VolumeSnapshot: %s/%s", namespace, name) } - if err := sna.dynCli.Resource(v1beta1.VolSnapGVR).Namespace(namespace).Delete(name, &metav1.DeleteOptions{}); err != nil && !apierrors.IsNotFound(err) { + if err := sna.dynCli.Resource(v1beta1.VolSnapGVR).Namespace(namespace).Delete(ctx, name, metav1.DeleteOptions{}); err != nil && !apierrors.IsNotFound(err) { return nil, errors.Wrapf(err, "Failed to delete VolumeSnapshot: %s/%s", namespace, name) } // If the Snapshot does not exist, that's an acceptable error and we ignore it @@ -170,7 +170,7 @@ func (sna *SnapshotBeta) Delete(ctx context.Context, name, namespace string) (*v // DeleteContent will delete the specified VolumeSnapshotContent func (sna *SnapshotBeta) DeleteContent(ctx context.Context, name string) error { - if err := sna.dynCli.Resource(v1beta1.VolSnapContentGVR).Delete(name, &metav1.DeleteOptions{}); err != nil && !apierrors.IsNotFound(err) { + if err := sna.dynCli.Resource(v1beta1.VolSnapContentGVR).Delete(ctx, name, metav1.DeleteOptions{}); err != nil && !apierrors.IsNotFound(err) { return errors.Wrapf(err, "Failed to delete VolumeSnapshotContent: %s", name) } // If the Snapshot Content does not exist, that's an acceptable error and we ignore it @@ -233,7 +233,7 @@ func (sna *SnapshotBeta) CreateFromSource(ctx context.Context, source *Source, s if err := sna.CreateContentFromSource(ctx, source, contentName, snapshotName, namespace, deletionPolicy); err != nil { return err } - if _, err := sna.dynCli.Resource(v1beta1.VolSnapGVR).Namespace(namespace).Create(snap, metav1.CreateOptions{}); err != nil { + if _, err := sna.dynCli.Resource(v1beta1.VolSnapGVR).Namespace(namespace).Create(ctx, snap, metav1.CreateOptions{}); err != nil { return errors.Errorf("Failed to create content, Volumesnapshot: %s, Error: %v", snap.GetName(), err) } if !waitForReady { @@ -247,7 +247,7 @@ func (sna *SnapshotBeta) CreateFromSource(ctx context.Context, source *Source, s // CreateContentFromSource will create a 'VolumesnaphotContent' for the underlying snapshot source. func (sna *SnapshotBeta) CreateContentFromSource(ctx context.Context, source *Source, contentName, snapshotName, namespace, deletionPolicy string) error { content := UnstructuredVolumeSnapshotContentBeta(contentName, snapshotName, namespace, deletionPolicy, source.Driver, source.Handle, source.VolumeSnapshotClassName) - if _, err := sna.dynCli.Resource(v1beta1.VolSnapContentGVR).Create(content, metav1.CreateOptions{}); err != nil { + if _, err := sna.dynCli.Resource(v1beta1.VolSnapContentGVR).Create(ctx, content, metav1.CreateOptions{}); err != nil { return errors.Errorf("Failed to create content, VolumesnapshotContent: %s, Error: %v", content.GetName(), err) } return nil @@ -257,7 +257,7 @@ func (sna *SnapshotBeta) CreateContentFromSource(ctx context.Context, source *So // has status 'ReadyToUse' or 'ctx.Done()' is signalled. func (sna *SnapshotBeta) WaitOnReadyToUse(ctx context.Context, snapshotName, namespace string) error { return poll.Wait(ctx, func(context.Context) (bool, error) { - us, err := sna.dynCli.Resource(v1beta1.VolSnapGVR).Namespace(namespace).Get(snapshotName, metav1.GetOptions{}) + us, err := sna.dynCli.Resource(v1beta1.VolSnapGVR).Namespace(namespace).Get(ctx, snapshotName, metav1.GetOptions{}) if err != nil { return false, err } @@ -278,7 +278,7 @@ func (sna *SnapshotBeta) WaitOnReadyToUse(ctx context.Context, snapshotName, nam } func (sna *SnapshotBeta) getContent(ctx context.Context, contentName string) (*v1beta1.VolumeSnapshotContent, error) { - us, err := sna.dynCli.Resource(v1beta1.VolSnapContentGVR).Get(contentName, metav1.GetOptions{}) + us, err := sna.dynCli.Resource(v1beta1.VolSnapContentGVR).Get(ctx, contentName, metav1.GetOptions{}) if err != nil { return nil, err } @@ -290,7 +290,7 @@ func (sna *SnapshotBeta) getContent(ctx context.Context, contentName string) (*v } func (sna *SnapshotBeta) getDeletionPolicyFromClass(snapClassName string) (string, error) { - us, err := sna.dynCli.Resource(v1beta1.VolSnapClassGVR).Get(snapClassName, metav1.GetOptions{}) + us, err := sna.dynCli.Resource(v1beta1.VolSnapClassGVR).Get(context.TODO(), snapClassName, metav1.GetOptions{}) if err != nil { return "", errors.Wrapf(err, "Failed to find VolumeSnapshotClass: %s", snapClassName) } diff --git a/pkg/kube/snapshot/snapshot_test.go b/pkg/kube/snapshot/snapshot_test.go index 93b1e6fc86e..848c56619c5 100644 --- a/pkg/kube/snapshot/snapshot_test.go +++ b/pkg/kube/snapshot/snapshot_test.go @@ -96,7 +96,7 @@ func (s *SnapshotTestSuite) SetUpSuite(c *C) { s.snapshotClassAlpha = &snapClassAlpha snapClassBeta, driverBeta := findSnapshotClassName(c, s.dynCli, v1beta1.VolSnapClassGVR, v1beta1.VolumeSnapshotClass{}) s.snapshotClassBeta = &snapClassBeta - storageClasses, err := cli.StorageV1().StorageClasses().List(metav1.ListOptions{}) + storageClasses, err := cli.StorageV1().StorageClasses().List(context.TODO(), metav1.ListOptions{}) c.Assert(err, IsNil) for _, class := range storageClasses.Items { if class.Provisioner == driverAlpha { @@ -107,10 +107,10 @@ func (s *SnapshotTestSuite) SetUpSuite(c *C) { } } - _, err = cli.CoreV1().Namespaces().Create(&corev1.Namespace{ObjectMeta: metav1.ObjectMeta{Name: s.sourceNamespace}}) + _, err = cli.CoreV1().Namespaces().Create(context.TODO(), &corev1.Namespace{ObjectMeta: metav1.ObjectMeta{Name: s.sourceNamespace}}, metav1.CreateOptions{}) c.Assert(err, IsNil) - _, err = cli.CoreV1().Namespaces().Create(&corev1.Namespace{ObjectMeta: metav1.ObjectMeta{Name: s.targetNamespace}}) + _, err = cli.CoreV1().Namespaces().Create(context.TODO(), &corev1.Namespace{ObjectMeta: metav1.ObjectMeta{Name: s.targetNamespace}}, metav1.CreateOptions{}) c.Assert(err, IsNil) } @@ -139,7 +139,7 @@ func (s *SnapshotTestSuite) TestVolumeSnapshotFake(c *C) { }, }, } - _, err = fakeCli.CoreV1().PersistentVolumeClaims(defaultNamespace).Create(pvc) + _, err = fakeCli.CoreV1().PersistentVolumeClaims(defaultNamespace).Create(context.TODO(), pvc, metav1.CreateOptions{}) c.Assert(err, IsNil) for _, fakeSs := range []snapshot.Snapshotter{ @@ -196,13 +196,13 @@ func (s *SnapshotTestSuite) TestVolumeSnapshotClassCloneFake(c *C) { annotationKeyToKeep: "true", annotationKeyToRemove: "true", }) - _, err := dynCli.Resource(tc.snapClassGVR).Create(tc.sourceSnapClassSpec, metav1.CreateOptions{}) + _, err := dynCli.Resource(tc.snapClassGVR).Create(context.TODO(), tc.sourceSnapClassSpec, metav1.CreateOptions{}) c.Assert(err, IsNil) err = tc.snapshotter.CloneVolumeSnapshotClass(tc.sourceSnapClassSpec.GetName(), "targetClass", snapshot.DeletionPolicyRetain, []string{annotationKeyToRemove}) c.Assert(err, IsNil) // New VSC exists - createdVSC, err := dynCli.Resource(tc.snapClassGVR).Get("targetClass", metav1.GetOptions{}) + createdVSC, err := dynCli.Resource(tc.snapClassGVR).Get(context.TODO(), "targetClass", metav1.GetOptions{}) c.Assert(err, IsNil) // Annotations are set correctly @@ -270,11 +270,11 @@ func (s *SnapshotTestSuite) TestVolumeSnapshotCloneFake(c *C) { "boundVolumeSnapshotContentName": fakeContentName, "creationTime": metav1.Now().Format("2006-01-02T15:04:05Z"), } - _, err := dynCli.Resource(tc.snapClassGVR).Create(tc.snapClassSpec, metav1.CreateOptions{}) + _, err := dynCli.Resource(tc.snapClassGVR).Create(context.TODO(), tc.snapClassSpec, metav1.CreateOptions{}) c.Assert(err, IsNil) - _, err = dynCli.Resource(tc.snapGVR).Namespace(defaultNamespace).Create(tc.snapSpec, metav1.CreateOptions{}) + _, err = dynCli.Resource(tc.snapGVR).Namespace(defaultNamespace).Create(context.TODO(), tc.snapSpec, metav1.CreateOptions{}) c.Assert(err, IsNil) - _, err = dynCli.Resource(tc.contentGVR).Create(tc.contentSpec, metav1.CreateOptions{}) + _, err = dynCli.Resource(tc.contentGVR).Create(context.TODO(), tc.contentSpec, metav1.CreateOptions{}) c.Assert(err, IsNil) _, err = tc.fakeSs.Get(context.Background(), fakeSnapshotName, defaultNamespace) @@ -286,7 +286,7 @@ func (s *SnapshotTestSuite) TestVolumeSnapshotCloneFake(c *C) { clone, err := tc.fakeSs.Get(context.Background(), fakeClone, fakeTargetNamespace) c.Assert(err, IsNil) - us, err := dynCli.Resource(tc.contentGVR).Get(clone.Spec.SnapshotContentName, metav1.GetOptions{}) + us, err := dynCli.Resource(tc.contentGVR).Get(context.TODO(), clone.Spec.SnapshotContentName, metav1.GetOptions{}) c.Assert(err, IsNil) err = snapshot.TransformUnstructured(us, tc.snapContentObject) c.Assert(err, IsNil) @@ -345,10 +345,10 @@ func (s *SnapshotTestSuite) testVolumeSnapshot(c *C, snapshotter snapshot.Snapsh StorageClassName: &storageClass, }, } - pvc, err = s.cli.CoreV1().PersistentVolumeClaims(s.sourceNamespace).Create(pvc) + pvc, err = s.cli.CoreV1().PersistentVolumeClaims(s.sourceNamespace).Create(ctx, pvc, metav1.CreateOptions{}) c.Assert(err, IsNil) _ = poll.Wait(ctx, func(ctx context.Context) (bool, error) { - pvc, err = s.cli.CoreV1().PersistentVolumeClaims(pvc.Namespace).Get(pvc.Name, metav1.GetOptions{}) + pvc, err = s.cli.CoreV1().PersistentVolumeClaims(pvc.Namespace).Get(ctx, pvc.Name, metav1.GetOptions{}) if err != nil { return false, err } @@ -386,7 +386,7 @@ func (s *SnapshotTestSuite) testVolumeSnapshot(c *C, snapshotter snapshot.Snapsh _, err = volume.CreatePVCFromSnapshot(ctx, args) c.Assert(err, IsNil) _ = poll.Wait(ctx, func(ctx context.Context) (bool, error) { - pvc, err = s.cli.CoreV1().PersistentVolumeClaims(s.targetNamespace).Get(volumeCloneName, metav1.GetOptions{}) + pvc, err = s.cli.CoreV1().PersistentVolumeClaims(s.targetNamespace).Get(ctx, volumeCloneName, metav1.GetOptions{}) if err != nil { return false, err } @@ -411,7 +411,7 @@ func (s *SnapshotTestSuite) testVolumeSnapshot(c *C, snapshotter snapshot.Snapsh _, err = volume.CreatePVCFromSnapshot(ctx, args) c.Assert(err, IsNil) _ = poll.Wait(ctx, func(ctx context.Context) (bool, error) { - pvc, err = s.cli.CoreV1().PersistentVolumeClaims(s.targetNamespace).Get(volumeCloneName, metav1.GetOptions{}) + pvc, err = s.cli.CoreV1().PersistentVolumeClaims(s.targetNamespace).Get(ctx, volumeCloneName, metav1.GetOptions{}) if err != nil { return false, err } @@ -427,24 +427,24 @@ func (s *SnapshotTestSuite) testVolumeSnapshot(c *C, snapshotter snapshot.Snapsh } func (s *SnapshotTestSuite) cleanupNamespace(c *C, ns string) { - pvcs, erra := s.cli.CoreV1().PersistentVolumeClaims(ns).List(metav1.ListOptions{}) + pvcs, erra := s.cli.CoreV1().PersistentVolumeClaims(ns).List(context.TODO(), metav1.ListOptions{}) if erra != nil { c.Logf("Failed to list PVCs, Namespace: %s, Error: %v", ns, erra) } else { for _, pvc := range pvcs.Items { - if err := s.cli.CoreV1().PersistentVolumeClaims(ns).Delete(pvc.Name, &metav1.DeleteOptions{}); err != nil { + if err := s.cli.CoreV1().PersistentVolumeClaims(ns).Delete(context.TODO(), pvc.Name, metav1.DeleteOptions{}); err != nil { erra = err c.Logf("Failed to delete PVC, PVC: %s, Namespace: %s, Error: %v", pvc.Name, ns, err) } } } - vss, errb := s.dynCli.Resource(v1alpha1.VolSnapGVR).Namespace(ns).List(metav1.ListOptions{}) + vss, errb := s.dynCli.Resource(v1alpha1.VolSnapGVR).Namespace(ns).List(context.TODO(), metav1.ListOptions{}) if errb != nil { c.Logf("Failed to list snapshots, Namespace: %s, Error: %v", ns, errb) } else { for _, vs := range vss.Items { - if err := s.dynCli.Resource(v1alpha1.VolSnapGVR).Namespace(ns).Delete(vs.GetName(), &metav1.DeleteOptions{}); err != nil { + if err := s.dynCli.Resource(v1alpha1.VolSnapGVR).Namespace(ns).Delete(context.TODO(), vs.GetName(), metav1.DeleteOptions{}); err != nil { errb = err c.Logf("Failed to delete snapshot, Volumesnapshot: %s, Namespace %s, Error: %v", vs.GetName(), vs.GetNamespace(), err) } @@ -455,7 +455,7 @@ func (s *SnapshotTestSuite) cleanupNamespace(c *C, ns string) { c.Logf("Skipping deleting the namespace, Namespace: %s", ns) } - err := s.cli.CoreV1().Namespaces().Delete(ns, &metav1.DeleteOptions{}) + err := s.cli.CoreV1().Namespaces().Delete(context.TODO(), ns, metav1.DeleteOptions{}) if err != nil { c.Logf("Failed to delete namespace, Namespace: %s, Error: %v", ns, err) } @@ -710,10 +710,10 @@ func (tc snapshotClassTC) testGetSnapshotClass(c *C, dynCli dynamic.Interface, f tc.annotationKey: tc.annotationValue, }, } - _, err := dynCli.Resource(gvr).Create(snapClass, metav1.CreateOptions{}) + _, err := dynCli.Resource(gvr).Create(context.TODO(), snapClass, metav1.CreateOptions{}) c.Assert(err, IsNil) defer func() { - err := dynCli.Resource(gvr).Delete(tc.name, nil) + err := dynCli.Resource(gvr).Delete(context.TODO(), tc.name, metav1.DeleteOptions{}) c.Assert(err, IsNil) }() name, err := fakeSs.GetVolumeSnapshotClass(tc.testKey, tc.testValue, tc.storageClassName) @@ -725,14 +725,14 @@ func (tc snapshotClassTC) testGetSnapshotClass(c *C, dynCli dynamic.Interface, f func findSnapshotClassName(c *C, dynCli dynamic.Interface, gvr schema.GroupVersionResource, object interface{}) (string, string) { // Find alpha VolumeSnapshotClass name - us, err := dynCli.Resource(gvr).List(metav1.ListOptions{}) + us, err := dynCli.Resource(gvr).List(context.TODO(), metav1.ListOptions{}) if err != nil && !k8errors.IsNotFound(err) { c.Logf("Failed to query VolumeSnapshotClass, skipping test. Error: %v", err) c.Fail() } var snapshotterName, snapshotClass string if (us != nil) && len(us.Items) != 0 { - usClass, err := dynCli.Resource(gvr).Get(us.Items[0].GetName(), metav1.GetOptions{}) + usClass, err := dynCli.Resource(gvr).Get(context.TODO(), us.Items[0].GetName(), metav1.GetOptions{}) if err != nil { c.Logf("Failed to get VolumeSnapshotClass, skipping test. Error: %v", err) c.Fail() diff --git a/pkg/kube/statefulset_test.go b/pkg/kube/statefulset_test.go index 4291d17ec7f..616f1e6cc4a 100644 --- a/pkg/kube/statefulset_test.go +++ b/pkg/kube/statefulset_test.go @@ -22,7 +22,7 @@ import ( "strings" . "gopkg.in/check.v1" - "k8s.io/api/core/v1" + v1 "k8s.io/api/core/v1" metav1 "k8s.io/apimachinery/pkg/apis/meta/v1" "k8s.io/client-go/kubernetes" ) @@ -44,14 +44,14 @@ func (s *StatefulSetSuite) SetUpSuite(c *C) { GenerateName: "statefulsettest-", }, } - cns, err := s.cli.CoreV1().Namespaces().Create(ns) + cns, err := s.cli.CoreV1().Namespaces().Create(context.TODO(), ns, metav1.CreateOptions{}) c.Assert(err, IsNil) s.namespace = cns.Name } func (s *StatefulSetSuite) TearDownSuite(c *C) { if s.namespace != "" { - err := s.cli.CoreV1().Namespaces().Delete(s.namespace, nil) + err := s.cli.CoreV1().Namespaces().Delete(context.TODO(), s.namespace, metav1.DeleteOptions{}) c.Assert(err, IsNil) } } @@ -88,9 +88,9 @@ func (s *StatefulSetSuite) TestCreateStatefulSet(c *C) { _, err := CreateStatefulSet(ctx, s.cli, s.namespace, spec) c.Assert(err, IsNil) defer func() { - err = s.cli.AppsV1().StatefulSets(s.namespace).Delete(name, nil) + err = s.cli.AppsV1().StatefulSets(s.namespace).Delete(ctx, name, metav1.DeleteOptions{}) c.Assert(err, IsNil) }() - _, err = s.cli.CoreV1().Pods(s.namespace).Get(name+"-0", metav1.GetOptions{}) + _, err = s.cli.CoreV1().Pods(s.namespace).Get(ctx, name+"-0", metav1.GetOptions{}) c.Assert(err, IsNil) } diff --git a/pkg/kube/unstructured.go b/pkg/kube/unstructured.go index 7931bd80ccc..82b1742572e 100644 --- a/pkg/kube/unstructured.go +++ b/pkg/kube/unstructured.go @@ -15,6 +15,8 @@ package kube import ( + "context" + metav1 "k8s.io/apimachinery/pkg/apis/meta/v1" "k8s.io/apimachinery/pkg/runtime" "k8s.io/apimachinery/pkg/runtime/schema" @@ -34,9 +36,9 @@ func FetchUnstructuredObject(resource schema.GroupVersionResource, namespace, na // TODO: deprecate `FetchUnstructuredObject` func FetchUnstructuredObjectWithCli(cli dynamic.Interface, resource schema.GroupVersionResource, namespace, name string) (runtime.Unstructured, error) { if namespace == "" { - _, _ = cli.Resource(resource).Get(name, metav1.GetOptions{}) + _, _ = cli.Resource(resource).Get(context.TODO(), name, metav1.GetOptions{}) } - return cli.Resource(resource).Namespace(namespace).Get(name, metav1.GetOptions{}) + return cli.Resource(resource).Namespace(namespace).Get(context.TODO(), name, metav1.GetOptions{}) } // ListUnstructuredObject returns the referenced API objects as a map[string]interface{} @@ -52,9 +54,9 @@ func ListUnstructuredObject(resource schema.GroupVersionResource, namespace stri // TODO: deprecate `ListUnstructuredObject` func ListUnstructuredObjectWithCli(cli dynamic.Interface, resource schema.GroupVersionResource, namespace string) (runtime.Unstructured, error) { if namespace == "" { - return cli.Resource(resource).List(metav1.ListOptions{}) + return cli.Resource(resource).List(context.TODO(), metav1.ListOptions{}) } - return cli.Resource(resource).Namespace(namespace).List(metav1.ListOptions{}) + return cli.Resource(resource).Namespace(namespace).List(context.TODO(), metav1.ListOptions{}) } func client() (dynamic.Interface, error) { diff --git a/pkg/kube/volume/volume.go b/pkg/kube/volume/volume.go index 9d9ac047370..a40f0829539 100644 --- a/pkg/kube/volume/volume.go +++ b/pkg/kube/volume/volume.go @@ -82,7 +82,7 @@ func CreatePVC(ctx context.Context, kubeCli kubernetes.Interface, ns string, nam // Disable dynamic provisioning by setting an empty storage pvc.Spec.StorageClassName = &emptyStorageClass } - createdPVC, err := kubeCli.CoreV1().PersistentVolumeClaims(ns).Create(&pvc) + createdPVC, err := kubeCli.CoreV1().PersistentVolumeClaims(ns).Create(ctx, &pvc, metav1.CreateOptions{}) if err != nil { if name != "" && apierrors.IsAlreadyExists(err) { return name, nil @@ -163,7 +163,7 @@ func CreatePVCFromSnapshot(ctx context.Context, args *CreatePVCFromSnapshotArgs) pvc.Spec.StorageClassName = &args.StorageClassName } - pvc, err := args.KubeCli.CoreV1().PersistentVolumeClaims(args.Namespace).Create(pvc) + pvc, err := args.KubeCli.CoreV1().PersistentVolumeClaims(args.Namespace).Create(ctx, pvc, metav1.CreateOptions{}) if err != nil { if args.VolumeName != "" && apierrors.IsAlreadyExists(err) { return args.VolumeName, nil @@ -186,7 +186,7 @@ func CreatePV(ctx context.Context, kubeCli kubernetes.Interface, vol *blockstora // Since behavior and error returned from repeated create might vary, check first sel := labelSelector(matchLabels) options := metav1.ListOptions{LabelSelector: sel} - pvl, err := kubeCli.CoreV1().PersistentVolumes().List(options) + pvl, err := kubeCli.CoreV1().PersistentVolumes().List(ctx, options) if err == nil && len(pvl.Items) == 1 { return pvl.Items[0].Name, nil } @@ -223,7 +223,7 @@ func CreatePV(ctx context.Context, kubeCli kubernetes.Interface, vol *blockstora return "", errors.Errorf("Volume type %v(%T) not supported ", volType, volType) } - createdPV, err := kubeCli.CoreV1().PersistentVolumes().Create(&pv) + createdPV, err := kubeCli.CoreV1().PersistentVolumes().Create(ctx, &pv, metav1.CreateOptions{}) if err != nil { return "", errors.Wrapf(err, "Unable to create PV for volume %v", pv) } @@ -233,7 +233,7 @@ func CreatePV(ctx context.Context, kubeCli kubernetes.Interface, vol *blockstora // DeletePVC deletes the given PVC immediately and waits with timeout until it is returned as deleted func DeletePVC(cli kubernetes.Interface, namespace, pvcName string) error { var now int64 - if err := cli.CoreV1().PersistentVolumeClaims(namespace).Delete(pvcName, &metav1.DeleteOptions{GracePeriodSeconds: &now}); err != nil { + if err := cli.CoreV1().PersistentVolumeClaims(namespace).Delete(context.TODO(), pvcName, metav1.DeleteOptions{GracePeriodSeconds: &now}); err != nil { // If the PVC does not exist, that's an acceptable error if !apierrors.IsNotFound(err) { return err @@ -245,7 +245,7 @@ func DeletePVC(cli kubernetes.Interface, namespace, pvcName string) error { ctx, c := context.WithTimeout(context.TODO(), time.Minute) defer c() return poll.Wait(ctx, func(context.Context) (bool, error) { - _, err := cli.CoreV1().PersistentVolumeClaims(namespace).Get(pvcName, metav1.GetOptions{}) + _, err := cli.CoreV1().PersistentVolumeClaims(namespace).Get(ctx, pvcName, metav1.GetOptions{}) if apierrors.IsNotFound(err) { return true, nil } diff --git a/pkg/kube/volume/volume_test.go b/pkg/kube/volume/volume_test.go index f3f5c2fcb20..f9233993f81 100644 --- a/pkg/kube/volume/volume_test.go +++ b/pkg/kube/volume/volume_test.go @@ -21,7 +21,7 @@ import ( "testing" . "gopkg.in/check.v1" - "k8s.io/api/core/v1" + v1 "k8s.io/api/core/v1" metav1 "k8s.io/apimachinery/pkg/apis/meta/v1" "k8s.io/client-go/kubernetes/fake" ) @@ -42,7 +42,7 @@ func (s *TestVolSuite) TestCreatePVC(c *C) { cli := fake.NewSimpleClientset() pvcName, err := CreatePVC(ctx, cli, ns, NoPVCNameSpecified, pvcSize, targetVolID, annotations) c.Assert(err, IsNil) - pvc, err := cli.CoreV1().PersistentVolumeClaims(ns).Get(pvcName, metav1.GetOptions{}) + pvc, err := cli.CoreV1().PersistentVolumeClaims(ns).Get(ctx, pvcName, metav1.GetOptions{}) c.Assert(err, IsNil) c.Assert(len(pvc.Spec.AccessModes) >= 1, Equals, true) diff --git a/pkg/kube/workload.go b/pkg/kube/workload.go index 3dca594f5ac..00f511eb016 100644 --- a/pkg/kube/workload.go +++ b/pkg/kube/workload.go @@ -50,7 +50,7 @@ func CreateConfigMap(ctx context.Context, cli kubernetes.Interface, namespace st if _, _, err := d.Decode([]byte(spec), nil, cm); err != nil { return nil, err } - return cli.CoreV1().ConfigMaps(namespace).Create(cm) + return cli.CoreV1().ConfigMaps(namespace).Create(ctx, cm, metav1.CreateOptions{}) } // CreateDeployment creates a deployment set from a yaml spec. @@ -60,7 +60,7 @@ func CreateDeployment(ctx context.Context, cli kubernetes.Interface, namespace s if _, _, err := d.Decode([]byte(spec), nil, dep); err != nil { return nil, err } - return cli.AppsV1().Deployments(namespace).Create(dep) + return cli.AppsV1().Deployments(namespace).Create(ctx, dep, metav1.CreateOptions{}) } // CreateStatefulSet creates a stateful set from a yaml spec. @@ -70,13 +70,13 @@ func CreateStatefulSet(ctx context.Context, cli kubernetes.Interface, namespace if _, _, err := d.Decode([]byte(spec), nil, ss); err != nil { return nil, err } - return cli.AppsV1().StatefulSets(namespace).Create(ss) + return cli.AppsV1().StatefulSets(namespace).Create(ctx, ss, metav1.CreateOptions{}) } // StatefulSetReady checks if a statefulset has the desired number of ready // replicas. func StatefulSetReady(ctx context.Context, kubeCli kubernetes.Interface, namespace string, name string) (bool, error) { - ss, err := kubeCli.AppsV1().StatefulSets(namespace).Get(name, metav1.GetOptions{}) + ss, err := kubeCli.AppsV1().StatefulSets(namespace).Get(ctx, name, metav1.GetOptions{}) if err != nil { return false, errors.Wrapf(err, "could not get StatefulSet{Namespace: %s, Name: %s}", namespace, name) } @@ -92,7 +92,7 @@ func StatefulSetReady(ctx context.Context, kubeCli kubernetes.Interface, namespa // StatefulSetPods returns list of running and notrunning pods created by the deployment. func StatefulSetPods(ctx context.Context, kubeCli kubernetes.Interface, namespace string, name string) ([]v1.Pod, []v1.Pod, error) { - ss, err := kubeCli.AppsV1().StatefulSets(namespace).Get(name, metav1.GetOptions{}) + ss, err := kubeCli.AppsV1().StatefulSets(namespace).Get(ctx, name, metav1.GetOptions{}) if err != nil { return nil, nil, errors.Wrapf(err, "could not get StatefulSet{Namespace: %s, Name: %s}", namespace, name) } @@ -112,7 +112,7 @@ func WaitOnStatefulSetReady(ctx context.Context, kubeCli kubernetes.Interface, n // DeploymentConfigReady checks to see the deploymentconfig has desired number of available replicas. func DeploymentConfigReady(ctx context.Context, osCli osversioned.Interface, cli kubernetes.Interface, namespace, name string) (bool, error) { - depConfig, err := osCli.AppsV1().DeploymentConfigs(namespace).Get(name, metav1.GetOptions{}) + depConfig, err := osCli.AppsV1().DeploymentConfigs(namespace).Get(ctx, name, metav1.GetOptions{}) if err != nil { return false, errors.Wrapf(err, "could not get DeploymentConfig{Namespace: %s, Name: %s}", namespace, name) } @@ -155,7 +155,7 @@ func DeploymentConfigReady(ctx context.Context, osCli osversioned.Interface, cli // DeploymentReady checks to see if the deployment has the desired number of // available replicas. func DeploymentReady(ctx context.Context, kubeCli kubernetes.Interface, namespace string, name string) (bool, error) { - d, err := kubeCli.AppsV1().Deployments(namespace).Get(name, metav1.GetOptions{}) + d, err := kubeCli.AppsV1().Deployments(namespace).Get(ctx, name, metav1.GetOptions{}) if err != nil { return false, errors.Wrapf(err, "could not get Deployment{Namespace: %s, Name: %s}", namespace, name) } @@ -187,7 +187,7 @@ func DeploymentReady(ctx context.Context, kubeCli kubernetes.Interface, namespac // DeploymentConfigPods return list of running and not running pod created by this/name deployment config func DeploymentConfigPods(ctx context.Context, osCli osversioned.Interface, kubeCli kubernetes.Interface, namespace, name string) ([]v1.Pod, []v1.Pod, error) { - depConf, err := osCli.AppsV1().DeploymentConfigs(namespace).Get(name, metav1.GetOptions{}) + depConf, err := osCli.AppsV1().DeploymentConfigs(namespace).Get(ctx, name, metav1.GetOptions{}) if err != nil { return nil, nil, errors.Wrapf(err, "could not get DeploymentConfig{Namespace: %s, Name: %s}", namespace, name) } @@ -201,7 +201,7 @@ func DeploymentConfigPods(ctx context.Context, osCli osversioned.Interface, kube // DeploymentPods returns list of running and notrunning pods created by the deployment. func DeploymentPods(ctx context.Context, kubeCli kubernetes.Interface, namespace string, name string) ([]v1.Pod, []v1.Pod, error) { - d, err := kubeCli.AppsV1().Deployments(namespace).Get(name, metav1.GetOptions{}) + d, err := kubeCli.AppsV1().Deployments(namespace).Get(ctx, name, metav1.GetOptions{}) if err != nil { return nil, nil, errors.Wrapf(err, "could not get Deployment{Namespace: %s, Name: %s}", namespace, name) } @@ -236,7 +236,7 @@ func WaitOnDeploymentConfigReady(ctx context.Context, osCli osversioned.Interfac // FetchReplicationController fetches the replication controller that has owner with UID provided uid func FetchReplicationController(cli kubernetes.Interface, namespace string, uid types.UID, revision string) (*v1.ReplicationController, error) { - repCtrls, err := cli.CoreV1().ReplicationControllers(namespace).List(metav1.ListOptions{}) + repCtrls, err := cli.CoreV1().ReplicationControllers(namespace).List(context.TODO(), metav1.ListOptions{}) if err != nil { return nil, errors.Wrapf(err, "Could not list ReplicationControllers") } @@ -263,8 +263,7 @@ var errNotFound = fmt.Errorf("not found") // FetchReplicaSet fetches the replicaset matching the specified owner UID func FetchReplicaSet(cli kubernetes.Interface, namespace string, uid types.UID, revision string) (*appsv1.ReplicaSet, error) { - opts := metav1.ListOptions{} - rss, err := cli.AppsV1().ReplicaSets(namespace).List(opts) + rss, err := cli.AppsV1().ReplicaSets(namespace).List(context.TODO(), metav1.ListOptions{}) if err != nil { return nil, errors.Wrap(err, "Could not list ReplicaSets") } @@ -289,8 +288,7 @@ func FetchReplicaSet(cli kubernetes.Interface, namespace string, uid types.UID, // FetchPods fetches the pods matching the specified owner UID and splits them // into 2 groups (running/not-running) func FetchPods(cli kubernetes.Interface, namespace string, uid types.UID) (runningPods []v1.Pod, notRunningPods []v1.Pod, err error) { - opts := metav1.ListOptions{} - pods, err := cli.CoreV1().Pods(namespace).List(opts) + pods, err := cli.CoreV1().Pods(namespace).List(context.TODO(), metav1.ListOptions{}) if err != nil { return nil, nil, errors.Wrap(err, "Could not list Pods") } @@ -309,12 +307,12 @@ func FetchPods(cli kubernetes.Interface, namespace string, uid types.UID) (runni } func ScaleStatefulSet(ctx context.Context, kubeCli kubernetes.Interface, namespace string, name string, replicas int32) error { - ss, err := kubeCli.AppsV1().StatefulSets(namespace).Get(name, metav1.GetOptions{}) + ss, err := kubeCli.AppsV1().StatefulSets(namespace).Get(ctx, name, metav1.GetOptions{}) if err != nil { return errors.Wrapf(err, "Could not get Statefulset{Namespace %s, Name: %s}", namespace, name) } ss.Spec.Replicas = &replicas - _, err = kubeCli.AppsV1().StatefulSets(namespace).Update(ss) + _, err = kubeCli.AppsV1().StatefulSets(namespace).Update(ctx, ss, metav1.UpdateOptions{}) if err != nil { return errors.Wrapf(err, "Could not update Statefulset{Namespace %s, Name: %s}", namespace, name) } @@ -322,12 +320,12 @@ func ScaleStatefulSet(ctx context.Context, kubeCli kubernetes.Interface, namespa } func ScaleDeployment(ctx context.Context, kubeCli kubernetes.Interface, namespace string, name string, replicas int32) error { - d, err := kubeCli.AppsV1().Deployments(namespace).Get(name, metav1.GetOptions{}) + d, err := kubeCli.AppsV1().Deployments(namespace).Get(ctx, name, metav1.GetOptions{}) if err != nil { return errors.Wrapf(err, "Could not get Deployment{Namespace %s, Name: %s}", namespace, name) } d.Spec.Replicas = &replicas - _, err = kubeCli.AppsV1().Deployments(namespace).Update(d) + _, err = kubeCli.AppsV1().Deployments(namespace).Update(ctx, d, metav1.UpdateOptions{}) if err != nil { return errors.Wrapf(err, "Could not update Deployment{Namespace %s, Name: %s}", namespace, name) } @@ -335,12 +333,12 @@ func ScaleDeployment(ctx context.Context, kubeCli kubernetes.Interface, namespac } func ScaleDeploymentConfig(ctx context.Context, kubeCli kubernetes.Interface, osCli osversioned.Interface, namespace string, name string, replicas int32) error { - dc, err := osCli.AppsV1().DeploymentConfigs(namespace).Get(name, metav1.GetOptions{}) + dc, err := osCli.AppsV1().DeploymentConfigs(namespace).Get(ctx, name, metav1.GetOptions{}) if err != nil { return errors.Wrapf(err, "Could not get DeploymentConfig{Namespace %s, Name: %s}", namespace, name) } dc.Spec.Replicas = replicas - _, err = osCli.AppsV1().DeploymentConfigs(namespace).Update(dc) + _, err = osCli.AppsV1().DeploymentConfigs(namespace).Update(ctx, dc, metav1.UpdateOptions{}) if err != nil { return errors.Wrapf(err, "Could not update DeploymentConfig{Namespace %s, Name: %s}", namespace, name) } @@ -362,7 +360,7 @@ func DeploymentVolumes(cli kubernetes.Interface, d *appsv1.Deployment) (volNameT // PodContainers returns list of containers specified by the pod func PodContainers(ctx context.Context, kubeCli kubernetes.Interface, namespace string, name string) ([]v1.Container, error) { - p, err := kubeCli.CoreV1().Pods(namespace).Get(name, metav1.GetOptions{}) + p, err := kubeCli.CoreV1().Pods(namespace).Get(ctx, name, metav1.GetOptions{}) if err != nil { return nil, errors.Wrapf(err, "could not get Pod{Namespace: %s, Name: %s}", namespace, name) } @@ -437,7 +435,7 @@ func DeploymentConfigVolumes(osCli osversioned.Interface, depConfig *osAppsv1.De // IsPodRunning checks if the provided pod is ready or not func IsPodRunning(cli kubernetes.Interface, podName, podNamespace string) (bool, error) { - pod, err := cli.CoreV1().Pods(podNamespace).Get(podName, metav1.GetOptions{}) + pod, err := cli.CoreV1().Pods(podNamespace).Get(context.TODO(), podName, metav1.GetOptions{}) if err != nil { return false, err } diff --git a/pkg/kube/workload_test.go b/pkg/kube/workload_test.go index 700b95faefd..7b28230fddf 100644 --- a/pkg/kube/workload_test.go +++ b/pkg/kube/workload_test.go @@ -6,7 +6,7 @@ import ( osapps "github.com/openshift/api/apps/v1" osversioned "github.com/openshift/client-go/apps/clientset/versioned" . "gopkg.in/check.v1" - "k8s.io/api/core/v1" + v1 "k8s.io/api/core/v1" metav1 "k8s.io/apimachinery/pkg/apis/meta/v1" "k8s.io/client-go/kubernetes" ) @@ -36,10 +36,10 @@ func (s *WorkloadSuite) TestScaleDeploymentConfig(c *C) { GenerateName: "dc-scale-test-", }, } - ns, err = cli.CoreV1().Namespaces().Create(ns) + ns, err = cli.CoreV1().Namespaces().Create(context.TODO(), ns, metav1.CreateOptions{}) c.Assert(err, IsNil) defer func() { - err = cli.CoreV1().Namespaces().Delete(ns.GetName(), nil) + err = cli.CoreV1().Namespaces().Delete(context.TODO(), ns.GetName(), metav1.DeleteOptions{}) c.Assert(err, IsNil) }() @@ -47,7 +47,7 @@ func (s *WorkloadSuite) TestScaleDeploymentConfig(c *C) { dc := newDeploymentConfig() osCli, err := osversioned.NewForConfig(cfg) c.Assert(err, IsNil) - dc, err = osCli.AppsV1().DeploymentConfigs(ns.GetName()).Create(dc) + dc, err = osCli.AppsV1().DeploymentConfigs(ns.GetName()).Create(context.TODO(), dc, metav1.CreateOptions{}) c.Assert(err, IsNil) err = ScaleDeploymentConfig(ctx, cli, osCli, dc.GetNamespace(), dc.GetName(), 0) diff --git a/pkg/param/param.go b/pkg/param/param.go index 1858708ee18..8047fa2e37d 100644 --- a/pkg/param/param.go +++ b/pkg/param/param.go @@ -216,7 +216,7 @@ func fetchProfile(ctx context.Context, cli kubernetes.Interface, crCli versioned if ref == nil { return nil, errors.New("Cannot execute action without a profile. Specify a profile in the action set") } - p, err := crCli.CrV1alpha1().Profiles(ref.Namespace).Get(ref.Name, metav1.GetOptions{}) + p, err := crCli.CrV1alpha1().Profiles(ref.Namespace).Get(ctx, ref.Name, metav1.GetOptions{}) if err != nil { return nil, errors.WithStack(err) } @@ -246,7 +246,7 @@ func fetchKeyPairCredential(ctx context.Context, cli kubernetes.Interface, c *cr if c == nil { return nil, errors.New("KVSecret cannot be nil") } - s, err := cli.CoreV1().Secrets(c.Secret.Namespace).Get(c.Secret.Name, metav1.GetOptions{}) + s, err := cli.CoreV1().Secrets(c.Secret.Namespace).Get(ctx, c.Secret.Name, metav1.GetOptions{}) if err != nil { return nil, errors.WithStack(err) } @@ -269,7 +269,7 @@ func fetchSecretCredential(ctx context.Context, cli kubernetes.Interface, sr *cr if sr == nil { return nil, errors.New("Secret reference cannot be nil") } - s, err := cli.CoreV1().Secrets(sr.Namespace).Get(sr.Name, metav1.GetOptions{}) + s, err := cli.CoreV1().Secrets(sr.Namespace).Get(ctx, sr.Name, metav1.GetOptions{}) if err != nil { return nil, errors.Wrap(err, "Failed to fetch the secret") } @@ -296,7 +296,7 @@ func filterByKind(refs map[string]crv1alpha1.ObjectReference, kind string) map[s func fetchSecrets(ctx context.Context, cli kubernetes.Interface, refs map[string]crv1alpha1.ObjectReference) (map[string]v1.Secret, error) { secrets := make(map[string]v1.Secret, len(refs)) for name, ref := range refs { - s, err := cli.CoreV1().Secrets(ref.Namespace).Get(ref.Name, metav1.GetOptions{}) + s, err := cli.CoreV1().Secrets(ref.Namespace).Get(ctx, ref.Name, metav1.GetOptions{}) if err != nil { return nil, errors.WithStack(err) } @@ -308,7 +308,7 @@ func fetchSecrets(ctx context.Context, cli kubernetes.Interface, refs map[string func fetchConfigMaps(ctx context.Context, cli kubernetes.Interface, refs map[string]crv1alpha1.ObjectReference) (map[string]v1.ConfigMap, error) { configs := make(map[string]v1.ConfigMap, len(refs)) for name, ref := range refs { - c, err := cli.CoreV1().ConfigMaps(ref.Namespace).Get(ref.Name, metav1.GetOptions{}) + c, err := cli.CoreV1().ConfigMaps(ref.Namespace).Get(ctx, ref.Name, metav1.GetOptions{}) if err != nil { return nil, errors.WithStack(err) } @@ -318,7 +318,7 @@ func fetchConfigMaps(ctx context.Context, cli kubernetes.Interface, refs map[str } func fetchStatefulSetParams(ctx context.Context, cli kubernetes.Interface, namespace, name string) (*StatefulSetParams, error) { - ss, err := cli.AppsV1().StatefulSets(namespace).Get(name, metav1.GetOptions{}) + ss, err := cli.AppsV1().StatefulSets(namespace).Get(ctx, name, metav1.GetOptions{}) if err != nil { return nil, errors.WithStack(err) } @@ -346,7 +346,7 @@ func fetchStatefulSetParams(ctx context.Context, cli kubernetes.Interface, names func fetchDeploymentConfigParams(ctx context.Context, cli kubernetes.Interface, osCli osversioned.Interface, namespace, name string) (*DeploymentConfigParams, error) { // we will have to have another OpenShift cli to get the deployment config resource // because deploymentconfig is not standard kubernetes resource. - dc, err := osCli.AppsV1().DeploymentConfigs(namespace).Get(name, metav1.GetOptions{}) + dc, err := osCli.AppsV1().DeploymentConfigs(namespace).Get(ctx, name, metav1.GetOptions{}) if err != nil { return nil, errors.WithStack(err) } @@ -383,7 +383,7 @@ func fetchDeploymentConfigParams(ctx context.Context, cli kubernetes.Interface, } func fetchDeploymentParams(ctx context.Context, cli kubernetes.Interface, namespace, name string) (*DeploymentParams, error) { - d, err := cli.AppsV1().Deployments(namespace).Get(name, metav1.GetOptions{}) + d, err := cli.AppsV1().Deployments(namespace).Get(ctx, name, metav1.GetOptions{}) if err != nil { return nil, errors.WithStack(err) } @@ -438,7 +438,7 @@ func volumes(pod v1.Pod, volToPvc map[string]string) map[string]string { } func fetchPVCParams(ctx context.Context, cli kubernetes.Interface, namespace, name string) (*PVCParams, error) { - _, err := cli.CoreV1().PersistentVolumeClaims(namespace).Get(name, metav1.GetOptions{}) + _, err := cli.CoreV1().PersistentVolumeClaims(namespace).Get(ctx, name, metav1.GetOptions{}) if err != nil { return nil, errors.WithStack(err) } diff --git a/pkg/param/param_test.go b/pkg/param/param_test.go index 45af741327d..69e25451ecf 100644 --- a/pkg/param/param_test.go +++ b/pkg/param/param_test.go @@ -66,7 +66,7 @@ func (s *ParamsSuite) SetUpSuite(c *C) { GenerateName: "kanisterparamstest-", }, } - cns, err := s.cli.CoreV1().Namespaces().Create(ns) + cns, err := s.cli.CoreV1().Namespaces().Create(context.TODO(), ns, metav1.CreateOptions{}) c.Assert(err, IsNil) s.namespace = cns.Name s.dynCli = fakedyncli.NewSimpleDynamicClient(scheme.Scheme, cns) @@ -86,19 +86,19 @@ func (s *ParamsSuite) SetUpTest(c *C) { }, }, } - cPVC, err := s.cli.CoreV1().PersistentVolumeClaims(s.namespace).Create(pvc) + cPVC, err := s.cli.CoreV1().PersistentVolumeClaims(s.namespace).Create(context.TODO(), pvc, metav1.CreateOptions{}) c.Assert(err, IsNil) s.pvc = cPVC.Name } func (s *ParamsSuite) TearDownSuite(c *C) { if s.namespace != "" { - _ = s.cli.CoreV1().Namespaces().Delete(s.namespace, nil) + _ = s.cli.CoreV1().Namespaces().Delete(context.TODO(), s.namespace, metav1.DeleteOptions{}) } } func (s *ParamsSuite) TearDownTest(c *C) { - err := s.cli.CoreV1().PersistentVolumeClaims(s.namespace).Delete(s.pvc, &metav1.DeleteOptions{}) + err := s.cli.CoreV1().PersistentVolumeClaims(s.namespace).Delete(context.TODO(), s.pvc, metav1.DeleteOptions{}) c.Assert(err, IsNil) } @@ -226,7 +226,7 @@ func (s *ParamsSuite) TestFetchDeploymentConfigParams(c *C) { // create a deploymentconfig ctx := context.Background() - dc, err := s.osCli.AppsV1().DeploymentConfigs(s.namespace).Create(depConf) + dc, err := s.osCli.AppsV1().DeploymentConfigs(s.namespace).Create(ctx, depConf, metav1.CreateOptions{}) c.Assert(err, IsNil) // wait for deploymentconfig to be ready @@ -234,13 +234,13 @@ func (s *ParamsSuite) TestFetchDeploymentConfigParams(c *C) { c.Assert(err, IsNil) // get again achieve optimistic concurrency - newDep, err := s.osCli.AppsV1().DeploymentConfigs(s.namespace).Get(dc.Name, metav1.GetOptions{}) + newDep, err := s.osCli.AppsV1().DeploymentConfigs(s.namespace).Get(context.TODO(), dc.Name, metav1.GetOptions{}) c.Assert(err, IsNil) // edit the deploymentconfig newDep.Spec.Template.Spec.Containers[0].Name = "newname" // update the deploymentconfig - updatedDC, err := s.osCli.AppsV1().DeploymentConfigs(s.namespace).Update(newDep) + updatedDC, err := s.osCli.AppsV1().DeploymentConfigs(s.namespace).Update(context.TODO(), newDep, metav1.UpdateOptions{}) c.Assert(err, IsNil) // once updated, it will take some time to new replicationcontroller and pods to be up and running @@ -257,11 +257,11 @@ func (s *ParamsSuite) TestFetchDeploymentConfigParams(c *C) { c.Assert(dconf.Containers, DeepEquals, [][]string{{"newname"}}) // let's scale the deployment config and try things - dConfig, err := s.osCli.AppsV1().DeploymentConfigs(s.namespace).Get(dc.Name, metav1.GetOptions{}) + dConfig, err := s.osCli.AppsV1().DeploymentConfigs(s.namespace).Get(context.TODO(), dc.Name, metav1.GetOptions{}) c.Assert(err, IsNil) // scale the replicas to 3 dConfig.Spec.Replicas = 3 - updated, err := s.osCli.AppsV1().DeploymentConfigs(s.namespace).Update(dConfig) + updated, err := s.osCli.AppsV1().DeploymentConfigs(s.namespace).Update(context.TODO(), dConfig, metav1.UpdateOptions{}) c.Assert(err, IsNil) // wait for deploymentconfig to be ready err = kube.WaitOnDeploymentConfigReady(ctx, s.osCli, s.cli, s.namespace, updated.Name) @@ -328,7 +328,7 @@ func (s *ParamsSuite) TestNewTemplateParamsStatefulSet(c *C) { func (s *ParamsSuite) TestNewTemplateParamsPVC(c *C) { ctx := context.Background() - pvc, err := s.cli.CoreV1().PersistentVolumeClaims(s.namespace).Get(s.pvc, metav1.GetOptions{}) + pvc, err := s.cli.CoreV1().PersistentVolumeClaims(s.namespace).Get(context.TODO(), s.pvc, metav1.GetOptions{}) c.Assert(err, IsNil) s.testNewTemplateParams(ctx, c, s.getDynamicClient(c, pvc), crv1alpha1.ObjectReference{Name: s.pvc, Namespace: s.namespace, Kind: PVCKind}) } @@ -341,13 +341,13 @@ func (s *ParamsSuite) TestNewTemplateParamsNamespace(c *C) { func (s *ParamsSuite) TestNewTemplateParamsUnstructured(c *C) { ctx := context.Background() // Lookup the "default" serviceaccount in the test namespace - sa, err := s.cli.CoreV1().ServiceAccounts(s.namespace).Get("default", metav1.GetOptions{}) + sa, err := s.cli.CoreV1().ServiceAccounts(s.namespace).Get(context.TODO(), "default", metav1.GetOptions{}) c.Assert(err, IsNil) s.testNewTemplateParams(ctx, c, s.getDynamicClient(c, sa), crv1alpha1.ObjectReference{Name: "default", Namespace: s.namespace, Group: "", APIVersion: "v1", Resource: "serviceaccounts"}) } func (s *ParamsSuite) getDynamicClient(c *C, objects ...runtime.Object) dynamic.Interface { - ns, err := s.cli.CoreV1().Namespaces().Get(s.namespace, metav1.GetOptions{}) + ns, err := s.cli.CoreV1().Namespaces().Get(context.TODO(), s.namespace, metav1.GetOptions{}) c.Assert(err, IsNil) objects = append(objects, ns) return fakedyncli.NewSimpleDynamicClient(scheme.Scheme, objects...) @@ -387,19 +387,21 @@ func (s *ParamsSuite) testNewTemplateParams(ctx context.Context, c *C, dynCli dy }, }, } - _, err = s.cli.CoreV1().Secrets(s.namespace).Create(secret) + _, err = s.cli.CoreV1().Secrets(s.namespace).Create(context.TODO(), secret, metav1.CreateOptions{}) c.Assert(err, IsNil) - defer func() { _ = s.cli.CoreV1().Secrets(s.namespace).Delete("secret-name", &metav1.DeleteOptions{}) }() + defer func() { + _ = s.cli.CoreV1().Secrets(s.namespace).Delete(context.TODO(), "secret-name", metav1.DeleteOptions{}) + }() - _, err = s.cli.CoreV1().Secrets(s.namespace).Get("secret-name", metav1.GetOptions{}) + _, err = s.cli.CoreV1().Secrets(s.namespace).Get(context.TODO(), "secret-name", metav1.GetOptions{}) c.Assert(err, IsNil) osCli := osfake.NewSimpleClientset() crCli := crfake.NewSimpleClientset() - _, err = crCli.CrV1alpha1().Profiles(s.namespace).Create(prof) + _, err = crCli.CrV1alpha1().Profiles(s.namespace).Create(context.TODO(), prof, metav1.CreateOptions{}) c.Assert(err, IsNil) - _, err = crCli.CrV1alpha1().Profiles(s.namespace).Get("profName", metav1.GetOptions{}) + _, err = crCli.CrV1alpha1().Profiles(s.namespace).Get(context.TODO(), "profName", metav1.GetOptions{}) c.Assert(err, IsNil) as := crv1alpha1.ActionSpec{ @@ -530,11 +532,11 @@ func (s *ParamsSuite) TestProfile(c *C) { } cli := fake.NewSimpleClientset(ss, pod, secret) dynCli := fakedyncli.NewSimpleDynamicClient(scheme.Scheme, ss) - _, err := cli.AppsV1().StatefulSets("").Get("", metav1.GetOptions{}) + _, err := cli.AppsV1().StatefulSets("").List(context.TODO(), metav1.ListOptions{}) c.Assert(err, IsNil) - _, err = cli.CoreV1().Pods("").Get("", metav1.GetOptions{}) + _, err = cli.CoreV1().Pods("").List(context.TODO(), metav1.ListOptions{}) c.Assert(err, IsNil) - _, err = cli.CoreV1().Secrets("").Get("", metav1.GetOptions{}) + _, err = cli.CoreV1().Secrets("").List(context.TODO(), metav1.ListOptions{}) c.Assert(err, IsNil) prof := &crv1alpha1.Profile{ @@ -554,6 +556,7 @@ func (s *ParamsSuite) TestProfile(c *C) { }, }, } + as := &crv1alpha1.ActionSet{ ObjectMeta: metav1.ObjectMeta{ Name: "asName", @@ -567,19 +570,27 @@ func (s *ParamsSuite) TestProfile(c *C) { Name: "ssName", Namespace: s.namespace, }, - Profile: &crv1alpha1.ObjectReference{}, + Profile: &crv1alpha1.ObjectReference{ + Name: "profName", + Namespace: s.namespace, + }, }, }, }, } + // asList := &crv1alpha1.ActionSetList{ + // Items: []*crv1alpha1.ActionSet{ + // as, + // }, + // } crCli := crfake.NewSimpleClientset() - _, err = crCli.CrV1alpha1().ActionSets(s.namespace).Create(as) + _, err = crCli.CrV1alpha1().ActionSets(s.namespace).Create(context.TODO(), as, metav1.CreateOptions{}) c.Assert(err, IsNil) - _, err = crCli.CrV1alpha1().ActionSets(s.namespace).Get("", metav1.GetOptions{}) + _, err = crCli.CrV1alpha1().ActionSets(s.namespace).List(context.TODO(), metav1.ListOptions{}) c.Assert(err, IsNil) - _, err = crCli.CrV1alpha1().Profiles(s.namespace).Create(prof) + _, err = crCli.CrV1alpha1().Profiles(s.namespace).Create(context.TODO(), prof, metav1.CreateOptions{}) c.Assert(err, IsNil) - _, err = crCli.CrV1alpha1().Profiles(s.namespace).Get("", metav1.GetOptions{}) + _, err = crCli.CrV1alpha1().Profiles(s.namespace).List(context.TODO(), metav1.ListOptions{}) c.Assert(err, IsNil) osCli := osfake.NewSimpleClientset() @@ -630,21 +641,23 @@ func (s *ParamsSuite) TestPhaseParams(c *C) { }, }, } - secret, err := s.cli.CoreV1().Secrets(s.namespace).Create(secret) + secret, err := s.cli.CoreV1().Secrets(s.namespace).Create(context.TODO(), secret, metav1.CreateOptions{}) c.Assert(err, IsNil) - defer func() { _ = s.cli.CoreV1().Secrets(s.namespace).Delete("secret-name", &metav1.DeleteOptions{}) }() + defer func() { + _ = s.cli.CoreV1().Secrets(s.namespace).Delete(context.TODO(), "secret-name", metav1.DeleteOptions{}) + }() - _, err = s.cli.CoreV1().Secrets(s.namespace).Get("secret-name", metav1.GetOptions{}) + _, err = s.cli.CoreV1().Secrets(s.namespace).Get(context.TODO(), "secret-name", metav1.GetOptions{}) c.Assert(err, IsNil) - pvc, err := s.cli.CoreV1().PersistentVolumeClaims(s.namespace).Get(s.pvc, metav1.GetOptions{}) + pvc, err := s.cli.CoreV1().PersistentVolumeClaims(s.namespace).Get(context.TODO(), s.pvc, metav1.GetOptions{}) c.Assert(err, IsNil) dynCli := s.getDynamicClient(c, pvc) crCli := crfake.NewSimpleClientset() osCli := osfake.NewSimpleClientset() - _, err = crCli.CrV1alpha1().Profiles(s.namespace).Create(prof) + _, err = crCli.CrV1alpha1().Profiles(s.namespace).Create(context.TODO(), prof, metav1.CreateOptions{}) c.Assert(err, IsNil) - _, err = crCli.CrV1alpha1().Profiles(s.namespace).Get("profName", metav1.GetOptions{}) + _, err = crCli.CrV1alpha1().Profiles(s.namespace).Get(context.TODO(), "profName", metav1.GetOptions{}) c.Assert(err, IsNil) as := crv1alpha1.ActionSpec{ Object: crv1alpha1.ObjectReference{ diff --git a/pkg/reconcile/reconcile.go b/pkg/reconcile/reconcile.go index 98602405538..543ec7d14f6 100644 --- a/pkg/reconcile/reconcile.go +++ b/pkg/reconcile/reconcile.go @@ -20,7 +20,7 @@ import ( "github.com/pkg/errors" apierrors "k8s.io/apimachinery/pkg/api/errors" - "k8s.io/apimachinery/pkg/apis/meta/v1" + metav1 "k8s.io/apimachinery/pkg/apis/meta/v1" crv1alpha1 "github.com/kanisterio/kanister/pkg/apis/cr/v1alpha1" crclientv1alpha1 "github.com/kanisterio/kanister/pkg/client/clientset/versioned/typed/cr/v1alpha1" @@ -32,7 +32,7 @@ import ( // ActionSet stored in the API server. func ActionSet(ctx context.Context, cli crclientv1alpha1.CrV1alpha1Interface, ns, name string, f func(*crv1alpha1.ActionSet) error) error { return poll.Wait(ctx, func(ctx context.Context) (bool, error) { - as, err := cli.ActionSets(ns).Get(name, v1.GetOptions{}) + as, err := cli.ActionSets(ns).Get(ctx, name, metav1.GetOptions{}) if err != nil { return false, errors.WithStack(err) } @@ -45,7 +45,7 @@ func ActionSet(ctx context.Context, cli crclientv1alpha1.CrV1alpha1Interface, ns if err = validate.ActionSet(as); err != nil { return false, err } - _, err = cli.ActionSets(as.GetNamespace()).Update(as) + _, err = cli.ActionSets(as.GetNamespace()).Update(ctx, as, metav1.UpdateOptions{}) // If we get a version conflict, we backoff and try again. if apierrors.IsConflict(err) { return false, nil diff --git a/pkg/reconcile/reconcile_test.go b/pkg/reconcile/reconcile_test.go index b1c2f602b4b..09848ebe552 100644 --- a/pkg/reconcile/reconcile_test.go +++ b/pkg/reconcile/reconcile_test.go @@ -20,7 +20,7 @@ import ( "testing" . "gopkg.in/check.v1" - "k8s.io/api/core/v1" + v1 "k8s.io/api/core/v1" metav1 "k8s.io/apimachinery/pkg/apis/meta/v1" "k8s.io/client-go/kubernetes" @@ -60,7 +60,7 @@ func (s *ReconcileSuite) SetUpSuite(c *C) { GenerateName: "reconciletest-", }, } - cns, err := cli.CoreV1().Namespaces().Create(ns) + cns, err := cli.CoreV1().Namespaces().Create(context.TODO(), ns, metav1.CreateOptions{}) c.Assert(err, IsNil) s.namespace = cns.Name @@ -95,14 +95,14 @@ func (s *ReconcileSuite) SetUpSuite(c *C) { State: crv1alpha1.StatePending, }, } - as, err = s.crCli.ActionSets(s.namespace).Create(as) + as, err = s.crCli.ActionSets(s.namespace).Create(context.TODO(), as, metav1.CreateOptions{}) c.Assert(err, IsNil) s.as = as } func (s *ReconcileSuite) TearDownSuite(c *C) { if s.namespace != "" { - _ = s.cli.CoreV1().Namespaces().Delete(s.namespace, nil) + _ = s.cli.CoreV1().Namespaces().Delete(context.TODO(), s.namespace, metav1.DeleteOptions{}) } } @@ -115,7 +115,7 @@ func (s *ReconcileSuite) TestSetFailed(c *C) { }) c.Assert(err, IsNil) - as, err := s.crCli.ActionSets(s.namespace).Get(s.as.GetName(), metav1.GetOptions{}) + as, err := s.crCli.ActionSets(s.namespace).Get(ctx, s.as.GetName(), metav1.GetOptions{}) c.Assert(err, IsNil) c.Assert(as.Status.State, Equals, crv1alpha1.StateFailed) } diff --git a/pkg/resource/resource_test.go b/pkg/resource/resource_test.go index 154b411bba5..ee186661f52 100644 --- a/pkg/resource/resource_test.go +++ b/pkg/resource/resource_test.go @@ -19,7 +19,7 @@ import ( "testing" . "gopkg.in/check.v1" - "k8s.io/api/core/v1" + v1 "k8s.io/api/core/v1" metav1 "k8s.io/apimachinery/pkg/apis/meta/v1" "k8s.io/client-go/kubernetes" @@ -47,14 +47,14 @@ func (s *ResourceSuite) SetUpSuite(c *C) { GenerateName: "kanistercontrollertest-", }, } - cns, err := s.cli.CoreV1().Namespaces().Create(ns) + cns, err := s.cli.CoreV1().Namespaces().Create(context.TODO(), ns, metav1.CreateOptions{}) c.Assert(err, IsNil) s.namespace = cns.Name } func (s *ResourceSuite) TearDownSuite(c *C) { if s.namespace != "" { - _ = s.cli.CoreV1().Namespaces().Delete(s.namespace, nil) + _ = s.cli.CoreV1().Namespaces().Delete(context.TODO(), s.namespace, metav1.DeleteOptions{}) } } @@ -76,28 +76,28 @@ func (s *ResourceSuite) TestActionSetClient(c *C) { Name: name, }, } - as1, err := cli.ActionSets(s.namespace).Create(as) + as1, err := cli.ActionSets(s.namespace).Create(ctx, as, metav1.CreateOptions{}) c.Assert(err, IsNil) c.Assert(as, NotNil) - as2, err := cli.ActionSets(s.namespace).Get(name, emptyGetOptions) + as2, err := cli.ActionSets(s.namespace).Get(ctx, name, emptyGetOptions) c.Assert(err, IsNil) c.Assert(as1, DeepEquals, as2) as2.Spec = &crv1alpha1.ActionSetSpec{} - as3, err := cli.ActionSets(s.namespace).Update(as2) + as3, err := cli.ActionSets(s.namespace).Update(context.TODO(), as2, metav1.UpdateOptions{}) c.Assert(err, IsNil) c.Assert(as1.Spec, IsNil) c.Assert(as3.Spec, NotNil) - as4, err := cli.ActionSets(s.namespace).Get(name, emptyGetOptions) + as4, err := cli.ActionSets(s.namespace).Get(context.TODO(), name, emptyGetOptions) c.Assert(err, IsNil) c.Assert(as4, DeepEquals, as3) - err = cli.ActionSets(s.namespace).Delete(name, nil) + err = cli.ActionSets(s.namespace).Delete(context.TODO(), name, metav1.DeleteOptions{}) c.Assert(err, IsNil) - _, err = cli.ActionSets(s.namespace).Get(name, emptyGetOptions) + _, err = cli.ActionSets(s.namespace).Get(context.TODO(), name, emptyGetOptions) c.Assert(err, NotNil) } @@ -117,27 +117,27 @@ func (s *ResourceSuite) TestBlueprintClient(c *C) { Name: name, }, } - bp1, err := cli.Blueprints(s.namespace).Create(bp) + bp1, err := cli.Blueprints(s.namespace).Create(ctx, bp, metav1.CreateOptions{}) c.Assert(err, IsNil) c.Assert(bp, NotNil) - bp2, err := cli.Blueprints(s.namespace).Get(name, emptyGetOptions) + bp2, err := cli.Blueprints(s.namespace).Get(ctx, name, emptyGetOptions) c.Assert(err, IsNil) c.Assert(bp1, DeepEquals, bp2) bp2.Actions = map[string]*crv1alpha1.BlueprintAction{} - bp3, err := cli.Blueprints(s.namespace).Update(bp2) + bp3, err := cli.Blueprints(s.namespace).Update(context.TODO(), bp2, metav1.UpdateOptions{}) c.Assert(err, IsNil) c.Assert(bp1.Actions, IsNil) c.Assert(bp3.Actions, NotNil) - bp4, err := cli.Blueprints(s.namespace).Get(name, emptyGetOptions) + bp4, err := cli.Blueprints(s.namespace).Get(context.TODO(), name, emptyGetOptions) c.Assert(err, IsNil) c.Assert(bp4, DeepEquals, bp3) - err = cli.Blueprints(s.namespace).Delete(name, nil) + err = cli.Blueprints(s.namespace).Delete(context.TODO(), name, metav1.DeleteOptions{}) c.Assert(err, IsNil) - _, err = cli.Blueprints(s.namespace).Get(name, emptyGetOptions) + _, err = cli.Blueprints(s.namespace).Get(context.TODO(), name, emptyGetOptions) c.Assert(err, NotNil) } diff --git a/pkg/testing/e2e_test.go b/pkg/testing/e2e_test.go index f16d1e8c844..ac09ce19aef 100644 --- a/pkg/testing/e2e_test.go +++ b/pkg/testing/e2e_test.go @@ -59,7 +59,7 @@ func (s *E2ESuite) SetUpSuite(c *C) { GenerateName: "e2e-test-", }, } - cns, err := s.cli.CoreV1().Namespaces().Create(ns) + cns, err := s.cli.CoreV1().Namespaces().Create(context.TODO(), ns, metav1.CreateOptions{}) c.Assert(err, IsNil) s.namespace = cns.GetName() @@ -75,7 +75,7 @@ func (s *E2ESuite) SetUpSuite(c *C) { func (s *E2ESuite) TearDownSuite(c *C) { if s.namespace != "" { - s.cli.CoreV1().Namespaces().Delete(s.namespace, nil) + s.cli.CoreV1().Namespaces().Delete(context.TODO(), s.namespace, metav1.DeleteOptions{}) } if s.cancel != nil { s.cancel() @@ -87,18 +87,18 @@ func (s *E2ESuite) TestKubeExec(c *C) { defer can() // Create a test Deployment - d, err := s.cli.AppsV1().Deployments(s.namespace).Create(testutil.NewTestDeployment(1)) + d, err := s.cli.AppsV1().Deployments(s.namespace).Create(ctx, testutil.NewTestDeployment(1), metav1.CreateOptions{}) c.Assert(err, IsNil) err = kube.WaitOnDeploymentReady(ctx, s.cli, s.namespace, d.GetName()) c.Assert(err, IsNil) // Create a dummy Profile and secret sec := testutil.NewTestProfileSecret() - sec, err = s.cli.CoreV1().Secrets(s.namespace).Create(sec) + sec, err = s.cli.CoreV1().Secrets(s.namespace).Create(ctx, sec, metav1.CreateOptions{}) c.Assert(err, IsNil) p := testutil.NewTestProfile(s.namespace, sec.GetName()) - p, err = s.crCli.Profiles(s.namespace).Create(p) + p, err = s.crCli.Profiles(s.namespace).Create(ctx, p, metav1.CreateOptions{}) c.Assert(err, IsNil) // Create a simple Blueprint @@ -124,7 +124,7 @@ func (s *E2ESuite) TestKubeExec(c *C) { }, }, } - bp, err = s.crCli.Blueprints(s.namespace).Create(bp) + bp, err = s.crCli.Blueprints(s.namespace).Create(ctx, bp, metav1.CreateOptions{}) c.Assert(err, IsNil) // Create an ActionSet @@ -150,12 +150,12 @@ func (s *E2ESuite) TestKubeExec(c *C) { }, }, } - as, err = s.crCli.ActionSets(s.namespace).Create(as) + as, err = s.crCli.ActionSets(s.namespace).Create(ctx, as, metav1.CreateOptions{}) c.Assert(err, IsNil) // Wait for the ActionSet to complete. err = poll.Wait(ctx, func(ctx context.Context) (bool, error) { - as, err = s.crCli.ActionSets(s.namespace).Get(as.GetName(), metav1.GetOptions{}) + as, err = s.crCli.ActionSets(s.namespace).Get(ctx, as.GetName(), metav1.GetOptions{}) switch { case err != nil, as.Status == nil: return false, err @@ -174,7 +174,7 @@ func (s *E2ESuite) TestKubeTask(c *C) { defer can() // Create a test Deployment - d, err := s.cli.AppsV1().Deployments(s.namespace).Create(testutil.NewTestDeployment(1)) + d, err := s.cli.AppsV1().Deployments(s.namespace).Create(ctx, testutil.NewTestDeployment(1), metav1.CreateOptions{}) c.Assert(err, IsNil) err = kube.WaitOnDeploymentReady(ctx, s.cli, s.namespace, d.GetName()) c.Assert(err, IsNil) @@ -189,7 +189,7 @@ func (s *E2ESuite) TestKubeTask(c *C) { "key": "bar", }, } - sec, err = s.cli.CoreV1().Secrets(s.namespace).Create(sec) + sec, err = s.cli.CoreV1().Secrets(s.namespace).Create(ctx, sec, metav1.CreateOptions{}) c.Assert(err, IsNil) p := &crv1alpha1.Profile{ ObjectMeta: metav1.ObjectMeta{ @@ -210,7 +210,7 @@ func (s *E2ESuite) TestKubeTask(c *C) { }, }, } - p, err = s.crCli.Profiles(s.namespace).Create(p) + p, err = s.crCli.Profiles(s.namespace).Create(ctx, p, metav1.CreateOptions{}) c.Assert(err, IsNil) // Create a simple Blueprint @@ -244,7 +244,7 @@ func (s *E2ESuite) TestKubeTask(c *C) { }, }, } - bp, err = s.crCli.Blueprints(s.namespace).Create(bp) + bp, err = s.crCli.Blueprints(s.namespace).Create(ctx, bp, metav1.CreateOptions{}) c.Assert(err, IsNil) // Create an ActionSet @@ -273,12 +273,12 @@ func (s *E2ESuite) TestKubeTask(c *C) { }, }, } - as, err = s.crCli.ActionSets(s.namespace).Create(as) + as, err = s.crCli.ActionSets(s.namespace).Create(ctx, as, metav1.CreateOptions{}) c.Assert(err, IsNil) // Wait for the ActionSet to complete. err = poll.Wait(ctx, func(ctx context.Context) (bool, error) { - as, err = s.crCli.ActionSets(s.namespace).Get(as.GetName(), metav1.GetOptions{}) + as, err = s.crCli.ActionSets(s.namespace).Get(ctx, as.GetName(), metav1.GetOptions{}) switch { case err != nil, as.Status == nil: return false, err diff --git a/pkg/testing/integration_test.go b/pkg/testing/integration_test.go index 0a322c61889..3c2630e75c1 100644 --- a/pkg/testing/integration_test.go +++ b/pkg/testing/integration_test.go @@ -96,7 +96,7 @@ func integrationCleanup(t *test.T) { kontroller.cancel() } if kontroller.namespace != "" { - kontroller.kubeCli.CoreV1().Namespaces().Delete(kontroller.namespace, nil) + kontroller.kubeCli.CoreV1().Namespaces().Delete(context.TODO(), kontroller.namespace, metav1.DeleteOptions{}) } } @@ -195,7 +195,7 @@ func (s *IntegrationSuite) TestRun(c *C) { // Create blueprint bp := s.bp.Blueprint() c.Assert(bp, NotNil) - _, err = s.crCli.Blueprints(kontroller.namespace).Create(bp) + _, err = s.crCli.Blueprints(kontroller.namespace).Create(ctx, bp, metav1.CreateOptions{}) c.Assert(err, IsNil) var configMaps, secrets map[string]crv1alpha1.ObjectReference @@ -265,7 +265,7 @@ func (s *IntegrationSuite) TestRun(c *C) { } // Restore backup - pas, err := s.crCli.ActionSets(kontroller.namespace).Get(backup, metav1.GetOptions{}) + pas, err := s.crCli.ActionSets(kontroller.namespace).Get(ctx, backup, metav1.GetOptions{}) c.Assert(err, IsNil) s.createActionset(ctx, c, pas, "restore", restoreOptions) @@ -308,7 +308,7 @@ func newActionSet(bpName, profile, profileNs string, object crv1alpha1.ObjectRef } func (s *IntegrationSuite) createProfile(c *C) string { - secret, err := s.cli.CoreV1().Secrets(kontroller.namespace).Create(s.profile.secret) + secret, err := s.cli.CoreV1().Secrets(kontroller.namespace).Create(context.TODO(), s.profile.secret, metav1.CreateOptions{}) c.Assert(err, IsNil) // set secret ref in profile @@ -316,7 +316,7 @@ func (s *IntegrationSuite) createProfile(c *C) string { Name: secret.GetName(), Namespace: secret.GetNamespace(), } - profile, err := s.crCli.Profiles(kontroller.namespace).Create(s.profile.profile) + profile, err := s.crCli.Profiles(kontroller.namespace).Create(context.TODO(), s.profile.profile, metav1.CreateOptions{}) c.Assert(err, IsNil) return profile.GetName() @@ -353,7 +353,7 @@ func (s *IntegrationSuite) createActionset(ctx context.Context, c *C, as *crv1al switch action { case "backup": as.Spec.Actions[0].Options = options - as, err = s.crCli.ActionSets(kontroller.namespace).Create(as) + as, err = s.crCli.ActionSets(kontroller.namespace).Create(ctx, as, metav1.CreateOptions{}) c.Assert(err, IsNil) case "restore", "delete": as, err = restoreActionSetSpecs(as, action) @@ -370,7 +370,7 @@ func (s *IntegrationSuite) createActionset(ctx context.Context, c *C, as *crv1al Namespace: "", } } - as, err = s.crCli.ActionSets(kontroller.namespace).Create(as) + as, err = s.crCli.ActionSets(kontroller.namespace).Create(ctx, as, metav1.CreateOptions{}) c.Assert(err, IsNil) default: c.Errorf("Invalid action %s while creating ActionSet", action) @@ -378,7 +378,7 @@ func (s *IntegrationSuite) createActionset(ctx context.Context, c *C, as *crv1al // Wait for the ActionSet to complete. err = poll.Wait(ctx, func(ctx context.Context) (bool, error) { - as, err = s.crCli.ActionSets(kontroller.namespace).Get(as.GetName(), metav1.GetOptions{}) + as, err = s.crCli.ActionSets(kontroller.namespace).Get(ctx, as.GetName(), metav1.GetOptions{}) switch { case err != nil, as.Status == nil: return false, err @@ -409,7 +409,7 @@ func createNamespace(cli kubernetes.Interface, name string) error { Name: name, }, } - _, err := cli.CoreV1().Namespaces().Create(ns) + _, err := cli.CoreV1().Namespaces().Create(context.TODO(), ns, metav1.CreateOptions{}) if err != nil { return err } diff --git a/pkg/testutil/testutil_test.go b/pkg/testutil/testutil_test.go index a2a381ee02f..a15fe65e215 100644 --- a/pkg/testutil/testutil_test.go +++ b/pkg/testutil/testutil_test.go @@ -15,9 +15,11 @@ package testutil import ( + "context" "testing" . "gopkg.in/check.v1" + metav1 "k8s.io/apimachinery/pkg/apis/meta/v1" "k8s.io/client-go/kubernetes" kanister "github.com/kanisterio/kanister/pkg" @@ -42,26 +44,26 @@ func (s *TestUtilSuite) TestDeployment(c *C) { c.Assert(err, IsNil) ns := NewTestNamespace() - ns, err = cli.CoreV1().Namespaces().Create(ns) + ns, err = cli.CoreV1().Namespaces().Create(context.TODO(), ns, metav1.CreateOptions{}) c.Assert(err, IsNil) defer func() { - err := cli.CoreV1().Namespaces().Delete(ns.GetName(), nil) + err := cli.CoreV1().Namespaces().Delete(context.TODO(), ns.GetName(), metav1.DeleteOptions{}) c.Assert(err, IsNil) }() d := NewTestDeployment(1) - d, err = cli.AppsV1().Deployments(ns.GetName()).Create(d) + d, err = cli.AppsV1().Deployments(ns.GetName()).Create(context.TODO(), d, metav1.CreateOptions{}) c.Assert(err, IsNil) defer func() { - err = cli.AppsV1().Deployments(ns.GetName()).Delete(d.GetName(), nil) + err = cli.AppsV1().Deployments(ns.GetName()).Delete(context.TODO(), d.GetName(), metav1.DeleteOptions{}) c.Assert(err, IsNil) }() ss := NewTestStatefulSet(1) - ss, err = cli.AppsV1().StatefulSets(ns.GetName()).Create(ss) + ss, err = cli.AppsV1().StatefulSets(ns.GetName()).Create(context.TODO(), ss, metav1.CreateOptions{}) c.Assert(err, IsNil) defer func() { - err := cli.AppsV1().StatefulSets(ns.GetName()).Delete(ss.GetName(), nil) + err := cli.AppsV1().StatefulSets(ns.GetName()).Delete(context.TODO(), ss.GetName(), metav1.DeleteOptions{}) c.Assert(err, IsNil) }() @@ -82,9 +84,9 @@ func (s *TestUtilSuite) TestDeployment(c *C) { } cm := NewTestConfigMap() - cm, err = cli.CoreV1().ConfigMaps(ns.GetName()).Create(cm) + cm, err = cli.CoreV1().ConfigMaps(ns.GetName()).Create(context.TODO(), cm, metav1.CreateOptions{}) c.Assert(err, IsNil) - err = cli.CoreV1().ConfigMaps(ns.GetName()).Delete(cm.GetName(), nil) + err = cli.CoreV1().ConfigMaps(ns.GetName()).Delete(context.TODO(), cm.GetName(), metav1.DeleteOptions{}) c.Assert(err, IsNil) } @@ -92,17 +94,17 @@ func testCRs(c *C, cli crclientv1alpha1.CrV1alpha1Interface, namespace, poKind, var err error bp := NewTestBlueprint(poKind, FailFuncName) bp = BlueprintWithConfigMap(bp) - bp, err = cli.Blueprints(namespace).Create(bp) + bp, err = cli.Blueprints(namespace).Create(context.TODO(), bp, metav1.CreateOptions{}) c.Assert(err, IsNil) defer func() { - err := cli.Blueprints(namespace).Delete(bp.GetName(), nil) + err := cli.Blueprints(namespace).Delete(context.TODO(), bp.GetName(), metav1.DeleteOptions{}) c.Assert(err, IsNil) }() as := NewTestActionSet(namespace, bp.GetName(), poKind, poName, namespace, kanister.DefaultVersion) as = ActionSetWithConfigMap(as, "") - as, err = cli.ActionSets(namespace).Create(as) + as, err = cli.ActionSets(namespace).Create(context.TODO(), as, metav1.CreateOptions{}) c.Assert(err, IsNil) - err = cli.ActionSets(namespace).Delete(as.GetName(), nil) + err = cli.ActionSets(namespace).Delete(context.TODO(), as.GetName(), metav1.DeleteOptions{}) c.Assert(err, IsNil) } diff --git a/pkg/validate/validate.go b/pkg/validate/validate.go index ea7fdf4a4a0..c47e534d010 100644 --- a/pkg/validate/validate.go +++ b/pkg/validate/validate.go @@ -297,7 +297,7 @@ func osSecretFromProfile(ctx context.Context, pType objectstore.ProviderType, p if kp == nil { return nil, errorf("Invalid credentials kv cannot be nil") } - s, err := cli.CoreV1().Secrets(kp.Secret.Namespace).Get(kp.Secret.Name, metav1.GetOptions{}) + s, err := cli.CoreV1().Secrets(kp.Secret.Namespace).Get(ctx, kp.Secret.Name, metav1.GetOptions{}) if err != nil { return nil, errorf("Could not fetch the secret specified in credential") } @@ -308,7 +308,7 @@ func osSecretFromProfile(ctx context.Context, pType objectstore.ProviderType, p return nil, errorf("Value '%s' not found in secret '%s:%s'", kp.SecretField, s.GetNamespace(), s.GetName()) } case crv1alpha1.CredentialTypeSecret: - s, err := cli.CoreV1().Secrets(p.Credential.Secret.Namespace).Get(p.Credential.Secret.Name, metav1.GetOptions{}) + s, err := cli.CoreV1().Secrets(p.Credential.Secret.Namespace).Get(ctx, p.Credential.Secret.Name, metav1.GetOptions{}) if err != nil { return nil, errorf("Could not fetch the secret specified in credential") }