Skip to content

Commit 3b6dc4f

Browse files
sdudoladovSergey DudoladovJan-M
authored
Improve e2e tests (zalando#1111)
* icnrease vm size * cache deps * switch to the absolute cache path as cdp does not support shell expansion * do not pull non-existing image * manually install kind * add alias to kind * use full kind name * one more name change * install kind with other tools * add bind mounts instead of copying files * test fetching the runner image * build image for pierone * bump up the client-go version to match the master * bump up go version * install pinned version of kind before any test run * do not overwrite local ./manifests during test run * update the docs * fix kind name * update go.* files * fix deps * avoid unnecessary image upload * properly install kind * Change network to host to make it reachable within e2e runner. May not be the right solution though. * Small changes. Also use entrypoint vs cmd. * Bumping spilo. Load before test. * undo incorrect merge from the master Co-authored-by: Sergey Dudoladov <[email protected]> Co-authored-by: Jan Mußler <[email protected]>
1 parent ffdb47f commit 3b6dc4f

File tree

10 files changed

+71
-63
lines changed

10 files changed

+71
-63
lines changed

Makefile

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -97,4 +97,4 @@ test:
9797
GO111MODULE=on go test ./...
9898

9999
e2e: docker # build operator image to be tested
100-
cd e2e; make tools e2etest clean
100+
cd e2e; make e2etest

docs/developer.md

Lines changed: 5 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -237,9 +237,11 @@ kubectl logs acid-minimal-cluster-0
237237

238238
## End-to-end tests
239239

240-
The operator provides reference end-to-end tests (e2e) (as Docker image) to
241-
ensure various infrastructure parts work smoothly together. Each e2e execution
242-
tests a Postgres Operator image built from the current git branch. The test
240+
The operator provides reference end-to-end (e2e) tests to
241+
ensure various infrastructure parts work smoothly together. The test code is available at `e2e/tests`.
242+
The special `registry.opensource.zalan.do/acid/postgres-operator-e2e-tests-runner` image is used to run the tests. The container mounts the local `e2e/tests` directory at runtime, so whatever you modify in your local copy of the tests will be executed by a test runner. By maintaining a separate test runner image we avoid the need to re-build the e2e test image on every build.
243+
244+
Each e2e execution tests a Postgres Operator image built from the current git branch. The test
243245
runner creates a new local K8s cluster using [kind](https://kind.sigs.k8s.io/),
244246
utilizes provided manifest examples, and runs e2e tests contained in the `tests`
245247
folder. The K8s API client in the container connects to the `kind` cluster via

e2e/Dockerfile

Lines changed: 9 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -1,11 +1,12 @@
1-
# An image to perform the actual test. Do not forget to copy all necessary test
2-
# files here.
3-
FROM ubuntu:18.04
1+
# An image to run e2e tests.
2+
# The image does not include the tests; all necessary files are bind-mounted when a container starts.
3+
FROM ubuntu:20.04
44
LABEL maintainer="Team ACID @ Zalando <[email protected]>"
55

6-
COPY manifests ./manifests
7-
COPY exec.sh ./exec.sh
8-
COPY requirements.txt tests ./
6+
ENV TERM xterm-256color
7+
8+
COPY requirements.txt ./
9+
COPY scm-source.json ./
910

1011
RUN apt-get update \
1112
&& apt-get install --no-install-recommends -y \
@@ -14,13 +15,10 @@ RUN apt-get update \
1415
python3-pip \
1516
curl \
1617
&& pip3 install --no-cache-dir -r requirements.txt \
17-
&& curl -LO https://storage.googleapis.com/kubernetes-release/release/v1.14.0/bin/linux/amd64/kubectl \
18+
&& curl -LO https://storage.googleapis.com/kubernetes-release/release/v1.18.0/bin/linux/amd64/kubectl \
1819
&& chmod +x ./kubectl \
1920
&& mv ./kubectl /usr/local/bin/kubectl \
2021
&& apt-get clean \
2122
&& rm -rf /var/lib/apt/lists/*
2223

23-
ARG VERSION=dev
24-
RUN sed -i "s/__version__ = .*/__version__ = '${VERSION}'/" ./__init__.py
25-
26-
CMD ["python3", "-m", "unittest", "discover", "--start-directory", ".", "-v"]
24+
ENTRYPOINT ["python3", "-m", "unittest", "discover", "--start-directory", ".", "-v"]

e2e/Makefile

Lines changed: 12 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
.PHONY: clean copy docker push tools test
22

3-
BINARY ?= postgres-operator-e2e-tests
3+
BINARY ?= postgres-operator-e2e-tests-runner
44
BUILD_FLAGS ?= -v
55
CGO_ENABLED ?= 0
66
ifeq ($(RACE),1)
@@ -34,15 +34,20 @@ copy: clean
3434
mkdir manifests
3535
cp ../manifests -r .
3636

37-
docker: copy
38-
docker build --build-arg "VERSION=$(VERSION)" -t "$(IMAGE):$(TAG)" .
37+
docker: scm-source.json
38+
docker build -t "$(IMAGE):$(TAG)" .
39+
40+
scm-source.json: ../.git
41+
echo '{\n "url": "git:$(GITURL)",\n "revision": "$(GITHEAD)",\n "author": "$(USER)",\n "status": "$(GITSTATUS)"\n}' > scm-source.json
3942

4043
push: docker
4144
docker push "$(IMAGE):$(TAG)"
4245

43-
tools: docker
46+
tools:
4447
# install pinned version of 'kind'
45-
GO111MODULE=on go get sigs.k8s.io/[email protected]
48+
# go get must run outside of a dir with a (module-based) Go project !
49+
# otherwise go get updates project's dependencies and/or behaves differently
50+
cd "/tmp" && GO111MODULE=on go get sigs.k8s.io/[email protected]
4651

47-
e2etest:
48-
./run.sh
52+
e2etest: tools copy clean
53+
./run.sh main

e2e/kind-cluster-postgres-operator-e2e-tests.yaml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
kind: Cluster
2-
apiVersion: kind.sigs.k8s.io/v1alpha3
2+
apiVersion: kind.x-k8s.io/v1alpha4
33
nodes:
44
- role: control-plane
55
- role: worker

e2e/run.sh

Lines changed: 28 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -6,29 +6,29 @@ set -o nounset
66
set -o pipefail
77
IFS=$'\n\t'
88

9-
cd $(dirname "$0");
10-
119
readonly cluster_name="postgres-operator-e2e-tests"
1210
readonly kubeconfig_path="/tmp/kind-config-${cluster_name}"
11+
readonly spilo_image="registry.opensource.zalan.do/acid/spilo-12:1.6-p5"
1312

14-
function pull_images(){
13+
echo "Clustername: ${cluster_name}"
14+
echo "Kubeconfig path: ${kubeconfig_path}"
1515

16+
function pull_images(){
1617
operator_tag=$(git describe --tags --always --dirty)
1718
if [[ -z $(docker images -q registry.opensource.zalan.do/acid/postgres-operator:${operator_tag}) ]]
1819
then
1920
docker pull registry.opensource.zalan.do/acid/postgres-operator:latest
2021
fi
21-
if [[ -z $(docker images -q registry.opensource.zalan.do/acid/postgres-operator-e2e-tests:${operator_tag}) ]]
22-
then
23-
docker pull registry.opensource.zalan.do/acid/postgres-operator-e2e-tests:latest
24-
fi
2522

2623
operator_image=$(docker images --filter=reference="registry.opensource.zalan.do/acid/postgres-operator" --format "{{.Repository}}:{{.Tag}}" | head -1)
27-
e2e_test_image=$(docker images --filter=reference="registry.opensource.zalan.do/acid/postgres-operator-e2e-tests" --format "{{.Repository}}:{{.Tag}}" | head -1)
24+
25+
# this image does not contain the tests; a container mounts them from a local "./tests" dir at start time
26+
e2e_test_runner_image="registry.opensource.zalan.do/acid/postgres-operator-e2e-tests-runner:latest"
27+
docker pull ${e2e_test_runner_image}
2828
}
2929

3030
function start_kind(){
31-
31+
echo "Starting kind for e2e tests"
3232
# avoid interference with previous test runs
3333
if [[ $(kind get clusters | grep "^${cluster_name}*") != "" ]]
3434
then
@@ -38,10 +38,12 @@ function start_kind(){
3838
export KUBECONFIG="${kubeconfig_path}"
3939
kind create cluster --name ${cluster_name} --config kind-cluster-postgres-operator-e2e-tests.yaml
4040
kind load docker-image "${operator_image}" --name ${cluster_name}
41-
kind load docker-image "${e2e_test_image}" --name ${cluster_name}
41+
docker pull "${spilo_image}"
42+
kind load docker-image "${spilo_image}" --name ${cluster_name}
4243
}
4344

4445
function set_kind_api_server_ip(){
46+
echo "Setting up kind API server ip"
4547
# use the actual kubeconfig to connect to the 'kind' API server
4648
# but update the IP address of the API server to the one from the Docker 'bridge' network
4749
readonly local kind_api_server_port=6443 # well-known in the 'kind' codebase
@@ -50,10 +52,21 @@ function set_kind_api_server_ip(){
5052
}
5153

5254
function run_tests(){
53-
docker run --rm --network kind --mount type=bind,source="$(readlink -f ${kubeconfig_path})",target=/root/.kube/config -e OPERATOR_IMAGE="${operator_image}" "${e2e_test_image}"
55+
echo "Running tests..."
56+
57+
# tests modify files in ./manifests, so we mount a copy of this directory done by the e2e Makefile
58+
59+
docker run --rm --network=host -e "TERM=xterm-256color" \
60+
--mount type=bind,source="$(readlink -f ${kubeconfig_path})",target=/root/.kube/config \
61+
--mount type=bind,source="$(readlink -f manifests)",target=/manifests \
62+
--mount type=bind,source="$(readlink -f tests)",target=/tests \
63+
--mount type=bind,source="$(readlink -f exec.sh)",target=/exec.sh \
64+
-e OPERATOR_IMAGE="${operator_image}" "${e2e_test_runner_image}"
65+
5466
}
5567

5668
function clean_up(){
69+
echo "Executing cleanup"
5770
unset KUBECONFIG
5871
kind delete cluster --name ${cluster_name}
5972
rm -rf ${kubeconfig_path}
@@ -63,11 +76,11 @@ function main(){
6376

6477
trap "clean_up" QUIT TERM EXIT
6578

66-
pull_images
67-
start_kind
68-
set_kind_api_server_ip
79+
time pull_images
80+
time start_kind
81+
time set_kind_api_server_ip
6982
run_tests
7083
exit 0
7184
}
7285

73-
main "$@"
86+
"$@"

e2e/tests/test_e2e.py

Lines changed: 7 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -34,6 +34,7 @@ def setUpClass(cls):
3434
In the case of test failure the cluster will stay to enable manual examination;
3535
next invocation of "make test" will re-create it.
3636
'''
37+
print("Test Setup being executed")
3738

3839
# set a single K8s wrapper for all tests
3940
k8s = cls.k8s = K8s()
@@ -216,7 +217,8 @@ def test_infrastructure_roles(self):
216217
k8s = self.k8s
217218
# update infrastructure roles description
218219
secret_name = "postgresql-infrastructure-roles"
219-
roles = "secretname: postgresql-infrastructure-roles-new, userkey: user, rolekey: memberof, passwordkey: password, defaultrolevalue: robot_zmon"
220+
roles = "secretname: postgresql-infrastructure-roles-new, \
221+
userkey: user, rolekey: memberof, passwordkey: password, defaultrolevalue: robot_zmon"
220222
patch_infrastructure_roles = {
221223
"data": {
222224
"infrastructure_roles_secret_name": secret_name,
@@ -313,7 +315,8 @@ def test_lazy_spilo_upgrade(self):
313315
image0 = k8s.get_effective_pod_image(pod0)
314316
image1 = k8s.get_effective_pod_image(pod1)
315317

316-
assert_msg = "Disabling lazy upgrade failed: pods still have different images {} and {}".format(image0, image1)
318+
assert_msg = "Disabling lazy upgrade failed: pods still have different \
319+
images {} and {}".format(image0, image1)
317320
self.assertEqual(image0, image1, assert_msg)
318321

319322
except timeout_decorator.TimeoutError:
@@ -710,11 +713,11 @@ def test_x_cluster_deletion(self):
710713
time.sleep(10)
711714

712715
# add annotations to manifest
713-
deleteDate = datetime.today().strftime('%Y-%m-%d')
716+
delete_date = datetime.today().strftime('%Y-%m-%d')
714717
pg_patch_delete_annotations = {
715718
"metadata": {
716719
"annotations": {
717-
"delete-date": deleteDate,
720+
"delete-date": delete_date,
718721
"delete-clustername": "acid-minimal-cluster",
719722
}
720723
}

go.mod

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -10,12 +10,12 @@ require (
1010
github.com/sirupsen/logrus v1.6.0
1111
github.com/stretchr/testify v1.5.1
1212
golang.org/x/crypto v0.0.0-20200622213623-75b288015ac9
13-
golang.org/x/tools v0.0.0-20200826040757-bc8aaaa29e06 // indirect
13+
golang.org/x/tools v0.0.0-20200828161849-5deb26317202 // indirect
1414
golang.org/x/xerrors v0.0.0-20200804184101-5ec99f83aff1 // indirect
1515
gopkg.in/yaml.v2 v2.2.8
1616
k8s.io/api v0.18.8
1717
k8s.io/apiextensions-apiserver v0.18.0
1818
k8s.io/apimachinery v0.18.8
19-
k8s.io/client-go v0.18.6
19+
k8s.io/client-go v0.18.8
2020
k8s.io/code-generator v0.18.8
2121
)

go.sum

Lines changed: 4 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -137,7 +137,6 @@ github.com/golang/mock v1.1.1/go.mod h1:oTYuIxOrZwtPieC+H1uAHpcLFnEyAGVDL/k47Jfb
137137
github.com/golang/mock v1.2.0/go.mod h1:oTYuIxOrZwtPieC+H1uAHpcLFnEyAGVDL/k47Jfbm0A=
138138
github.com/golang/protobuf v0.0.0-20161109072736-4bd1920723d7/go.mod h1:6lQm79b+lXiMfvg/cZm0SGofjICqVBUtrP5yJMmIC1U=
139139
github.com/golang/protobuf v1.2.0/go.mod h1:6lQm79b+lXiMfvg/cZm0SGofjICqVBUtrP5yJMmIC1U=
140-
github.com/golang/protobuf v1.3.1 h1:YF8+flBXS5eO826T4nzqPrxfhQThhXl0YzfuUPu4SBg=
141140
github.com/golang/protobuf v1.3.1/go.mod h1:6lQm79b+lXiMfvg/cZm0SGofjICqVBUtrP5yJMmIC1U=
142141
github.com/golang/protobuf v1.3.2 h1:6nsPYzhq5kReh6QImI3k5qWzO4PEbvbIW2cwSfR/6xs=
143142
github.com/golang/protobuf v1.3.2/go.mod h1:6lQm79b+lXiMfvg/cZm0SGofjICqVBUtrP5yJMmIC1U=
@@ -146,7 +145,6 @@ github.com/google/btree v1.0.0/go.mod h1:lNA+9X1NB3Zf8V7Ke586lFgjr2dZNuvo3lPJSGZ
146145
github.com/google/go-cmp v0.2.0/go.mod h1:oXzfMopK8JAjlY9xF4vHSVASa0yLyX7SntLO5aqRK0M=
147146
github.com/google/go-cmp v0.3.0 h1:crn/baboCvb5fXaQ0IJ1SGTsTVrWpDsCWC8EGETZijY=
148147
github.com/google/go-cmp v0.3.0/go.mod h1:8QqcDgzrUqlUb/G2PQTWiueGozuR1884gddMywk6iLU=
149-
github.com/google/gofuzz v1.0.0 h1:A8PeW59pxE9IoFRqBp37U+mSNaQoZ46F1f0f863XSXw=
150148
github.com/google/gofuzz v1.0.0/go.mod h1:dBl0BpW6vV/+mYPU4Po3pmUjxk6FQPldtuIdl/M65Eg=
151149
github.com/google/gofuzz v1.1.0 h1:Hsa8mG0dQ46ij8Sl2AYJDUv1oA9/d6Vk+3LG99Oe02g=
152150
github.com/google/gofuzz v1.1.0/go.mod h1:dBl0BpW6vV/+mYPU4Po3pmUjxk6FQPldtuIdl/M65Eg=
@@ -156,7 +154,6 @@ github.com/google/uuid v1.0.0/go.mod h1:TIyPZe4MgqvfeYDBFedMoGGpEw/LqOeaOT+nhxU+
156154
github.com/google/uuid v1.1.1 h1:Gkbcsh/GbpXz7lPftLA3P6TYMwjCLYm83jiFQZF/3gY=
157155
github.com/google/uuid v1.1.1/go.mod h1:TIyPZe4MgqvfeYDBFedMoGGpEw/LqOeaOT+nhxU+yHo=
158156
github.com/googleapis/gax-go/v2 v2.0.4/go.mod h1:0Wqv26UfaUD9n4G6kQubkQ+KchISgw+vpHVxEJEs9eg=
159-
github.com/googleapis/gnostic v0.0.0-20170729233727-0c5108395e2d h1:7XGaL1e6bYS1yIonGp9761ExpPPV1ui0SAC59Yube9k=
160157
github.com/googleapis/gnostic v0.0.0-20170729233727-0c5108395e2d/go.mod h1:sJBsCZ4ayReDTBIg8b9dl28c5xFWyhBTVRp3pOg5EKY=
161158
github.com/googleapis/gnostic v0.1.0 h1:rVsPeBmXbYv4If/cumu1AzZPwV58q433hvONV1UEZoI=
162159
github.com/googleapis/gnostic v0.1.0/go.mod h1:sJBsCZ4ayReDTBIg8b9dl28c5xFWyhBTVRp3pOg5EKY=
@@ -181,7 +178,6 @@ github.com/jmespath/go-jmespath v0.3.0 h1:OS12ieG61fsCg5+qLJ+SsW9NicxNkg3b25OyT2
181178
github.com/jmespath/go-jmespath v0.3.0/go.mod h1:9QtRXoHjLGCJ5IBSaohpXITPlowMeeYCZ7fLUTSywik=
182179
github.com/jonboulle/clockwork v0.1.0/go.mod h1:Ii8DK3G1RaLaWxj9trq07+26W01tbo22gdxWY5EU2bo=
183180
github.com/json-iterator/go v1.1.6/go.mod h1:+SdeFBvtyEkXs7REEP0seUULqWtbJapLOCVDaaPEHmU=
184-
github.com/json-iterator/go v1.1.7 h1:KfgG9LzI+pYjr4xvmz/5H4FXjokeP+rlHLhv3iH62Fo=
185181
github.com/json-iterator/go v1.1.7/go.mod h1:KdQUCv79m/52Kvf8AW2vK1V8akMuk1QjK/uOdHXbAo4=
186182
github.com/json-iterator/go v1.1.8 h1:QiWkFLKq0T7mpzwOTu6BzNDbfTE8OLrYhVKYMLF46Ok=
187183
github.com/json-iterator/go v1.1.8/go.mod h1:KdQUCv79m/52Kvf8AW2vK1V8akMuk1QjK/uOdHXbAo4=
@@ -272,7 +268,6 @@ github.com/spf13/cobra v0.0.5/go.mod h1:3K3wKZymM7VvHMDS9+Akkh4K60UwM26emMESw8tL
272268
github.com/spf13/jwalterweatherman v1.0.0/go.mod h1:cQK4TGJAtQXfYWX+Ddv3mKDzgVb68N+wFjFa4jdeBTo=
273269
github.com/spf13/pflag v0.0.0-20170130214245-9ff6c6923cff/go.mod h1:DYY7MBk1bdzusC3SYhjObp+wFpr4gzcvqqNjLnInEg4=
274270
github.com/spf13/pflag v1.0.1/go.mod h1:DYY7MBk1bdzusC3SYhjObp+wFpr4gzcvqqNjLnInEg4=
275-
github.com/spf13/pflag v1.0.3 h1:zPAT6CGy6wXeQ7NtTnaTerfKOsV6V6F8agHXFiazDkg=
276271
github.com/spf13/pflag v1.0.3/go.mod h1:DYY7MBk1bdzusC3SYhjObp+wFpr4gzcvqqNjLnInEg4=
277272
github.com/spf13/pflag v1.0.5 h1:iy+VFUOCP1a+8yFto/drg2CJ5u0yRoB7fZw3DKv/JXA=
278273
github.com/spf13/pflag v1.0.5/go.mod h1:McXfInJRrz4CZXVZOBLb0bTZqETkiAhM9Iw0y3An2Bg=
@@ -281,7 +276,6 @@ github.com/stretchr/objx v0.1.0/go.mod h1:HFkY916IF+rwdDfMAkV7OtwuqBVzrE8GR6GFx+
281276
github.com/stretchr/objx v0.1.1/go.mod h1:HFkY916IF+rwdDfMAkV7OtwuqBVzrE8GR6GFx+wExME=
282277
github.com/stretchr/objx v0.2.0/go.mod h1:qt09Ya8vawLte6SNmTgCsAVtYtaKzEcn8ATUoHMkEqE=
283278
github.com/stretchr/testify v1.2.2/go.mod h1:a8OnRcib4nhh0OaRAV+Yts87kKdq0PP7pXfy6kDkUVs=
284-
github.com/stretchr/testify v1.3.0 h1:TivCn/peBQ7UY8ooIcPgZFpTNSz0Q2U6UrFlUfqbe0Q=
285279
github.com/stretchr/testify v1.3.0/go.mod h1:M5WIy9Dh21IEIfnGCwXGc5bZfKNJtfHm1UVUgZn+9EI=
286280
github.com/stretchr/testify v1.4.0/go.mod h1:j7eGeouHqKxXV5pUuKE4zz7dFj8WfuZ+81PSLYec5m4=
287281
github.com/stretchr/testify v1.5.1 h1:nOGnQDM7FYENwehXlg/kFVnos3rEvtKTjRvOWSzb6H4=
@@ -375,7 +369,6 @@ golang.org/x/text v0.3.1-0.20180807135948-17ff2d5776d2/go.mod h1:NqM8EUOU14njkJ3
375369
golang.org/x/text v0.3.2 h1:tW2bmiBqwgJj/UpqtC8EpXEZVYOwU0yG4iWbprSVAcs=
376370
golang.org/x/text v0.3.2/go.mod h1:bEr9sfX3Q8Zfm5fL9x+3itogRgK3+ptLWKqgva+5dAk=
377371
golang.org/x/time v0.0.0-20180412165947-fbb02b2291d2/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ=
378-
golang.org/x/time v0.0.0-20181108054448-85acf8d2951c h1:fqgJT0MGcGpPgpWU7VRdRjuArfcOvC4AoJmILihzhDg=
379372
golang.org/x/time v0.0.0-20181108054448-85acf8d2951c/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ=
380373
golang.org/x/time v0.0.0-20190308202827-9d24e82272b4 h1:SvFZT6jyqRaOeXpc5h/JSfZenJ2O330aBsf7JfSUXmQ=
381374
golang.org/x/time v0.0.0-20190308202827-9d24e82272b4/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ=
@@ -393,11 +386,10 @@ golang.org/x/tools v0.0.0-20190614205625-5aca471b1d59/go.mod h1:/rFqwRUd4F7ZHNgw
393386
golang.org/x/tools v0.0.0-20190617190820-da514acc4774/go.mod h1:/rFqwRUd4F7ZHNgwSSTFct+R/Kf4OFW1sUzUTQQTgfc=
394387
golang.org/x/tools v0.0.0-20190920225731-5eefd052ad72/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo=
395388
golang.org/x/tools v0.0.0-20191119224855-298f0cb1881e/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo=
396-
golang.org/x/tools v0.0.0-20200826040757-bc8aaaa29e06 h1:ChBCbOHeLqK+j+znGPlWCcvx/t2PdxmyPBheVZxXbcc=
397-
golang.org/x/tools v0.0.0-20200826040757-bc8aaaa29e06/go.mod h1:njjCfa9FT2d7l9Bc6FUM5FLjQPp3cFF28FI3qnDFljA=
389+
golang.org/x/tools v0.0.0-20200828161849-5deb26317202 h1:DrWbY9UUFi/sl/3HkNVoBjDbGfIPZZfgoGsGxOL1EU8=
390+
golang.org/x/tools v0.0.0-20200828161849-5deb26317202/go.mod h1:njjCfa9FT2d7l9Bc6FUM5FLjQPp3cFF28FI3qnDFljA=
398391
golang.org/x/xerrors v0.0.0-20190717185122-a985d3407aa7/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0=
399392
golang.org/x/xerrors v0.0.0-20191011141410-1b5146add898/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0=
400-
golang.org/x/xerrors v0.0.0-20191204190536-9bdfabe68543 h1:E7g+9GITq07hpfrRu66IVDexMakfv52eLZ2CXBWiKr4=
401393
golang.org/x/xerrors v0.0.0-20191204190536-9bdfabe68543/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0=
402394
golang.org/x/xerrors v0.0.0-20200804184101-5ec99f83aff1 h1:go1bK/D/BFZV2I8cIQd1NKEZ+0owSTG1fDTci4IqFcE=
403395
golang.org/x/xerrors v0.0.0-20200804184101-5ec99f83aff1/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0=
@@ -431,7 +423,6 @@ gopkg.in/tomb.v1 v1.0.0-20141024135613-dd632973f1e7/go.mod h1:dt/ZhP58zS4L8KSrWD
431423
gopkg.in/yaml.v2 v2.0.0-20170812160011-eb3733d160e7/go.mod h1:JAlM8MvJe8wmxCU4Bli9HhUf9+ttbYbLASfIpnQbh74=
432424
gopkg.in/yaml.v2 v2.2.1/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI=
433425
gopkg.in/yaml.v2 v2.2.2/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI=
434-
gopkg.in/yaml.v2 v2.2.4 h1:/eiJrUcujPVeJ3xlSWaiNi3uSVmDGBK1pDHUHAnao1I=
435426
gopkg.in/yaml.v2 v2.2.4/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI=
436427
gopkg.in/yaml.v2 v2.2.8 h1:obN1ZagJSUGI0Ek/LBmuj4SNLPfIny3KsKFopxRdj10=
437428
gopkg.in/yaml.v2 v2.2.8/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI=
@@ -441,20 +432,17 @@ honnef.co/go/tools v0.0.0-20190106161140-3f1c8253044a/go.mod h1:rf3lG4BRIbNafJWh
441432
honnef.co/go/tools v0.0.0-20190523083050-ea95bdfd59fc h1:/hemPrYIhOhy8zYrNj+069zDB68us2sMGsfkFJO0iZs=
442433
honnef.co/go/tools v0.0.0-20190523083050-ea95bdfd59fc/go.mod h1:rf3lG4BRIbNafJWhAfAdb/ePZxsR/4RtNHQocxwk9r4=
443434
k8s.io/api v0.18.0/go.mod h1:q2HRQkfDzHMBZL9l/y9rH63PkQl4vae0xRT+8prbrK8=
444-
k8s.io/api v0.18.6/go.mod h1:eeyxr+cwCjMdLAmr2W3RyDI0VvTawSg/3RFFBEnmZGI=
445435
k8s.io/api v0.18.8 h1:aIKUzJPb96f3fKec2lxtY7acZC9gQNDLVhfSGpxBAC4=
446436
k8s.io/api v0.18.8/go.mod h1:d/CXqwWv+Z2XEG1LgceeDmHQwpUJhROPx16SlxJgERY=
447437
k8s.io/apiextensions-apiserver v0.18.0 h1:HN4/P8vpGZFvB5SOMuPPH2Wt9Y/ryX+KRvIyAkchu1Q=
448438
k8s.io/apiextensions-apiserver v0.18.0/go.mod h1:18Cwn1Xws4xnWQNC00FLq1E350b9lUF+aOdIWDOZxgo=
449439
k8s.io/apimachinery v0.18.0/go.mod h1:9SnR/e11v5IbyPCGbvJViimtJ0SwHG4nfZFjU77ftcA=
450-
k8s.io/apimachinery v0.18.6/go.mod h1:OaXp26zu/5J7p0f92ASynJa1pZo06YlV9fG7BoWbCko=
451440
k8s.io/apimachinery v0.18.8 h1:jimPrycCqgx2QPearX3to1JePz7wSbVLq+7PdBTTwQ0=
452441
k8s.io/apimachinery v0.18.8/go.mod h1:6sQd+iHEqmOtALqOFjSWp2KZ9F0wlU/nWm0ZgsYWMig=
453442
k8s.io/apiserver v0.18.0/go.mod h1:3S2O6FeBBd6XTo0njUrLxiqk8GNy6wWOftjhJcXYnjw=
454-
k8s.io/client-go v0.18.0 h1:yqKw4cTUQraZK3fcVCMeSa+lqKwcjZ5wtcOIPnxQno4=
455443
k8s.io/client-go v0.18.0/go.mod h1:uQSYDYs4WhVZ9i6AIoEZuwUggLVEF64HOD37boKAtF8=
456-
k8s.io/client-go v0.18.6 h1:I+oWqJbibLSGsZj8Xs8F0aWVXJVIoUHWaaJV3kUN/Zw=
457-
k8s.io/client-go v0.18.6/go.mod h1:/fwtGLjYMS1MaM5oi+eXhKwG+1UHidUEXRh6cNsdO0Q=
444+
k8s.io/client-go v0.18.8 h1:SdbLpIxk5j5YbFr1b7fq8S7mDgDjYmUxSbszyoesoDM=
445+
k8s.io/client-go v0.18.8/go.mod h1:HqFqMllQ5NnQJNwjro9k5zMyfhZlOwpuTLVrxjkYSxU=
458446
k8s.io/code-generator v0.18.0/go.mod h1:+UHX5rSbxmR8kzS+FAv7um6dtYrZokQvjHpDSYRVkTc=
459447
k8s.io/code-generator v0.18.8 h1:lgO1P1wjikEtzNvj7ia+x1VC4svJ28a/r0wnOLhhOTU=
460448
k8s.io/code-generator v0.18.8/go.mod h1:TgNEVx9hCyPGpdtCWA34olQYLkh3ok9ar7XfSsr8b6c=
@@ -475,7 +463,6 @@ sigs.k8s.io/apiserver-network-proxy/konnectivity-client v0.0.7/go.mod h1:PHgbrJT
475463
sigs.k8s.io/structured-merge-diff/v3 v3.0.0-20200116222232-67a7b8c61874/go.mod h1:PlARxl6Hbt/+BC80dRLi1qAmnMqwqDg62YvvVkZjemw=
476464
sigs.k8s.io/structured-merge-diff/v3 v3.0.0 h1:dOmIZBMfhcHS09XZkMyUgkq5trg3/jRyJYFZUiaOp8E=
477465
sigs.k8s.io/structured-merge-diff/v3 v3.0.0/go.mod h1:PlARxl6Hbt/+BC80dRLi1qAmnMqwqDg62YvvVkZjemw=
478-
sigs.k8s.io/yaml v1.1.0 h1:4A07+ZFc2wgJwo8YNlQpr1rVlgUDlxXHhPJciaPY5gs=
479466
sigs.k8s.io/yaml v1.1.0/go.mod h1:UJmg0vDUVViEyp3mgSv9WPwZCDxu4rQW1olrI1uml+o=
480467
sigs.k8s.io/yaml v1.2.0 h1:kr/MCeFWJWTwyaHoR9c8EjH9OumOmoF9YGiZd7lFm/Q=
481468
sigs.k8s.io/yaml v1.2.0/go.mod h1:yfXDCHCao9+ENCvLSE62v9VSji2MKu5jeNfTrofGhJc=

0 commit comments

Comments
 (0)