From 73023df7bf7ad80201c7340fcc64e2b1344ae0ee Mon Sep 17 00:00:00 2001 From: Ilya Zuyev Date: Thu, 12 Nov 2020 15:46:22 -0800 Subject: [PATCH 01/91] Build multi-arch kicbase image --- Makefile | 13 ++++++++++++- 1 file changed, 12 insertions(+), 1 deletion(-) diff --git a/Makefile b/Makefile index 121636d6d6..77b4b24021 100644 --- a/Makefile +++ b/Makefile @@ -654,9 +654,20 @@ ifndef AUTOPUSH $(call user_confirm, 'Are you sure you want to push: $(KIC_BASE_IMAGE_GH) & $(KIC_BASE_IMAGE_GCR) & $(KIC_BASE_IMAGE_HUB) ?') $(MAKE) push-kic-base-image AUTOPUSH=true else - $(MAKE) push-kic-base-image-gcr push-kic-base-image-hub push-kic-base-image-gh + $(MAKE) push-kic-base-image-gcr push-kic-base-image-hub push-kic-base-image-gh push-kic-base-image-foo endif +X_DOCKER_BUILDER ?= minikube-builder +X_BUILD_ENV ?= DOCKER_CLI_EXPERIMENTAL=enabled +X_IMG = gcr.io/minikube-295421/kicbase + +.PHONY: kic-base-image-x +kic-base-image-x: ## todo + env $(X_BUILD_ENV) docker run --rm --privileged multiarch/qemu-user-static --reset -p yes + env $(X_BUILD_ENV) docker buildx create --name kicbase-builder --use || true + env $(X_BUILD_ENV) docker buildx build --platform linux/arm64,linux/amd64 -t $(X_IMG):$(KIC_VERSION) --push --build-arg COMMIT_SHA=${VERSION}-$(COMMIT) ./deploy/kicbase + + .PHONY: out/gvisor-addon out/gvisor-addon: pkg/minikube/assets/assets.go pkg/minikube/translate/translations.go ## Build gvisor addon $(if $(quiet),@echo " GO $@") From 7c0c95b6930f522f7e0b748738f50411f8bc891e Mon Sep 17 00:00:00 2001 From: Ilya Zuyev Date: Thu, 19 Nov 2020 12:00:58 -0800 Subject: [PATCH 02/91] make multiarch kicbase image --- Makefile | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Makefile b/Makefile index 77b4b24021..c748888669 100644 --- a/Makefile +++ b/Makefile @@ -654,7 +654,7 @@ ifndef AUTOPUSH $(call user_confirm, 'Are you sure you want to push: $(KIC_BASE_IMAGE_GH) & $(KIC_BASE_IMAGE_GCR) & $(KIC_BASE_IMAGE_HUB) ?') $(MAKE) push-kic-base-image AUTOPUSH=true else - $(MAKE) push-kic-base-image-gcr push-kic-base-image-hub push-kic-base-image-gh push-kic-base-image-foo + $(MAKE) push-kic-base-image-gcr push-kic-base-image-hub push-kic-base-image-gh endif X_DOCKER_BUILDER ?= minikube-builder From 449fadcd42b62183d9db7dee0455db6da34875ae Mon Sep 17 00:00:00 2001 From: Ilya Zuyev Date: Thu, 19 Nov 2020 12:06:33 -0800 Subject: [PATCH 03/91] allow docker driver for arm64 --- pkg/minikube/registry/drvs/docker/docker.go | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pkg/minikube/registry/drvs/docker/docker.go b/pkg/minikube/registry/drvs/docker/docker.go index df2771e804..57350f8e6b 100644 --- a/pkg/minikube/registry/drvs/docker/docker.go +++ b/pkg/minikube/registry/drvs/docker/docker.go @@ -83,7 +83,7 @@ func configure(cc config.ClusterConfig, n config.Node) (interface{}, error) { } func status() registry.State { - if runtime.GOARCH != "amd64" { + if runtime.GOARCH != "amd64" && runtime.GOARCH != "arm64" { return registry.State{Error: fmt.Errorf("docker driver is not supported on %q systems yet", runtime.GOARCH), Installed: false, Healthy: false, Fix: "Try other drivers", Doc: docURL} } From 56a6d01cffef6c8c8c61bf284fefd403f3af3702 Mon Sep 17 00:00:00 2001 From: Ilya Zuyev Date: Thu, 19 Nov 2020 12:09:58 -0800 Subject: [PATCH 04/91] Use minikbue-dev project --- Makefile | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Makefile b/Makefile index c748888669..b911540216 100644 --- a/Makefile +++ b/Makefile @@ -659,7 +659,7 @@ endif X_DOCKER_BUILDER ?= minikube-builder X_BUILD_ENV ?= DOCKER_CLI_EXPERIMENTAL=enabled -X_IMG = gcr.io/minikube-295421/kicbase +X_IMG = gcr.io/minikube-dev-296021/kicbase .PHONY: kic-base-image-x kic-base-image-x: ## todo From f3c884609c818dbfcfb4e0dcfaaf2f9cf4d58365 Mon Sep 17 00:00:00 2001 From: Ilya Zuyev Date: Thu, 19 Nov 2020 12:11:51 -0800 Subject: [PATCH 05/91] [temp] use dev gcr repo for kicbase image --- pkg/drivers/kic/types.go | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pkg/drivers/kic/types.go b/pkg/drivers/kic/types.go index 32f314ba4a..723cfa0074 100644 --- a/pkg/drivers/kic/types.go +++ b/pkg/drivers/kic/types.go @@ -31,7 +31,7 @@ const ( var ( // BaseImage is the base image is used to spin up kic containers. it uses same base-image as kind. - BaseImage = fmt.Sprintf("gcr.io/k8s-minikube/kicbase:%s@sha256:%s", Version, baseImageSHA) + BaseImage = fmt.Sprintf("gcr.io/minikube-dev-296021/kicbase:%s@sha256:%s", Version, baseImageSHA) // FallbackImages are backup base images in case gcr isn't available FallbackImages = []string{ From 093df848a2d594900823ccbbae11c1ba62cb8516 Mon Sep 17 00:00:00 2001 From: Ilya Zuyev Date: Mon, 30 Nov 2020 15:23:04 -0800 Subject: [PATCH 06/91] change kicbase image repo --- Makefile | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Makefile b/Makefile index b911540216..e874f7a977 100644 --- a/Makefile +++ b/Makefile @@ -659,7 +659,7 @@ endif X_DOCKER_BUILDER ?= minikube-builder X_BUILD_ENV ?= DOCKER_CLI_EXPERIMENTAL=enabled -X_IMG = gcr.io/minikube-dev-296021/kicbase +X_IMG = gcr.io/kicbase/kicbase .PHONY: kic-base-image-x kic-base-image-x: ## todo From aef228110fd25889dfbd3b168e544d8459a597f1 Mon Sep 17 00:00:00 2001 From: Ilya Zuyev Date: Mon, 30 Nov 2020 15:50:16 -0800 Subject: [PATCH 07/91] Add github actions to build minikube and run integration tests on arm64 runner --- .github/workflows/pr.yml | 129 +++++++++++++++++++++++++++++++++++++++ 1 file changed, 129 insertions(+) diff --git a/.github/workflows/pr.yml b/.github/workflows/pr.yml index ea8515c994..27fc54d337 100644 --- a/.github/workflows/pr.yml +++ b/.github/workflows/pr.yml @@ -40,6 +40,34 @@ jobs: with: name: minikube_binaries path: out + build_minikube_arm64: + runs-on: [self-hosted, arm64] + steps: + - uses: actions/checkout@v2 + - uses: actions/setup-go@v2 + with: + go-version: '1.15.2' + stable: true + - name: Download Dependencies + run: go mod download + - name: Build Binaries + run: | + make cross + make e2e-cross + cp -r test/integration/testdata ./out + whoami + echo github ref $GITHUB_REF + echo workflow $GITHUB_WORKFLOW + echo home $HOME + echo event name $GITHUB_EVENT_NAME + echo workspace $GITHUB_WORKSPACE + echo "end of debug stuff" + echo $(which jq) + - uses: actions/upload-artifact@v1 + with: + name: minikube_binaries + path: out + lint: runs-on: ubuntu-18.04 steps: @@ -179,6 +207,107 @@ jobs: if [ "$numPass" -eq 0 ];then echo "*** 0 Passed! ***";exit 2;fi if [ "$numPass" -lt 36 ];then echo "*** Failed to pass at least 36 ! ***";exit 2;fi if [ "$numPass" -eq 0 ];then echo "*** Passed! ***";exit 0;fi + + functional_docker_ubuntu_arm64: + needs: [ build_minikube_arm64 ] + env: + TIME_ELAPSED: time + JOB_NAME: "functional_docker_ubuntu" + GOPOGH_RESULT: "" + SHELL: "/bin/bash" # To prevent https://github.com/kubernetes/minikube/issues/6643 + runs-on: ubuntu-18.04 + steps: + - name: Install kubectl + shell: bash + run: | + curl -LO https://storage.googleapis.com/kubernetes-release/release/v1.18.0/bin/linux/amd64/kubectl + sudo install kubectl /usr/local/bin/kubectl + kubectl version --client=true + - name: Docker Info + shell: bash + run: | + echo "--------------------------" + docker version || true + echo "--------------------------" + docker info || true + echo "--------------------------" + docker system df || true + echo "--------------------------" + docker system info --format='{{json .}}'|| true + echo "--------------------------" + docker ps || true + echo "--------------------------" + # go 1.14.6+ is needed because of this bug https://github.com/golang/go/issues/39308 + - uses: actions/setup-go@v2 + with: + go-version: '1.15.2' + stable: true + - name: Install gopogh + + shell: bash + run: | + curl -LO https://github.com/medyagh/gopogh/releases/download/v0.2.4/gopogh-linux-amd64 + sudo install gopogh-linux-amd64 /usr/local/bin/gopogh + - name: Download Binaries + uses: actions/download-artifact@v1 + with: + name: minikube_binaries + - name: Run Integration Test + continue-on-error: false + # bash {0} to allow test to continue to next step. in case of + shell: bash {0} + run: | + cd minikube_binaries + mkdir -p report + mkdir -p testhome + chmod a+x e2e-* + chmod a+x minikube-* + sudo ln -s /etc/apparmor.d/usr.sbin.mysqld /etc/apparmor.d/disable/ + sudo apparmor_parser -R /etc/apparmor.d/usr.sbin.mysqld + START_TIME=$(date -u +%s) + KUBECONFIG=$(pwd)/testhome/kubeconfig MINIKUBE_HOME=$(pwd)/testhome ./e2e-linux-amd64 -minikube-start-args=--vm-driver=docker -test.run TestFunctional -test.timeout=10m -test.v -timeout-multiplier=1.5 -binary=./minikube-linux-amd64 2>&1 | tee ./report/testout.txt + END_TIME=$(date -u +%s) + TIME_ELAPSED=$(($END_TIME-$START_TIME)) + min=$((${TIME_ELAPSED}/60)) + sec=$((${TIME_ELAPSED}%60)) + TIME_ELAPSED="${min} min $sec seconds " + echo "TIME_ELAPSED=${TIME_ELAPSED}" >> $GITHUB_ENV + - name: Generate HTML Report + shell: bash + run: | + cd minikube_binaries + export PATH=${PATH}:`go env GOPATH`/bin + go tool test2json -t < ./report/testout.txt > ./report/testout.json || true + STAT=$(gopogh -in ./report/testout.json -out ./report/testout.html -name "${JOB_NAME} ${GITHUB_REF}" -repo "${GITHUB_REPOSITORY}" -details "${GITHUB_SHA}") || true + echo status: ${STAT} + FailNum=$(echo $STAT | jq '.NumberOfFail') + TestsNum=$(echo $STAT | jq '.NumberOfTests') + GOPOGH_RESULT="${JOB_NAME} : completed with ${FailNum} / ${TestsNum} failures in ${TIME_ELAPSED}" + echo "GOPOGH_RESULT=${GOPOGH_RESULT}" >> $GITHUB_ENV + echo 'STAT<> $GITHUB_ENV + echo "${STAT}" >> $GITHUB_ENV + echo 'EOF' >> $GITHUB_ENV + - uses: actions/upload-artifact@v1 + with: + name: functional_docker_ubuntu + path: minikube_binaries/report + - name: The End Result functional_docker_ubuntu + shell: bash + run: | + echo ${GOPOGH_RESULT} + numFail=$(echo $STAT | jq '.NumberOfFail') + numPass=$(echo $STAT | jq '.NumberOfPass') + echo "*******************${numPass} Passes :) *******************" + echo $STAT | jq '.PassedTests' || true + echo "*******************************************************" + echo "---------------- ${numFail} Failures :( ----------------------------" + echo $STAT | jq '.FailedTests' || true + echo "-------------------------------------------------------" + if [ "$numFail" -gt 0 ];then echo "*** $numFail Failed ***";exit 2;fi + if [ "$numPass" -eq 0 ];then echo "*** 0 Passed! ***";exit 2;fi + if [ "$numPass" -lt 36 ];then echo "*** Failed to pass at least 36 ! ***";exit 2;fi + if [ "$numPass" -eq 0 ];then echo "*** Passed! ***";exit 0;fi + functional_virtualbox_macos: needs: [build_minikube] env: From d0aa7bf0f888a22c028fdc70ce6e9bb6b76a1811 Mon Sep 17 00:00:00 2001 From: Ilya Zuyev Date: Mon, 30 Nov 2020 16:02:12 -0800 Subject: [PATCH 08/91] Add github actions to build minikube and run integration tests on arm64 runner (master) --- .github/workflows/master.yml | 128 +++++++++++++++++++++++++++++++++++ 1 file changed, 128 insertions(+) diff --git a/.github/workflows/master.yml b/.github/workflows/master.yml index bdac426be1..00d8ad40d4 100644 --- a/.github/workflows/master.yml +++ b/.github/workflows/master.yml @@ -42,6 +42,33 @@ jobs: with: name: minikube_binaries path: out + build_minikube_arm64: + runs-on: [self-hosted, arm64] + steps: + - uses: actions/checkout@v2 + - uses: actions/setup-go@v2 + with: + go-version: '1.15.2' + stable: true + - name: Download Dependencies + run: go mod download + - name: Build Binaries + run: | + make cross + make e2e-cross + cp -r test/integration/testdata ./out + whoami + echo github ref $GITHUB_REF + echo workflow $GITHUB_WORKFLOW + echo home $HOME + echo event name $GITHUB_EVENT_NAME + echo workspace $GITHUB_WORKSPACE + echo "end of debug stuff" + echo $(which jq) + - uses: actions/upload-artifact@v1 + with: + name: minikube_binaries + path: out lint: runs-on: ubuntu-18.04 steps: @@ -181,6 +208,107 @@ jobs: if [ "$numPass" -eq 0 ];then echo "*** 0 Passed! ***";exit 2;fi if [ "$numPass" -lt 36 ];then echo "*** Failed to pass at least 36 ! ***";exit 2;fi if [ "$numPass" -eq 0 ];then echo "*** Passed! ***";exit 0;fi + + functional_docker_ubuntu_arm64: + needs: [ build_minikube_arm64 ] + env: + TIME_ELAPSED: time + JOB_NAME: "functional_docker_ubuntu" + GOPOGH_RESULT: "" + SHELL: "/bin/bash" # To prevent https://github.com/kubernetes/minikube/issues/6643 + runs-on: ubuntu-18.04 + steps: + - name: Install kubectl + shell: bash + run: | + curl -LO https://storage.googleapis.com/kubernetes-release/release/v1.18.0/bin/linux/arm64/kubectl + sudo install kubectl /usr/local/bin/kubectl + kubectl version --client=true + - name: Docker Info + shell: bash + run: | + echo "--------------------------" + docker version || true + echo "--------------------------" + docker info || true + echo "--------------------------" + docker system df || true + echo "--------------------------" + docker system info --format='{{json .}}'|| true + echo "--------------------------" + docker ps || true + echo "--------------------------" + # go 1.14.6+ is needed because of this bug https://github.com/golang/go/issues/39308 + - uses: actions/setup-go@v2 + with: + go-version: '1.15.2' + stable: true + - name: Install gopogh + + shell: bash + run: | + curl -LO https://github.com/ilya-zuyev/gopogh/releases/download/v0.0.1-arm/gopogh-linux-arm64 + sudo install gopogh-linux-arm64 /usr/local/bin/gopogh + - name: Download Binaries + uses: actions/download-artifact@v1 + with: + name: minikube_binaries + - name: Run Integration Test + continue-on-error: false + # bash {0} to allow test to continue to next step. in case of + shell: bash {0} + run: | + cd minikube_binaries + mkdir -p report + mkdir -p testhome + chmod a+x e2e-* + chmod a+x minikube-* + sudo ln -s /etc/apparmor.d/usr.sbin.mysqld /etc/apparmor.d/disable/ + sudo apparmor_parser -R /etc/apparmor.d/usr.sbin.mysqld + START_TIME=$(date -u +%s) + KUBECONFIG=$(pwd)/testhome/kubeconfig MINIKUBE_HOME=$(pwd)/testhome ./e2e-linux-amd64 -minikube-start-args=--vm-driver=docker -test.run TestFunctional -test.timeout=10m -test.v -timeout-multiplier=1.5 -binary=./minikube-linux-amd64 2>&1 | tee ./report/testout.txt + END_TIME=$(date -u +%s) + TIME_ELAPSED=$(($END_TIME-$START_TIME)) + min=$((${TIME_ELAPSED}/60)) + sec=$((${TIME_ELAPSED}%60)) + TIME_ELAPSED="${min} min $sec seconds " + echo "TIME_ELAPSED=${TIME_ELAPSED}" >> $GITHUB_ENV + - name: Generate HTML Report + shell: bash + run: | + cd minikube_binaries + export PATH=${PATH}:`go env GOPATH`/bin + go tool test2json -t < ./report/testout.txt > ./report/testout.json || true + STAT=$(gopogh -in ./report/testout.json -out ./report/testout.html -name "${JOB_NAME} ${GITHUB_REF}" -repo "${GITHUB_REPOSITORY}" -details "${GITHUB_SHA}") || true + echo status: ${STAT} + FailNum=$(echo $STAT | jq '.NumberOfFail') + TestsNum=$(echo $STAT | jq '.NumberOfTests') + GOPOGH_RESULT="${JOB_NAME} : completed with ${FailNum} / ${TestsNum} failures in ${TIME_ELAPSED}" + echo "GOPOGH_RESULT=${GOPOGH_RESULT}" >> $GITHUB_ENV + echo 'STAT<> $GITHUB_ENV + echo "${STAT}" >> $GITHUB_ENV + echo 'EOF' >> $GITHUB_ENV + - uses: actions/upload-artifact@v1 + with: + name: functional_docker_ubuntu_arm64 + path: minikube_binaries/report + - name: The End Result functional_docker_ubuntu + shell: bash + run: | + echo ${GOPOGH_RESULT} + numFail=$(echo $STAT | jq '.NumberOfFail') + numPass=$(echo $STAT | jq '.NumberOfPass') + echo "*******************${numPass} Passes :) *******************" + echo $STAT | jq '.PassedTests' || true + echo "*******************************************************" + echo "---------------- ${numFail} Failures :( ----------------------------" + echo $STAT | jq '.FailedTests' || true + echo "-------------------------------------------------------" + if [ "$numFail" -gt 0 ];then echo "*** $numFail Failed ***";exit 2;fi + if [ "$numPass" -eq 0 ];then echo "*** 0 Passed! ***";exit 2;fi + if [ "$numPass" -lt 36 ];then echo "*** Failed to pass at least 36 ! ***";exit 2;fi + if [ "$numPass" -eq 0 ];then echo "*** Passed! ***";exit 0;fi + functional_virtualbox_macos: needs: [build_minikube] env: From 05bc271ef8be80e87b9ed68d69f0d7128c9f4541 Mon Sep 17 00:00:00 2001 From: Ilya Zuyev Date: Mon, 30 Nov 2020 16:06:06 -0800 Subject: [PATCH 09/91] Fix arch related checks --- pkg/minikube/bootstrapper/images/images.go | 7 +--- test/integration/aaa_download_only_test.go | 18 +++++---- test/integration/aab_offline_test.go | 16 +++++--- test/integration/addons_test.go | 6 +++ .../driver_install_or_update_test.go | 4 ++ test/integration/functional_test.go | 39 +++++++++++++++++-- test/integration/main_test.go | 5 +++ test/integration/preload_test.go | 4 ++ test/integration/skaffold_test.go | 7 +++- 9 files changed, 82 insertions(+), 24 deletions(-) diff --git a/pkg/minikube/bootstrapper/images/images.go b/pkg/minikube/bootstrapper/images/images.go index d2cc7bd376..d24c3e3875 100644 --- a/pkg/minikube/bootstrapper/images/images.go +++ b/pkg/minikube/bootstrapper/images/images.go @@ -20,9 +20,9 @@ package images import ( "fmt" "path" - "runtime" "github.com/blang/semver" + "k8s.io/minikube/pkg/version" ) @@ -121,10 +121,7 @@ func etcd(v semver.Version, mirror string) string { // archTag returns a CPU architecture suffix for images func archTag(hasTag bool) string { - if runtime.GOARCH == "amd64" && !hasTag { - return ":" - } - return "-" + runtime.GOARCH + ":" + return ":" } // auxiliary returns images that are helpful for running minikube diff --git a/test/integration/aaa_download_only_test.go b/test/integration/aaa_download_only_test.go index 46152dda7a..bbb743df7a 100644 --- a/test/integration/aaa_download_only_test.go +++ b/test/integration/aaa_download_only_test.go @@ -194,13 +194,15 @@ func TestDownloadOnlyKic(t *testing.T) { if err != nil { t.Errorf("failed to read tarball file %q: %v", tarball, err) } - // Make sure it has the correct checksum - checksum := md5.Sum(contents) - remoteChecksum, err := ioutil.ReadFile(download.PreloadChecksumPath(constants.DefaultKubernetesVersion, cRuntime)) - if err != nil { - t.Errorf("failed to read checksum file %q : %v", download.PreloadChecksumPath(constants.DefaultKubernetesVersion, cRuntime), err) - } - if string(remoteChecksum) != string(checksum[:]) { - t.Errorf("failed to verify checksum. checksum of %q does not match remote checksum (%q != %q)", tarball, string(remoteChecksum), string(checksum[:])) + if !Arm64Platform() { + // Make sure it has the correct checksum + checksum := md5.Sum(contents) + remoteChecksum, err := ioutil.ReadFile(download.PreloadChecksumPath(constants.DefaultKubernetesVersion, cRuntime)) + if err != nil { + t.Errorf("failed to read checksum file %q : %v", download.PreloadChecksumPath(constants.DefaultKubernetesVersion, cRuntime), err) + } + if string(remoteChecksum) != string(checksum[:]) { + t.Errorf("failed to verify checksum. checksum of %q does not match remote checksum (%q != %q)", tarball, string(remoteChecksum), string(checksum[:])) + } } } diff --git a/test/integration/aab_offline_test.go b/test/integration/aab_offline_test.go index d0275b53bf..73cb2246c4 100644 --- a/test/integration/aab_offline_test.go +++ b/test/integration/aab_offline_test.go @@ -29,20 +29,24 @@ import ( // TestOffline makes sure minikube works without internet, once it the user has already cached the images, This test has to run after TestDownloadOnly! func TestOffline(t *testing.T) { t.Run("group", func(t *testing.T) { - for _, runtime := range []string{"docker", "crio", "containerd"} { - runtime := runtime - t.Run(runtime, func(t *testing.T) { + for _, rt := range []string{"docker", "crio", "containerd"} { + rt := rt + t.Run(rt, func(t *testing.T) { MaybeParallel(t) - if runtime != "docker" && NoneDriver() { + if rt != "docker" && Arm64Platform() { + t.Skipf("skipping %s - only docker runtime supported on arm64", t.Name()) + } + + if rt != "docker" && NoneDriver() { t.Skipf("skipping %s - incompatible with none driver", t.Name()) } - profile := UniqueProfileName(fmt.Sprintf("offline-%s", runtime)) + profile := UniqueProfileName(fmt.Sprintf("offline-%s", rt)) ctx, cancel := context.WithTimeout(context.Background(), Minutes(15)) defer CleanupWithLogs(t, profile, cancel) - startArgs := []string{"start", "-p", profile, "--alsologtostderr", "-v=1", "--memory=2000", "--wait=true", "--container-runtime", runtime} + startArgs := []string{"start", "-p", profile, "--alsologtostderr", "-v=1", "--memory=2000", "--wait=true", "--container-runtime", rt} startArgs = append(startArgs, StartArgs()...) c := exec.CommandContext(ctx, Target(), startArgs...) env := os.Environ() diff --git a/test/integration/addons_test.go b/test/integration/addons_test.go index 779be84c3b..f5fadcfe5e 100644 --- a/test/integration/addons_test.go +++ b/test/integration/addons_test.go @@ -41,6 +41,11 @@ import ( // TestAddons tests addons that require no special environment -- in parallel func TestAddons(t *testing.T) { + + if !Arm64Platform() { + t.Skipf("Skip helm addon test for arm64") + } + profile := UniqueProfileName("addons") ctx, cancel := context.WithTimeout(context.Background(), Minutes(40)) defer Cleanup(t, profile, cancel) @@ -305,6 +310,7 @@ func validateMetricsServerAddon(ctx context.Context, t *testing.T, profile strin } func validateHelmTillerAddon(ctx context.Context, t *testing.T, profile string) { + defer PostMortemLogs(t, profile) client, err := kapi.Client(profile) diff --git a/test/integration/driver_install_or_update_test.go b/test/integration/driver_install_or_update_test.go index 7b1ae0436d..c64bd01e7c 100644 --- a/test/integration/driver_install_or_update_test.go +++ b/test/integration/driver_install_or_update_test.go @@ -42,6 +42,10 @@ func TestKVMDriverInstallOrUpdate(t *testing.T) { t.Skip("Skip if not linux.") } + if Arm64Platform() { + t.Skip("Skip if arm64.") + } + MaybeParallel(t) tests := []struct { diff --git a/test/integration/functional_test.go b/test/integration/functional_test.go index 84c0eee9ef..e8ab47d2fc 100644 --- a/test/integration/functional_test.go +++ b/test/integration/functional_test.go @@ -496,7 +496,22 @@ func validateDryRun(ctx context.Context, t *testing.T, profile string) { defer cancel() // Too little memory! - startArgs := append([]string{"start", "-p", profile, "--dry-run", "--memory", "250MB", "--alsologtostderr"}, StartArgs()...) + var startArgs []string + orgStartArgs := StartArgs() + + for i := 0; i < len(orgStartArgs); i++ { + arg := orgStartArgs[i] + if strings.HasPrefix(arg, "--memory=") { + continue + } + if arg == "--memory" { + i++ // skip next + continue + } + startArgs = append(startArgs, arg) + } + + startArgs = append([]string{"start", "-p", profile, "--dry-run", "--memory", "250MB", "--alsologtostderr"}, startArgs...) c := exec.CommandContext(mctx, Target(), startArgs...) rr, err := Run(t, c) @@ -591,7 +606,13 @@ func validateCacheCmd(ctx context.Context, t *testing.T, profile string) { if err != nil { t.Errorf("failed to get images by %q ssh %v", rr.Command(), err) } - if !strings.Contains(rr.Output(), "0184c1613d929") { + var pauseID string + if Arm64Platform() { + pauseID = "3d18732f8686c" + } else { + pauseID = "0184c1613d929" + } + if !strings.Contains(rr.Output(), pauseID) { t.Errorf("expected sha for pause:3.3 '0184c1613d929' to be in the output but got *%s*", rr.Output()) } @@ -786,7 +807,14 @@ func validateServiceCmd(ctx context.Context, t *testing.T, profile string) { } }() - rr, err := Run(t, exec.CommandContext(ctx, "kubectl", "--context", profile, "create", "deployment", "hello-node", "--image=k8s.gcr.io/echoserver:1.4")) + var echoServerArg string + if Arm64Platform() { + echoServerArg = "k8s.gcr.io/echoserver-arm:1.8" + } else { + echoServerArg = "k8s.gcr.io/echoserver:1.10" + } + + rr, err := Run(t, exec.CommandContext(ctx, "kubectl", "--context", profile, "create", "deployment", "hello-node", "--image="+echoServerArg)) if err != nil { t.Fatalf("failed to create hello-node deployment with this command %q: %v.", rr.Command(), err) } @@ -958,6 +986,11 @@ func validateSSHCmd(ctx context.Context, t *testing.T, profile string) { // validateMySQL validates a minimalist MySQL deployment func validateMySQL(ctx context.Context, t *testing.T, profile string) { + if Arm64Platform() { + t.Skip("arm64 is not supported by mysql. skip the test") + return + } + defer PostMortemLogs(t, profile) rr, err := Run(t, exec.CommandContext(ctx, "kubectl", "--context", profile, "replace", "--force", "-f", filepath.Join(*testdataDir, "mysql.yaml"))) diff --git a/test/integration/main_test.go b/test/integration/main_test.go index f0a1b9502c..64e5f64c5c 100644 --- a/test/integration/main_test.go +++ b/test/integration/main_test.go @@ -135,6 +135,11 @@ func GithubActionRunner() bool { return os.Getenv("GITHUB_ACTIONS") == "true" } +// Arm64Platform returns true if running on arm64/* platform +func Arm64Platform() bool { + return runtime.GOARCH == "arm64" +} + // NeedsPortForward returns access to endpoints with this driver needs port forwarding // (Docker on non-Linux platforms requires ports to be forwarded to 127.0.0.1) func NeedsPortForward() bool { diff --git a/test/integration/preload_test.go b/test/integration/preload_test.go index 9364b00171..a62951450a 100644 --- a/test/integration/preload_test.go +++ b/test/integration/preload_test.go @@ -31,6 +31,10 @@ func TestPreload(t *testing.T) { t.Skipf("skipping %s - incompatible with none driver", t.Name()) } + if Arm64Platform() { + t.Skipf("skipping %s - not yet supported on arm64", t.Name()) + } + profile := UniqueProfileName("test-preload") ctx, cancel := context.WithTimeout(context.Background(), Minutes(40)) defer CleanupWithLogs(t, profile, cancel) diff --git a/test/integration/skaffold_test.go b/test/integration/skaffold_test.go index 48f9b42ed4..cb4a65c42f 100644 --- a/test/integration/skaffold_test.go +++ b/test/integration/skaffold_test.go @@ -38,6 +38,9 @@ func TestSkaffold(t *testing.T) { if NoneDriver() { t.Skip("none driver doesn't support `minikube docker-env`; skaffold depends on this command") } + if Arm64Platform() { + t.Skip("none driver doesn't support `minikube docker-env`; skaffold depends on this command") + } profile := UniqueProfileName("skaffold") ctx, cancel := context.WithTimeout(context.Background(), Minutes(5)) @@ -116,8 +119,8 @@ func installSkaffold() (f *os.File, err error) { } tf.Close() - url := "https://storage.googleapis.com/skaffold/releases/latest/skaffold-%s-amd64" - url = fmt.Sprintf(url, runtime.GOOS) + url := "https://storage.googleapis.com/skaffold/releases/latest/skaffold-%s-%s" + url = fmt.Sprintf(url, runtime.GOOS, runtime.GOARCH) if runtime.GOOS == "windows" { url += ".exe" } From 086e68ea998aa1a839b98e1e5b2089c452314a95 Mon Sep 17 00:00:00 2001 From: Ilya Zuyev Date: Wed, 16 Dec 2020 18:13:44 -0800 Subject: [PATCH 10/91] fix docs --- site/content/en/docs/commands/start.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/site/content/en/docs/commands/start.md b/site/content/en/docs/commands/start.md index 3d12e8dd1f..8cd866d94c 100644 --- a/site/content/en/docs/commands/start.md +++ b/site/content/en/docs/commands/start.md @@ -26,7 +26,7 @@ minikube start [flags] --apiserver-names strings A set of apiserver names which are used in the generated certificate for kubernetes. This can be used if you want to make the apiserver available from outside the machine --apiserver-port int The apiserver listening port (default 8443) --auto-update-drivers If set, automatically updates drivers to the latest version. Defaults to true. (default true) - --base-image string The base image to use for docker/podman drivers. Intended for local development. (default "gcr.io/k8s-minikube/kicbase:v0.0.15-snapshot4@sha256:ef1f485b5a1cfa4c989bc05e153f0a8525968ec999e242efff871cbb31649c16") + --base-image string The base image to use for docker/podman drivers. Intended for local development. (default "gcr.io/minikube-dev-296021/kicbase:v0.0.15-snapshot4@sha256:ef1f485b5a1cfa4c989bc05e153f0a8525968ec999e242efff871cbb31649c16") --cache-images If true, cache docker images for the current bootstrapper and load them into the machine. Always false with --driver=none. (default true) --cni string CNI plug-in to use. Valid options: auto, bridge, calico, cilium, flannel, kindnet, or path to a CNI manifest (default: auto) --container-runtime string The container runtime to be used (docker, cri-o, containerd). (default "docker") From 88493343d55eca53a14838806fd5f73d9161deae Mon Sep 17 00:00:00 2001 From: Ilya Zuyev Date: Wed, 16 Dec 2020 18:28:44 -0800 Subject: [PATCH 11/91] Add github action to run linux/arm64 integration tests --- .github/workflows/pr.yml | 139 +++++++++++++++++++++++++++++++++++++++ 1 file changed, 139 insertions(+) diff --git a/.github/workflows/pr.yml b/.github/workflows/pr.yml index ea8515c994..c2b61b2fff 100644 --- a/.github/workflows/pr.yml +++ b/.github/workflows/pr.yml @@ -649,6 +649,145 @@ jobs: if [ "$numPass" -eq 0 ];then echo "*** 0 Passed! ***";exit 2;fi if [ "$numPass" -lt 26 ];then echo "*** Failed to pass at least 26 ! ***";exit 2;fi if [ "$numPass" -eq 0 ];then echo "*** Passed! ***";exit 0;fi + functional_docker_ubuntu_arm64: + needs: [ build_minikube ] + runs-on: [ self-hosted, arm64 ] + env: + TIME_ELAPSED: time + JOB_NAME: "functional_docker_ubuntu" + GOPOGH_RESULT: "" + SHELL: "/bin/bash" # To prevent https://github.com/kubernetes/minikube/issues/6643 + steps: + - name: Install kubectl + shell: bash + run: | + curl -LO https://storage.googleapis.com/kubernetes-release/release/v1.18.0/bin/linux/arm64/kubectl + sudo install kubectl /usr/local/bin/kubectl + kubectl version --client=true + - name: Docker Info + shell: bash + run: | + echo "--------------------------" + docker version || true + echo "--------------------------" + docker info || true + echo "--------------------------" + docker system df || true + echo "--------------------------" + docker system info --format='{{json .}}'|| true + echo "--------------------------" + docker ps || true + echo "--------------------------" + # go 1.14.6+ is needed because of this bug https://github.com/golang/go/issues/39308 + - uses: actions/setup-go@v2 + with: + go-version: '1.15.2' + stable: true + + - name: Download Binaries + uses: actions/download-artifact@v1 + with: + name: minikube_binaries + - name: Run Integration Test + continue-on-error: false + # bash {0} to allow test to continue to next step. in case of + shell: bash {0} + run: | + cd minikube_binaries + mkdir -p report + mkdir -p testhome + chmod a+x e2e-* + chmod a+x minikube-* + START_TIME=$(date -u +%s) + KUBECONFIG=$(pwd)/testhome/kubeconfig MINIKUBE_HOME=$(pwd)/testhome ./e2e-linux-arm64 -minikube-start-args='--alsologtostderr --base-image=gcr.io/kicbase/kicbase:v0.0.14-snapshot --memory=3000m --vm-driver=docker' -test.timeout=10m -test.v -timeout-multiplier=1.5 -binary=./minikube-linux-arm64 2>&1 | tee ./report/testout.txt + END_TIME=$(date -u +%s) + TIME_ELAPSED=$(($END_TIME-$START_TIME)) + min=$((${TIME_ELAPSED}/60)) + sec=$((${TIME_ELAPSED}%60)) + TIME_ELAPSED="${min} min $sec seconds " + echo "TIME_ELAPSED=${TIME_ELAPSED}" >> $GITHUB_ENV + + full_docker_ubuntu_arm64: + needs: [ build_minikube ] + runs-on: [ self-hosted, arm64 ] + env: + TIME_ELAPSED: time + JOB_NAME: "multinode_docker_ubuntu" + GOPOGH_RESULT: "" + SHELL: "/bin/bash" # To prevent https://github.com/kubernetes/minikube/issues/6643 + steps: + - name: Install kubectl + shell: bash + run: | + curl -LO https://storage.googleapis.com/kubernetes-release/release/v1.18.0/bin/linux/arm64/kubectl + sudo install kubectl /usr/local/bin/kubectl + kubectl version --client=true + - name: Docker Info + shell: bash + run: | + echo "--------------------------" + docker version || true + echo "--------------------------" + docker info || true + echo "--------------------------" + docker system df || true + echo "--------------------------" + docker system info || true + echo "--------------------------" + docker ps || true + echo "--------------------------" + # go 1.14.6+ is needed because of this bug https://github.com/golang/go/issues/39308 + - uses: actions/setup-go@v2 + with: + go-version: '1.15.2' + stable: true + + - name: Download Binaries + uses: actions/download-artifact@v1 + with: + name: minikube_binaries + + - name: Run Integration Test + continue-on-error: true + # bash {0} to allow test to continue to next step. in case of + shell: bash {0} + run: | + cd minikube_binaries + mkdir -p report + mkdir -p testhome + chmod a+x e2e-* + chmod a+x minikube-* + sudo ln -s /etc/apparmor.d/usr.sbin.mysqld /etc/apparmor.d/disable/ + sudo apparmor_parser -R /etc/apparmor.d/usr.sbin.mysqld + START_TIME=$(date -u +%s) + KUBECONFIG=$(pwd)/testhome/kubeconfig MINIKUBE_HOME=$(pwd)/testhome ./e2e-linux-arm64 -minikube-start-args='--alsologtostderr --base-image=gcr.io/kicbase/kicbase:v0.0.14-snapshot --memory=3000m --vm-driver=docker' -test.timeout=10m -test.v -timeout-multiplier=1.5 -binary=./minikube-linux-arm64 2>&1 | tee ./report/testout.txt + END_TIME=$(date -u +%s) + TIME_ELAPSED=$(($END_TIME-$START_TIME)) + min=$((${TIME_ELAPSED}/60)) + sec=$((${TIME_ELAPSED}%60)) + TIME_ELAPSED="${min} min $sec seconds " + echo "TIME_ELAPSED=${TIME_ELAPSED}" >> $GITHUB_ENV + + - uses: actions/upload-artifact@v1 + with: + name: multinode_docker_ubuntu + path: minikube_binaries/report + - name: The End Result - multinode_docker_ubuntu + shell: bash + run: | + echo ${GOPOGH_RESULT} + numFail=$(echo $STAT | jq '.NumberOfFail') + numPass=$(echo $STAT | jq '.NumberOfPass') + echo "*******************${numPass} Passes :) *******************" + echo $STAT | jq '.PassedTests' || true + echo "*******************************************************" + echo "---------------- ${numFail} Failures :( ----------------------------" + echo $STAT | jq '.FailedTests' || true + echo "-------------------------------------------------------" + if [ "$numFail" -gt 0 ];then echo "*** $numFail Failed ***";exit 2;fi + if [ "$numPass" -eq 0 ];then echo "*** 0 Passed! ***";exit 2;fi + if [ "$numPass" -lt 5 ];then echo "*** Failed to pass at least 5 ! ***";exit 2;fi + addons_certs_docker_ubuntu: runs-on: ubuntu-18.04 env: From 0eeac162113d8eef262948b1e01ae8abd6a256e2 Mon Sep 17 00:00:00 2001 From: Ilya Zuyev Date: Thu, 17 Dec 2020 10:37:42 -0800 Subject: [PATCH 12/91] Revert gh related changes --- .github/workflows/master.yml | 150 +++-------------------------------- Makefile | 11 --- 2 files changed, 11 insertions(+), 150 deletions(-) diff --git a/.github/workflows/master.yml b/.github/workflows/master.yml index 00d8ad40d4..583afbca98 100644 --- a/.github/workflows/master.yml +++ b/.github/workflows/master.yml @@ -42,33 +42,6 @@ jobs: with: name: minikube_binaries path: out - build_minikube_arm64: - runs-on: [self-hosted, arm64] - steps: - - uses: actions/checkout@v2 - - uses: actions/setup-go@v2 - with: - go-version: '1.15.2' - stable: true - - name: Download Dependencies - run: go mod download - - name: Build Binaries - run: | - make cross - make e2e-cross - cp -r test/integration/testdata ./out - whoami - echo github ref $GITHUB_REF - echo workflow $GITHUB_WORKFLOW - echo home $HOME - echo event name $GITHUB_EVENT_NAME - echo workspace $GITHUB_WORKSPACE - echo "end of debug stuff" - echo $(which jq) - - uses: actions/upload-artifact@v1 - with: - name: minikube_binaries - path: out lint: runs-on: ubuntu-18.04 steps: @@ -208,107 +181,6 @@ jobs: if [ "$numPass" -eq 0 ];then echo "*** 0 Passed! ***";exit 2;fi if [ "$numPass" -lt 36 ];then echo "*** Failed to pass at least 36 ! ***";exit 2;fi if [ "$numPass" -eq 0 ];then echo "*** Passed! ***";exit 0;fi - - functional_docker_ubuntu_arm64: - needs: [ build_minikube_arm64 ] - env: - TIME_ELAPSED: time - JOB_NAME: "functional_docker_ubuntu" - GOPOGH_RESULT: "" - SHELL: "/bin/bash" # To prevent https://github.com/kubernetes/minikube/issues/6643 - runs-on: ubuntu-18.04 - steps: - - name: Install kubectl - shell: bash - run: | - curl -LO https://storage.googleapis.com/kubernetes-release/release/v1.18.0/bin/linux/arm64/kubectl - sudo install kubectl /usr/local/bin/kubectl - kubectl version --client=true - - name: Docker Info - shell: bash - run: | - echo "--------------------------" - docker version || true - echo "--------------------------" - docker info || true - echo "--------------------------" - docker system df || true - echo "--------------------------" - docker system info --format='{{json .}}'|| true - echo "--------------------------" - docker ps || true - echo "--------------------------" - # go 1.14.6+ is needed because of this bug https://github.com/golang/go/issues/39308 - - uses: actions/setup-go@v2 - with: - go-version: '1.15.2' - stable: true - - name: Install gopogh - - shell: bash - run: | - curl -LO https://github.com/ilya-zuyev/gopogh/releases/download/v0.0.1-arm/gopogh-linux-arm64 - sudo install gopogh-linux-arm64 /usr/local/bin/gopogh - - name: Download Binaries - uses: actions/download-artifact@v1 - with: - name: minikube_binaries - - name: Run Integration Test - continue-on-error: false - # bash {0} to allow test to continue to next step. in case of - shell: bash {0} - run: | - cd minikube_binaries - mkdir -p report - mkdir -p testhome - chmod a+x e2e-* - chmod a+x minikube-* - sudo ln -s /etc/apparmor.d/usr.sbin.mysqld /etc/apparmor.d/disable/ - sudo apparmor_parser -R /etc/apparmor.d/usr.sbin.mysqld - START_TIME=$(date -u +%s) - KUBECONFIG=$(pwd)/testhome/kubeconfig MINIKUBE_HOME=$(pwd)/testhome ./e2e-linux-amd64 -minikube-start-args=--vm-driver=docker -test.run TestFunctional -test.timeout=10m -test.v -timeout-multiplier=1.5 -binary=./minikube-linux-amd64 2>&1 | tee ./report/testout.txt - END_TIME=$(date -u +%s) - TIME_ELAPSED=$(($END_TIME-$START_TIME)) - min=$((${TIME_ELAPSED}/60)) - sec=$((${TIME_ELAPSED}%60)) - TIME_ELAPSED="${min} min $sec seconds " - echo "TIME_ELAPSED=${TIME_ELAPSED}" >> $GITHUB_ENV - - name: Generate HTML Report - shell: bash - run: | - cd minikube_binaries - export PATH=${PATH}:`go env GOPATH`/bin - go tool test2json -t < ./report/testout.txt > ./report/testout.json || true - STAT=$(gopogh -in ./report/testout.json -out ./report/testout.html -name "${JOB_NAME} ${GITHUB_REF}" -repo "${GITHUB_REPOSITORY}" -details "${GITHUB_SHA}") || true - echo status: ${STAT} - FailNum=$(echo $STAT | jq '.NumberOfFail') - TestsNum=$(echo $STAT | jq '.NumberOfTests') - GOPOGH_RESULT="${JOB_NAME} : completed with ${FailNum} / ${TestsNum} failures in ${TIME_ELAPSED}" - echo "GOPOGH_RESULT=${GOPOGH_RESULT}" >> $GITHUB_ENV - echo 'STAT<> $GITHUB_ENV - echo "${STAT}" >> $GITHUB_ENV - echo 'EOF' >> $GITHUB_ENV - - uses: actions/upload-artifact@v1 - with: - name: functional_docker_ubuntu_arm64 - path: minikube_binaries/report - - name: The End Result functional_docker_ubuntu - shell: bash - run: | - echo ${GOPOGH_RESULT} - numFail=$(echo $STAT | jq '.NumberOfFail') - numPass=$(echo $STAT | jq '.NumberOfPass') - echo "*******************${numPass} Passes :) *******************" - echo $STAT | jq '.PassedTests' || true - echo "*******************************************************" - echo "---------------- ${numFail} Failures :( ----------------------------" - echo $STAT | jq '.FailedTests' || true - echo "-------------------------------------------------------" - if [ "$numFail" -gt 0 ];then echo "*** $numFail Failed ***";exit 2;fi - if [ "$numPass" -eq 0 ];then echo "*** 0 Passed! ***";exit 2;fi - if [ "$numPass" -lt 36 ];then echo "*** Failed to pass at least 36 ! ***";exit 2;fi - if [ "$numPass" -eq 0 ];then echo "*** Passed! ***";exit 0;fi - functional_virtualbox_macos: needs: [build_minikube] env: @@ -1358,17 +1230,17 @@ jobs: if: always() needs: [ - functional_docker_ubuntu, - functional_virtualbox_macos, - functional_docker_windows, - functional_hyperv_windows, - functional_baremetal_ubuntu18_04, - addons_certs_docker_ubuntu, - addons_certs_virtualbox_macos, - multinode_docker_ubuntu, - multinode_virtualbox_macos, - preload_dockerflags_docker_ubuntu, - pause_preload_dockerflags_virtualbox_macos, + functional_docker_ubuntu, + functional_virtualbox_macos, + functional_docker_windows, + functional_hyperv_windows, + functional_baremetal_ubuntu18_04, + addons_certs_docker_ubuntu, + addons_certs_virtualbox_macos, + multinode_docker_ubuntu, + multinode_virtualbox_macos, + preload_dockerflags_docker_ubuntu, + pause_preload_dockerflags_virtualbox_macos, ] runs-on: ubuntu-18.04 steps: diff --git a/Makefile b/Makefile index e874f7a977..d0f20a4ad2 100644 --- a/Makefile +++ b/Makefile @@ -657,17 +657,6 @@ else $(MAKE) push-kic-base-image-gcr push-kic-base-image-hub push-kic-base-image-gh endif -X_DOCKER_BUILDER ?= minikube-builder -X_BUILD_ENV ?= DOCKER_CLI_EXPERIMENTAL=enabled -X_IMG = gcr.io/kicbase/kicbase - -.PHONY: kic-base-image-x -kic-base-image-x: ## todo - env $(X_BUILD_ENV) docker run --rm --privileged multiarch/qemu-user-static --reset -p yes - env $(X_BUILD_ENV) docker buildx create --name kicbase-builder --use || true - env $(X_BUILD_ENV) docker buildx build --platform linux/arm64,linux/amd64 -t $(X_IMG):$(KIC_VERSION) --push --build-arg COMMIT_SHA=${VERSION}-$(COMMIT) ./deploy/kicbase - - .PHONY: out/gvisor-addon out/gvisor-addon: pkg/minikube/assets/assets.go pkg/minikube/translate/translations.go ## Build gvisor addon $(if $(quiet),@echo " GO $@") From 2dd5e93b40b36b95070fcc4f34e06550601be90c Mon Sep 17 00:00:00 2001 From: Ilya Zuyev Date: Thu, 17 Dec 2020 10:39:51 -0800 Subject: [PATCH 13/91] Revert gh related changes --- .github/workflows/master.yml | 22 ++--- .github/workflows/pr.yml | 157 ++++------------------------------- 2 files changed, 25 insertions(+), 154 deletions(-) diff --git a/.github/workflows/master.yml b/.github/workflows/master.yml index 583afbca98..bdac426be1 100644 --- a/.github/workflows/master.yml +++ b/.github/workflows/master.yml @@ -1230,17 +1230,17 @@ jobs: if: always() needs: [ - functional_docker_ubuntu, - functional_virtualbox_macos, - functional_docker_windows, - functional_hyperv_windows, - functional_baremetal_ubuntu18_04, - addons_certs_docker_ubuntu, - addons_certs_virtualbox_macos, - multinode_docker_ubuntu, - multinode_virtualbox_macos, - preload_dockerflags_docker_ubuntu, - pause_preload_dockerflags_virtualbox_macos, + functional_docker_ubuntu, + functional_virtualbox_macos, + functional_docker_windows, + functional_hyperv_windows, + functional_baremetal_ubuntu18_04, + addons_certs_docker_ubuntu, + addons_certs_virtualbox_macos, + multinode_docker_ubuntu, + multinode_virtualbox_macos, + preload_dockerflags_docker_ubuntu, + pause_preload_dockerflags_virtualbox_macos, ] runs-on: ubuntu-18.04 steps: diff --git a/.github/workflows/pr.yml b/.github/workflows/pr.yml index 27fc54d337..4605bb5900 100644 --- a/.github/workflows/pr.yml +++ b/.github/workflows/pr.yml @@ -40,34 +40,6 @@ jobs: with: name: minikube_binaries path: out - build_minikube_arm64: - runs-on: [self-hosted, arm64] - steps: - - uses: actions/checkout@v2 - - uses: actions/setup-go@v2 - with: - go-version: '1.15.2' - stable: true - - name: Download Dependencies - run: go mod download - - name: Build Binaries - run: | - make cross - make e2e-cross - cp -r test/integration/testdata ./out - whoami - echo github ref $GITHUB_REF - echo workflow $GITHUB_WORKFLOW - echo home $HOME - echo event name $GITHUB_EVENT_NAME - echo workspace $GITHUB_WORKSPACE - echo "end of debug stuff" - echo $(which jq) - - uses: actions/upload-artifact@v1 - with: - name: minikube_binaries - path: out - lint: runs-on: ubuntu-18.04 steps: @@ -207,107 +179,6 @@ jobs: if [ "$numPass" -eq 0 ];then echo "*** 0 Passed! ***";exit 2;fi if [ "$numPass" -lt 36 ];then echo "*** Failed to pass at least 36 ! ***";exit 2;fi if [ "$numPass" -eq 0 ];then echo "*** Passed! ***";exit 0;fi - - functional_docker_ubuntu_arm64: - needs: [ build_minikube_arm64 ] - env: - TIME_ELAPSED: time - JOB_NAME: "functional_docker_ubuntu" - GOPOGH_RESULT: "" - SHELL: "/bin/bash" # To prevent https://github.com/kubernetes/minikube/issues/6643 - runs-on: ubuntu-18.04 - steps: - - name: Install kubectl - shell: bash - run: | - curl -LO https://storage.googleapis.com/kubernetes-release/release/v1.18.0/bin/linux/amd64/kubectl - sudo install kubectl /usr/local/bin/kubectl - kubectl version --client=true - - name: Docker Info - shell: bash - run: | - echo "--------------------------" - docker version || true - echo "--------------------------" - docker info || true - echo "--------------------------" - docker system df || true - echo "--------------------------" - docker system info --format='{{json .}}'|| true - echo "--------------------------" - docker ps || true - echo "--------------------------" - # go 1.14.6+ is needed because of this bug https://github.com/golang/go/issues/39308 - - uses: actions/setup-go@v2 - with: - go-version: '1.15.2' - stable: true - - name: Install gopogh - - shell: bash - run: | - curl -LO https://github.com/medyagh/gopogh/releases/download/v0.2.4/gopogh-linux-amd64 - sudo install gopogh-linux-amd64 /usr/local/bin/gopogh - - name: Download Binaries - uses: actions/download-artifact@v1 - with: - name: minikube_binaries - - name: Run Integration Test - continue-on-error: false - # bash {0} to allow test to continue to next step. in case of - shell: bash {0} - run: | - cd minikube_binaries - mkdir -p report - mkdir -p testhome - chmod a+x e2e-* - chmod a+x minikube-* - sudo ln -s /etc/apparmor.d/usr.sbin.mysqld /etc/apparmor.d/disable/ - sudo apparmor_parser -R /etc/apparmor.d/usr.sbin.mysqld - START_TIME=$(date -u +%s) - KUBECONFIG=$(pwd)/testhome/kubeconfig MINIKUBE_HOME=$(pwd)/testhome ./e2e-linux-amd64 -minikube-start-args=--vm-driver=docker -test.run TestFunctional -test.timeout=10m -test.v -timeout-multiplier=1.5 -binary=./minikube-linux-amd64 2>&1 | tee ./report/testout.txt - END_TIME=$(date -u +%s) - TIME_ELAPSED=$(($END_TIME-$START_TIME)) - min=$((${TIME_ELAPSED}/60)) - sec=$((${TIME_ELAPSED}%60)) - TIME_ELAPSED="${min} min $sec seconds " - echo "TIME_ELAPSED=${TIME_ELAPSED}" >> $GITHUB_ENV - - name: Generate HTML Report - shell: bash - run: | - cd minikube_binaries - export PATH=${PATH}:`go env GOPATH`/bin - go tool test2json -t < ./report/testout.txt > ./report/testout.json || true - STAT=$(gopogh -in ./report/testout.json -out ./report/testout.html -name "${JOB_NAME} ${GITHUB_REF}" -repo "${GITHUB_REPOSITORY}" -details "${GITHUB_SHA}") || true - echo status: ${STAT} - FailNum=$(echo $STAT | jq '.NumberOfFail') - TestsNum=$(echo $STAT | jq '.NumberOfTests') - GOPOGH_RESULT="${JOB_NAME} : completed with ${FailNum} / ${TestsNum} failures in ${TIME_ELAPSED}" - echo "GOPOGH_RESULT=${GOPOGH_RESULT}" >> $GITHUB_ENV - echo 'STAT<> $GITHUB_ENV - echo "${STAT}" >> $GITHUB_ENV - echo 'EOF' >> $GITHUB_ENV - - uses: actions/upload-artifact@v1 - with: - name: functional_docker_ubuntu - path: minikube_binaries/report - - name: The End Result functional_docker_ubuntu - shell: bash - run: | - echo ${GOPOGH_RESULT} - numFail=$(echo $STAT | jq '.NumberOfFail') - numPass=$(echo $STAT | jq '.NumberOfPass') - echo "*******************${numPass} Passes :) *******************" - echo $STAT | jq '.PassedTests' || true - echo "*******************************************************" - echo "---------------- ${numFail} Failures :( ----------------------------" - echo $STAT | jq '.FailedTests' || true - echo "-------------------------------------------------------" - if [ "$numFail" -gt 0 ];then echo "*** $numFail Failed ***";exit 2;fi - if [ "$numPass" -eq 0 ];then echo "*** 0 Passed! ***";exit 2;fi - if [ "$numPass" -lt 36 ];then echo "*** Failed to pass at least 36 ! ***";exit 2;fi - if [ "$numPass" -eq 0 ];then echo "*** Passed! ***";exit 0;fi - functional_virtualbox_macos: needs: [build_minikube] env: @@ -344,7 +215,7 @@ jobs: run: | hostname VBoxManage --version - sysctl hw.physicalcpu hw.logicalcpu + sysctl hw.physicalcpu hw.logicalcpu - name: Disable firewall run: | sudo /usr/libexec/ApplicationFirewall/socketfilterfw --setglobalstate off @@ -420,7 +291,7 @@ jobs: shell: powershell run: | echo $env:computerName - ls + ls $ErrorActionPreference = "SilentlyContinue" cd minikube_binaries ls @@ -457,7 +328,7 @@ jobs: $docker_running = $? } Write-Output "Docker is running" - docker system prune -f + docker system prune -f - name: Info shell: powershell run: | @@ -1357,17 +1228,17 @@ jobs: if: always() needs: [ - functional_docker_ubuntu, - functional_virtualbox_macos, - functional_docker_windows, - functional_hyperv_windows, - functional_baremetal_ubuntu18_04, - addons_certs_docker_ubuntu, - addons_certs_virtualbox_macos, - multinode_docker_ubuntu, - multinode_virtualbox_macos, - preload_dockerflags_docker_ubuntu, - pause_preload_dockerflags_virtualbox_macos, + functional_docker_ubuntu, + functional_virtualbox_macos, + functional_docker_windows, + functional_hyperv_windows, + functional_baremetal_ubuntu18_04, + addons_certs_docker_ubuntu, + addons_certs_virtualbox_macos, + multinode_docker_ubuntu, + multinode_virtualbox_macos, + preload_dockerflags_docker_ubuntu, + pause_preload_dockerflags_virtualbox_macos, ] runs-on: ubuntu-18.04 steps: From 51ab65c0cd1a1d7db139816f675131ca592884ac Mon Sep 17 00:00:00 2001 From: Ilya Zuyev Date: Thu, 17 Dec 2020 10:41:33 -0800 Subject: [PATCH 14/91] Revert gh related changes --- pkg/drivers/kic/types.go | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pkg/drivers/kic/types.go b/pkg/drivers/kic/types.go index 723cfa0074..32f314ba4a 100644 --- a/pkg/drivers/kic/types.go +++ b/pkg/drivers/kic/types.go @@ -31,7 +31,7 @@ const ( var ( // BaseImage is the base image is used to spin up kic containers. it uses same base-image as kind. - BaseImage = fmt.Sprintf("gcr.io/minikube-dev-296021/kicbase:%s@sha256:%s", Version, baseImageSHA) + BaseImage = fmt.Sprintf("gcr.io/k8s-minikube/kicbase:%s@sha256:%s", Version, baseImageSHA) // FallbackImages are backup base images in case gcr isn't available FallbackImages = []string{ From af4a0560985bdb7b23716bdffcf0ca2ded8a1313 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Anders=20F=20Bj=C3=B6rklund?= Date: Wed, 30 Dec 2020 14:54:31 +0100 Subject: [PATCH 15/91] MEP: CRI: Containerd by default --- .../container-default.md | 45 +++++++++++++++++++ 1 file changed, 45 insertions(+) create mode 100644 enhancements/proposed/20201230-containerd-default/container-default.md diff --git a/enhancements/proposed/20201230-containerd-default/container-default.md b/enhancements/proposed/20201230-containerd-default/container-default.md new file mode 100644 index 0000000000..667666c194 --- /dev/null +++ b/enhancements/proposed/20201230-containerd-default/container-default.md @@ -0,0 +1,45 @@ +# CRI: Containerd by default + +* First proposed: 2020-11-08 +* Authors: Anders F Björklund (@afbjorklund) + +## Reviewer Priorities + +Please review this proposal with the following priorities: + +* Does this fit with minikube's [principles](https://minikube.sigs.k8s.io/docs/concepts/principles/)? +* Are there other approaches to consider? +* Could the implementation be made simpler? +* Are there usability, reliability, or technical debt concerns? + +Please leave the above text in your proposal as instructions to the reader. + +## Summary + +Change default container runtime, from current "docker" to replacement "containerd". + +## Goals + +* Change from docker to containerd as default +* Still allow fast-building images with minikube + +## Non-Goals + +* Remove the docker support from minikube +* Change anything in the docker driver + +## Design Details + +The containerd container runtime is already included, and is passing certification. + +Unlike [Docker](https://www.docker.com/products/docker-engine), will need to include the CRI (runtime) and CNI (network) by default. + +Use [BuildKit](https://github.com/moby/buildkit) as a complement to [Containerd](https://containerd.io/), for producing an image from Dockerfile. + +Only run buildkitd on-demand (i.e. when building), default to running only containerd. + +## Alternatives Considered + +Keep Docker as the default, and add the new CRI-Docker to replace the old dockershim. + +Use [CRI-O](https://cri-o.io/)/[Podman](https://podman.io/) as default, which is a bigger change (since dockerd uses containerd). From 00763352b6860c5d340a55b4e87b142b7788b8e2 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Anders=20F=20Bj=C3=B6rklund?= Date: Wed, 10 Jul 2019 21:44:26 +0200 Subject: [PATCH 16/91] Add minikube support for the "generic" VM driver This driver connects to an already existing virtual machine, using the provided IP address and SSH user/key/port parameters. On this machine, libmachine will provision the docker daemon and minikube will bootstrap the kubernetes cluster (as usual). --- cmd/minikube/cmd/start_flags.go | 15 +++++ pkg/minikube/cluster/ip.go | 6 ++ pkg/minikube/config/types.go | 4 ++ pkg/minikube/driver/driver.go | 2 + pkg/minikube/registry/drvs/generic/generic.go | 62 +++++++++++++++++++ pkg/minikube/registry/drvs/init.go | 1 + site/content/en/docs/commands/start.md | 4 ++ 7 files changed, 94 insertions(+) create mode 100644 pkg/minikube/registry/drvs/generic/generic.go diff --git a/cmd/minikube/cmd/start_flags.go b/cmd/minikube/cmd/start_flags.go index 1988677eeb..7f659ceaf0 100644 --- a/cmd/minikube/cmd/start_flags.go +++ b/cmd/minikube/cmd/start_flags.go @@ -22,6 +22,7 @@ import ( "time" "github.com/blang/semver" + "github.com/docker/machine/libmachine/drivers" "github.com/pkg/errors" "github.com/spf13/cobra" "github.com/spf13/viper" @@ -110,6 +111,10 @@ const ( network = "network" startNamespace = "namespace" trace = "trace" + genericIPAddress = "generic-ip-address" + genericSSHUser = "generic-ssh-user" + genericSSHKey = "generic-ssh-key" + genericSSHPort = "generic-ssh-port" ) var ( @@ -221,6 +226,12 @@ func initNetworkingFlags() { startCmd.Flags().String(serviceCIDR, constants.DefaultServiceCIDR, "The CIDR to be used for service cluster IPs.") startCmd.Flags().StringArrayVar(&config.DockerEnv, "docker-env", nil, "Environment variables to pass to the Docker daemon. (format: key=value)") startCmd.Flags().StringArrayVar(&config.DockerOpt, "docker-opt", nil, "Specify arbitrary flags to pass to the Docker daemon. (format: key=value)") + + // generic + startCmd.Flags().String(genericIPAddress, "", "IP address (generic)") + startCmd.Flags().String(genericSSHUser, drivers.DefaultSSHUser, "SSH user (generic)") + startCmd.Flags().String(genericSSHKey, "", "SSH key (generic)") + startCmd.Flags().Int(genericSSHPort, drivers.DefaultSSHPort, "SSH port (generic)") } // ClusterFlagValue returns the current cluster name based on flags @@ -335,6 +346,10 @@ func generateClusterConfig(cmd *cobra.Command, existing *config.ClusterConfig, k NatNicType: viper.GetString(natNicType), StartHostTimeout: viper.GetDuration(waitTimeout), ExposedPorts: viper.GetStringSlice(ports), + GenericIPAddress: viper.GetString(genericIPAddress), + GenericSSHUser: viper.GetString(genericSSHUser), + GenericSSHKey: viper.GetString(genericSSHKey), + GenericSSHPort: viper.GetInt(genericSSHPort), KubernetesConfig: config.KubernetesConfig{ KubernetesVersion: k8sVersion, ClusterName: ClusterFlagValue(), diff --git a/pkg/minikube/cluster/ip.go b/pkg/minikube/cluster/ip.go index 891705e60c..6a3522e67a 100644 --- a/pkg/minikube/cluster/ip.go +++ b/pkg/minikube/cluster/ip.go @@ -40,6 +40,12 @@ func HostIP(host *host.Host, clusterName string) (net.IP, error) { return oci.RoutableHostIPFromInside(oci.Docker, clusterName, host.Name) case driver.Podman: return oci.RoutableHostIPFromInside(oci.Podman, clusterName, host.Name) + case driver.Generic: + ip, err := host.Driver.GetIP() + if err != nil { + return []byte{}, errors.Wrap(err, "Error getting VM/Host IP address") + } + return net.ParseIP(ip), nil case driver.KVM2: return net.ParseIP("192.168.39.1"), nil case driver.HyperV: diff --git a/pkg/minikube/config/types.go b/pkg/minikube/config/types.go index 00cc1b54d4..d4ccaa0555 100644 --- a/pkg/minikube/config/types.go +++ b/pkg/minikube/config/types.go @@ -66,6 +66,10 @@ type ClusterConfig struct { HostDNSResolver bool // Only used by virtualbox HostOnlyNicType string // Only used by virtualbox NatNicType string // Only used by virtualbox + GenericIPAddress string // Only used by generic + GenericSSHUser string // Only used by generic + GenericSSHKey string // Only used by generic + GenericSSHPort int // Only used by generic KubernetesConfig KubernetesConfig Nodes []Node Addons map[string]bool diff --git a/pkg/minikube/driver/driver.go b/pkg/minikube/driver/driver.go index 07974b9be1..6c9ff99353 100644 --- a/pkg/minikube/driver/driver.go +++ b/pkg/minikube/driver/driver.go @@ -39,6 +39,8 @@ const ( Mock = "mock" // None driver None = "none" + // Generic driver + Generic = "generic" // KVM2 driver KVM2 = "kvm2" // VirtualBox driver diff --git a/pkg/minikube/registry/drvs/generic/generic.go b/pkg/minikube/registry/drvs/generic/generic.go new file mode 100644 index 0000000000..93afecc133 --- /dev/null +++ b/pkg/minikube/registry/drvs/generic/generic.go @@ -0,0 +1,62 @@ +/* +Copyright 2019 The Kubernetes Authors All rights reserved. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + +package generic + +import ( + "fmt" + + "github.com/docker/machine/drivers/generic" + "github.com/docker/machine/libmachine/drivers" + "github.com/pkg/errors" + + "k8s.io/minikube/pkg/minikube/config" + "k8s.io/minikube/pkg/minikube/driver" + "k8s.io/minikube/pkg/minikube/localpath" + "k8s.io/minikube/pkg/minikube/registry" +) + +func init() { + err := registry.Register(registry.DriverDef{ + Name: driver.Generic, + Config: configure, + Status: status, + Priority: registry.Fallback, + Init: func() drivers.Driver { return generic.NewDriver("", "") }, + }) + if err != nil { + panic(fmt.Sprintf("unable to register: %v", err)) + } +} + +func configure(cc config.ClusterConfig, n config.Node) (interface{}, error) { + d := generic.NewDriver(driver.MachineName(cc, n), localpath.MiniPath()) + + if cc.GenericIPAddress == "" { + return nil, errors.Errorf("please provide an IP address") + } + + d.(*generic.Driver).IPAddress = cc.GenericIPAddress + d.(*generic.Driver).SSHUser = cc.GenericSSHUser + d.(*generic.Driver).SSHKey = cc.GenericSSHKey + d.(*generic.Driver).SSHPort = cc.GenericSSHPort + + return d, nil +} + +func status() registry.State { + return registry.State{Installed: true, Healthy: true} +} diff --git a/pkg/minikube/registry/drvs/init.go b/pkg/minikube/registry/drvs/init.go index bca12775c3..2bd36761e7 100644 --- a/pkg/minikube/registry/drvs/init.go +++ b/pkg/minikube/registry/drvs/init.go @@ -19,6 +19,7 @@ package drvs import ( // Register all of the drvs we know of _ "k8s.io/minikube/pkg/minikube/registry/drvs/docker" + _ "k8s.io/minikube/pkg/minikube/registry/drvs/generic" _ "k8s.io/minikube/pkg/minikube/registry/drvs/hyperkit" _ "k8s.io/minikube/pkg/minikube/registry/drvs/hyperv" _ "k8s.io/minikube/pkg/minikube/registry/drvs/kvm2" diff --git a/site/content/en/docs/commands/start.md b/site/content/en/docs/commands/start.md index edaea7cb3a..e404b4a6a9 100644 --- a/site/content/en/docs/commands/start.md +++ b/site/content/en/docs/commands/start.md @@ -51,6 +51,10 @@ minikube start [flags] --feature-gates string A set of key=value pairs that describe feature gates for alpha/experimental features. --force Force minikube to perform possibly dangerous operations --force-systemd If set, force the container runtime to use sytemd as cgroup manager. Currently available for docker and crio. Defaults to false. + --generic-ip-address string IP address (generic) + --generic-ssh-key string SSH key (generic) + --generic-ssh-port int SSH port (generic) (default 22) + --generic-ssh-user string SSH user (generic) (default "root") --host-dns-resolver Enable host resolver for NAT DNS requests (virtualbox driver only) (default true) --host-only-cidr string The CIDR to be used for the minikube VM (virtualbox driver only) (default "192.168.99.1/24") --host-only-nic-type string NIC Type used for host only network. One of Am79C970A, Am79C973, 82540EM, 82543GC, 82545EM, or virtio (virtualbox driver only) (default "virtio") From c07666957a49e93a74d13847b183ba6986daeb35 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Anders=20F=20Bj=C3=B6rklund?= Date: Sun, 14 Jul 2019 16:03:28 +0200 Subject: [PATCH 17/91] Don't download ISO for the generic VM driver --- cmd/minikube/cmd/start.go | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/cmd/minikube/cmd/start.go b/cmd/minikube/cmd/start.go index 5e40239fdc..11a4b5227e 100644 --- a/cmd/minikube/cmd/start.go +++ b/cmd/minikube/cmd/start.go @@ -306,7 +306,7 @@ func provisionWithDriver(cmd *cobra.Command, ds registry.DriverState, existing * os.Exit(0) } - if driver.IsVM(driverName) { + if driver.IsVM(driverName) && driverName != driver.Generic { url, err := download.ISO(viper.GetStringSlice(isoURL), cmd.Flags().Changed(isoURL)) if err != nil { return node.Starter{}, errors.Wrap(err, "Failed to cache ISO") From 7c5ba62e8d9eb812075b2c47e8638ccd7cc72082 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Anders=20F=20Bj=C3=B6rklund?= Date: Sun, 14 Jul 2019 16:34:24 +0200 Subject: [PATCH 18/91] Generic driver does not add user to docker group --- pkg/minikube/machine/fix.go | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/pkg/minikube/machine/fix.go b/pkg/minikube/machine/fix.go index 8e0eeb7f77..88027806fa 100644 --- a/pkg/minikube/machine/fix.go +++ b/pkg/minikube/machine/fix.go @@ -95,6 +95,12 @@ func fixHost(api libmachine.API, cc *config.ClusterConfig, n *config.Node) (*hos return h, nil } + if h.Driver.DriverName() == driver.Generic { + if _, err := h.RunSSHCommand(fmt.Sprintf("sudo usermod -aG docker %s", h.Driver.GetSSHUsername())); err != nil { + return h, errors.Wrap(err, "usermod") + } + } + return h, ensureSyncedGuestClock(h, driverName) } From 2b5c5b92020d4eb2d5b895e7bba037d865ed0265 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Anders=20F=20Bj=C3=B6rklund?= Date: Sun, 14 Jul 2019 19:11:48 +0200 Subject: [PATCH 19/91] Try to uninstall kubernetes on delete, for generic --- cmd/minikube/cmd/delete.go | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/cmd/minikube/cmd/delete.go b/cmd/minikube/cmd/delete.go index 7bfe9bfda2..f24052c305 100644 --- a/cmd/minikube/cmd/delete.go +++ b/cmd/minikube/cmd/delete.go @@ -309,7 +309,7 @@ func deleteProfile(profile *config.Profile) error { return DeletionError{Err: delErr, Errtype: MissingProfile} } - if err == nil && driver.BareMetal(cc.Driver) { + if err == nil && (driver.BareMetal(cc.Driver) || cc.Driver == driver.Generic) { if err := uninstallKubernetes(api, *cc, cc.Nodes[0], viper.GetString(cmdcfg.Bootstrapper)); err != nil { deletionError, ok := err.(DeletionError) if ok { From 6dad25898ed166956f2456be554a8767ef7fda6c Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Anders=20F=20Bj=C3=B6rklund?= Date: Mon, 15 Jul 2019 16:14:58 +0200 Subject: [PATCH 20/91] Don't try to start/stop drivers without VMs It is not supported anyway, and just throws errors. There is no use to restart or to retry, just give up. This should never be a problem with "none", though. That always return running, while generic tests ssh. --- pkg/minikube/machine/fix.go | 9 +++++++++ pkg/minikube/machine/stop.go | 4 ++++ 2 files changed, 13 insertions(+) diff --git a/pkg/minikube/machine/fix.go b/pkg/minikube/machine/fix.go index 88027806fa..ba99581f5e 100644 --- a/pkg/minikube/machine/fix.go +++ b/pkg/minikube/machine/fix.go @@ -135,6 +135,15 @@ func recreateIfNeeded(api libmachine.API, cc *config.ClusterConfig, n *config.No } } + if h.Driver.DriverName() == driver.Generic { + if s == state.Running { + out.Step(style.Running, `Using the {{.driver_name}} "{{.cluster}}" {{.machine_type}} ...`, out.V{"driver_name": cc.Driver, "cluster": cc.Name, "machine_type": machineType}) + } else { + return h, errors.Errorf("not running") + } + return h, nil + } + if serr != constants.ErrMachineMissing { klog.Warningf("unexpected machine state, will restart: %v", serr) } diff --git a/pkg/minikube/machine/stop.go b/pkg/minikube/machine/stop.go index 3984f2e9aa..0526b08f7c 100644 --- a/pkg/minikube/machine/stop.go +++ b/pkg/minikube/machine/stop.go @@ -55,6 +55,10 @@ func stop(h *host.Host) error { } } + if h.DriverName == driver.Generic { + return nil + } + if err := h.Stop(); err != nil { klog.Infof("stop err: %v", err) st, ok := err.(mcnerror.ErrHostAlreadyInState) From d0260cca998d59b293a287027230f845c5957a9c Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Anders=20F=20Bj=C3=B6rklund?= Date: Wed, 28 Oct 2020 22:08:45 +0100 Subject: [PATCH 21/91] Allow actually using the generic driver All drivers *must* be in "supportedDrivers" Delete Podman on Darwin (Mac), not available --- pkg/minikube/driver/driver_darwin.go | 2 +- pkg/minikube/driver/driver_linux.go | 1 + pkg/minikube/driver/driver_windows.go | 1 + 3 files changed, 3 insertions(+), 1 deletion(-) diff --git a/pkg/minikube/driver/driver_darwin.go b/pkg/minikube/driver/driver_darwin.go index f951177677..24a6e56d6c 100644 --- a/pkg/minikube/driver/driver_darwin.go +++ b/pkg/minikube/driver/driver_darwin.go @@ -26,7 +26,7 @@ var supportedDrivers = []string{ HyperKit, VMware, Docker, - Podman, + Generic, } func VBoxManagePath() string { diff --git a/pkg/minikube/driver/driver_linux.go b/pkg/minikube/driver/driver_linux.go index 16e7b5e706..05784f946e 100644 --- a/pkg/minikube/driver/driver_linux.go +++ b/pkg/minikube/driver/driver_linux.go @@ -29,6 +29,7 @@ var supportedDrivers = []string{ None, Docker, Podman, + Generic, } // VBoxManagePath returns the path to the VBoxManage command diff --git a/pkg/minikube/driver/driver_windows.go b/pkg/minikube/driver/driver_windows.go index 80ff83b825..8a2f5a6a2a 100644 --- a/pkg/minikube/driver/driver_windows.go +++ b/pkg/minikube/driver/driver_windows.go @@ -33,6 +33,7 @@ var supportedDrivers = []string{ HyperV, VMware, Docker, + Generic, } // TODO: medyagh add same check for kic docker From d3ea174619e0cdd9ebce7ccb5f469673aeca68fb Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Anders=20F=20Bj=C3=B6rklund?= Date: Wed, 28 Oct 2020 22:23:29 +0100 Subject: [PATCH 22/91] Call DetectProvisioner for the generic driver It was failing to install the "docker" package Since the provisioning was defaulting to ISO --- pkg/minikube/machine/machine.go | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pkg/minikube/machine/machine.go b/pkg/minikube/machine/machine.go index d382041f6a..cf27e81655 100644 --- a/pkg/minikube/machine/machine.go +++ b/pkg/minikube/machine/machine.go @@ -104,7 +104,7 @@ func fastDetectProvisioner(h *host.Host) (libprovision.Provisioner, error) { switch { case driver.IsKIC(d): return provision.NewUbuntuProvisioner(h.Driver), nil - case driver.BareMetal(d): + case driver.BareMetal(d), d == driver.Generic: return libprovision.DetectProvisioner(h.Driver) default: return provision.NewBuildrootProvisioner(h.Driver), nil From c3a23cd60a2982c3be5ce9caf1438ebe2e5f2b3b Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Anders=20F=20Bj=C3=B6rklund?= Date: Thu, 29 Oct 2020 07:39:22 +0100 Subject: [PATCH 23/91] Fix failing unit test for MachineType Since we don't know the remote machine type anyway, it could be a virtual machine or a physical server. But we don't add any _extra_ isolation for minikube, so go with "bare metal machine" machine type for now. --- pkg/minikube/driver/driver.go | 4 ++++ pkg/minikube/driver/driver_test.go | 1 + 2 files changed, 5 insertions(+) diff --git a/pkg/minikube/driver/driver.go b/pkg/minikube/driver/driver.go index 6c9ff99353..b66ad8aef5 100644 --- a/pkg/minikube/driver/driver.go +++ b/pkg/minikube/driver/driver.go @@ -99,6 +99,10 @@ func MachineType(name string) string { return "container" } + if name == Generic { + return "bare metal machine" + } + if IsVM(name) { return "VM" } diff --git a/pkg/minikube/driver/driver_test.go b/pkg/minikube/driver/driver_test.go index 1f6ab86f74..79e6b77893 100644 --- a/pkg/minikube/driver/driver_test.go +++ b/pkg/minikube/driver/driver_test.go @@ -65,6 +65,7 @@ func TestMachineType(t *testing.T) { Docker: "container", Mock: "bare metal machine", None: "bare metal machine", + Generic: "bare metal machine", KVM2: "VM", VirtualBox: "VM", HyperKit: "VM", From d96d3befbe9927d4582c33934ff1f23b0a462e5b Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Anders=20F=20Bj=C3=B6rklund?= Date: Thu, 29 Oct 2020 12:17:37 +0100 Subject: [PATCH 24/91] Log the os-release also for the generic driver --- pkg/minikube/machine/start.go | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pkg/minikube/machine/start.go b/pkg/minikube/machine/start.go index 7e0c3d795c..92e22efaf8 100644 --- a/pkg/minikube/machine/start.go +++ b/pkg/minikube/machine/start.go @@ -283,7 +283,7 @@ func postStartSetup(h *host.Host, mc config.ClusterConfig) error { if driver.BareMetal(mc.Driver) { showLocalOsRelease() } - if driver.IsVM(mc.Driver) || driver.IsKIC(mc.Driver) { + if driver.IsVM(mc.Driver) || driver.IsKIC(mc.Driver) || mc.Driver == driver.Generic { logRemoteOsRelease(r) } return syncLocalAssets(r) From a0d2c1a0c5b9d1f99fc607183d3043b0c5409b03 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Anders=20F=20Bj=C3=B6rklund?= Date: Thu, 29 Oct 2020 12:18:49 +0100 Subject: [PATCH 25/91] Need to set up docker group in start - not in fix It was only called for existing machines, not for new. But other commands expect to be able to run "docker". --- pkg/minikube/machine/fix.go | 6 ------ pkg/minikube/machine/start.go | 6 ++++++ 2 files changed, 6 insertions(+), 6 deletions(-) diff --git a/pkg/minikube/machine/fix.go b/pkg/minikube/machine/fix.go index ba99581f5e..c4f986a121 100644 --- a/pkg/minikube/machine/fix.go +++ b/pkg/minikube/machine/fix.go @@ -95,12 +95,6 @@ func fixHost(api libmachine.API, cc *config.ClusterConfig, n *config.Node) (*hos return h, nil } - if h.Driver.DriverName() == driver.Generic { - if _, err := h.RunSSHCommand(fmt.Sprintf("sudo usermod -aG docker %s", h.Driver.GetSSHUsername())); err != nil { - return h, errors.Wrap(err, "usermod") - } - } - return h, ensureSyncedGuestClock(h, driverName) } diff --git a/pkg/minikube/machine/start.go b/pkg/minikube/machine/start.go index 92e22efaf8..4a38966c76 100644 --- a/pkg/minikube/machine/start.go +++ b/pkg/minikube/machine/start.go @@ -168,6 +168,12 @@ func createHost(api libmachine.API, cfg *config.ClusterConfig, n *config.Node) ( return h, errors.Wrap(err, "post-start") } + if h.Driver.DriverName() == driver.Generic { + if _, err := h.RunSSHCommand(fmt.Sprintf("sudo usermod -aG docker %s", h.Driver.GetSSHUsername())); err != nil { + return h, errors.Wrap(err, "usermod") + } + } + if err := saveHost(api, h, cfg, n); err != nil { return h, err } From a3b3b55ac03362057e5c7fe4adcaef5461eacdfb Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Anders=20F=20Bj=C3=B6rklund?= Date: Sat, 14 Nov 2020 09:36:49 +0100 Subject: [PATCH 26/91] Add helper for checking the generic driver name --- cmd/minikube/cmd/delete.go | 2 +- cmd/minikube/cmd/start.go | 2 +- pkg/minikube/driver/driver.go | 7 ++++++- pkg/minikube/machine/fix.go | 2 +- pkg/minikube/machine/machine.go | 2 +- pkg/minikube/machine/start.go | 4 ++-- pkg/minikube/machine/stop.go | 2 +- 7 files changed, 13 insertions(+), 8 deletions(-) diff --git a/cmd/minikube/cmd/delete.go b/cmd/minikube/cmd/delete.go index f24052c305..846d03d294 100644 --- a/cmd/minikube/cmd/delete.go +++ b/cmd/minikube/cmd/delete.go @@ -309,7 +309,7 @@ func deleteProfile(profile *config.Profile) error { return DeletionError{Err: delErr, Errtype: MissingProfile} } - if err == nil && (driver.BareMetal(cc.Driver) || cc.Driver == driver.Generic) { + if err == nil && (driver.BareMetal(cc.Driver) || driver.IsGeneric(cc.Driver)) { if err := uninstallKubernetes(api, *cc, cc.Nodes[0], viper.GetString(cmdcfg.Bootstrapper)); err != nil { deletionError, ok := err.(DeletionError) if ok { diff --git a/cmd/minikube/cmd/start.go b/cmd/minikube/cmd/start.go index 11a4b5227e..62700e2231 100644 --- a/cmd/minikube/cmd/start.go +++ b/cmd/minikube/cmd/start.go @@ -306,7 +306,7 @@ func provisionWithDriver(cmd *cobra.Command, ds registry.DriverState, existing * os.Exit(0) } - if driver.IsVM(driverName) && driverName != driver.Generic { + if driver.IsVM(driverName) && !driver.IsGeneric(driverName) { url, err := download.ISO(viper.GetStringSlice(isoURL), cmd.Flags().Changed(isoURL)) if err != nil { return node.Starter{}, errors.Wrap(err, "Failed to cache ISO") diff --git a/pkg/minikube/driver/driver.go b/pkg/minikube/driver/driver.go index b66ad8aef5..c1783f8ca3 100644 --- a/pkg/minikube/driver/driver.go +++ b/pkg/minikube/driver/driver.go @@ -99,7 +99,7 @@ func MachineType(name string) string { return "container" } - if name == Generic { + if IsGeneric(name) { return "bare metal machine" } @@ -150,6 +150,11 @@ func BareMetal(name string) bool { return name == None || name == Mock } +// IsGeneric checks if the driver is generic +func IsGeneric(name string) bool { + return name == Generic +} + // NeedsPortForward returns true if driver is unable provide direct IP connectivity func NeedsPortForward(name string) bool { if !IsKIC(name) { diff --git a/pkg/minikube/machine/fix.go b/pkg/minikube/machine/fix.go index c4f986a121..58e09eb8ee 100644 --- a/pkg/minikube/machine/fix.go +++ b/pkg/minikube/machine/fix.go @@ -129,7 +129,7 @@ func recreateIfNeeded(api libmachine.API, cc *config.ClusterConfig, n *config.No } } - if h.Driver.DriverName() == driver.Generic { + if driver.IsGeneric(h.Driver.DriverName()) { if s == state.Running { out.Step(style.Running, `Using the {{.driver_name}} "{{.cluster}}" {{.machine_type}} ...`, out.V{"driver_name": cc.Driver, "cluster": cc.Name, "machine_type": machineType}) } else { diff --git a/pkg/minikube/machine/machine.go b/pkg/minikube/machine/machine.go index cf27e81655..2fdf60ba69 100644 --- a/pkg/minikube/machine/machine.go +++ b/pkg/minikube/machine/machine.go @@ -104,7 +104,7 @@ func fastDetectProvisioner(h *host.Host) (libprovision.Provisioner, error) { switch { case driver.IsKIC(d): return provision.NewUbuntuProvisioner(h.Driver), nil - case driver.BareMetal(d), d == driver.Generic: + case driver.BareMetal(d), driver.IsGeneric(d): return libprovision.DetectProvisioner(h.Driver) default: return provision.NewBuildrootProvisioner(h.Driver), nil diff --git a/pkg/minikube/machine/start.go b/pkg/minikube/machine/start.go index 4a38966c76..689d1e90c2 100644 --- a/pkg/minikube/machine/start.go +++ b/pkg/minikube/machine/start.go @@ -168,7 +168,7 @@ func createHost(api libmachine.API, cfg *config.ClusterConfig, n *config.Node) ( return h, errors.Wrap(err, "post-start") } - if h.Driver.DriverName() == driver.Generic { + if driver.IsGeneric(h.Driver.DriverName()) { if _, err := h.RunSSHCommand(fmt.Sprintf("sudo usermod -aG docker %s", h.Driver.GetSSHUsername())); err != nil { return h, errors.Wrap(err, "usermod") } @@ -289,7 +289,7 @@ func postStartSetup(h *host.Host, mc config.ClusterConfig) error { if driver.BareMetal(mc.Driver) { showLocalOsRelease() } - if driver.IsVM(mc.Driver) || driver.IsKIC(mc.Driver) || mc.Driver == driver.Generic { + if driver.IsVM(mc.Driver) || driver.IsKIC(mc.Driver) || driver.IsGeneric(mc.Driver) { logRemoteOsRelease(r) } return syncLocalAssets(r) diff --git a/pkg/minikube/machine/stop.go b/pkg/minikube/machine/stop.go index 0526b08f7c..56623d3535 100644 --- a/pkg/minikube/machine/stop.go +++ b/pkg/minikube/machine/stop.go @@ -55,7 +55,7 @@ func stop(h *host.Host) error { } } - if h.DriverName == driver.Generic { + if driver.IsGeneric(h.DriverName) { return nil } From fa05fcd6d0ffbc237f4458d3fcd1c6a77afce5e8 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Anders=20F=20Bj=C3=B6rklund?= Date: Wed, 6 Jan 2021 18:35:09 +0100 Subject: [PATCH 27/91] Fork the generic driver to the minikube code base --- pkg/drivers/generic/generic.go | 212 ++++++++++++++++++ pkg/minikube/registry/drvs/generic/generic.go | 2 +- 2 files changed, 213 insertions(+), 1 deletion(-) create mode 100644 pkg/drivers/generic/generic.go diff --git a/pkg/drivers/generic/generic.go b/pkg/drivers/generic/generic.go new file mode 100644 index 0000000000..b7a65e135f --- /dev/null +++ b/pkg/drivers/generic/generic.go @@ -0,0 +1,212 @@ +/* +Copyright 2019 The Kubernetes Authors All rights reserved. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + +package generic + +import ( + "errors" + "fmt" + "net" + "os" + "path" + "strconv" + "time" + + "github.com/docker/machine/libmachine/drivers" + "github.com/docker/machine/libmachine/engine" + "github.com/docker/machine/libmachine/log" + "github.com/docker/machine/libmachine/mcnflag" + "github.com/docker/machine/libmachine/mcnutils" + "github.com/docker/machine/libmachine/state" +) + +type Driver struct { + *drivers.BaseDriver + EnginePort int + SSHKey string +} + +const ( + defaultTimeout = 15 * time.Second +) + +// GetCreateFlags registers the flags this driver adds to +// "docker hosts create" +func (d *Driver) GetCreateFlags() []mcnflag.Flag { + return []mcnflag.Flag{ + mcnflag.IntFlag{ + Name: "generic-engine-port", + Usage: "Docker engine port", + Value: engine.DefaultPort, + EnvVar: "GENERIC_ENGINE_PORT", + }, + mcnflag.StringFlag{ + Name: "generic-ip-address", + Usage: "IP Address of machine", + EnvVar: "GENERIC_IP_ADDRESS", + }, + mcnflag.StringFlag{ + Name: "generic-ssh-user", + Usage: "SSH user", + Value: drivers.DefaultSSHUser, + EnvVar: "GENERIC_SSH_USER", + }, + mcnflag.StringFlag{ + Name: "generic-ssh-key", + Usage: "SSH private key path (if not provided, default SSH key will be used)", + Value: "", + EnvVar: "GENERIC_SSH_KEY", + }, + mcnflag.IntFlag{ + Name: "generic-ssh-port", + Usage: "SSH port", + Value: drivers.DefaultSSHPort, + EnvVar: "GENERIC_SSH_PORT", + }, + } +} + +// NewDriver creates and returns a new instance of the driver +func NewDriver(hostName, storePath string) drivers.Driver { + return &Driver{ + EnginePort: engine.DefaultPort, + BaseDriver: &drivers.BaseDriver{ + MachineName: hostName, + StorePath: storePath, + }, + } +} + +// DriverName returns the name of the driver +func (d *Driver) DriverName() string { + return "generic" +} + +func (d *Driver) GetSSHHostname() (string, error) { + return d.GetIP() +} + +func (d *Driver) GetSSHUsername() string { + return d.SSHUser +} + +func (d *Driver) GetSSHKeyPath() string { + return d.SSHKeyPath +} + +func (d *Driver) SetConfigFromFlags(flags drivers.DriverOptions) error { + d.EnginePort = flags.Int("generic-engine-port") + d.IPAddress = flags.String("generic-ip-address") + d.SSHUser = flags.String("generic-ssh-user") + d.SSHKey = flags.String("generic-ssh-key") + d.SSHPort = flags.Int("generic-ssh-port") + + if d.IPAddress == "" { + return errors.New("generic driver requires the --generic-ip-address option") + } + + return nil +} + +func (d *Driver) PreCreateCheck() error { + if d.SSHKey != "" { + if _, err := os.Stat(d.SSHKey); os.IsNotExist(err) { + return fmt.Errorf("SSH key does not exist: %q", d.SSHKey) + } + + // TODO: validate the key is a valid key + } + + return nil +} + +func (d *Driver) Create() error { + if d.SSHKey == "" { + log.Info("No SSH key specified. Assuming an existing key at the default location.") + } else { + log.Info("Importing SSH key...") + + d.SSHKeyPath = d.ResolveStorePath(path.Base(d.SSHKey)) + if err := copySSHKey(d.SSHKey, d.SSHKeyPath); err != nil { + return err + } + + if err := copySSHKey(d.SSHKey+".pub", d.SSHKeyPath+".pub"); err != nil { + log.Infof("Couldn't copy SSH public key : %s", err) + } + } + + log.Debugf("IP: %s", d.IPAddress) + + return nil +} + +func (d *Driver) GetURL() (string, error) { + if err := drivers.MustBeRunning(d); err != nil { + return "", err + } + + ip, err := d.GetIP() + if err != nil { + return "", err + } + + return fmt.Sprintf("tcp://%s", net.JoinHostPort(ip, strconv.Itoa(d.EnginePort))), nil +} + +func (d *Driver) GetState() (state.State, error) { + address := net.JoinHostPort(d.IPAddress, strconv.Itoa(d.SSHPort)) + + _, err := net.DialTimeout("tcp", address, defaultTimeout) + if err != nil { + return state.Stopped, nil + } + + return state.Running, nil +} + +func (d *Driver) Start() error { + return errors.New("generic driver does not support start") +} + +func (d *Driver) Stop() error { + return errors.New("generic driver does not support stop") +} + +func (d *Driver) Restart() error { + _, err := drivers.RunSSHCommandFromDriver(d, "sudo shutdown -r now") + return err +} + +func (d *Driver) Kill() error { + return errors.New("generic driver does not support kill") +} + +func (d *Driver) Remove() error { + return nil +} + +func copySSHKey(src, dst string) error { + if err := mcnutils.CopyFile(src, dst); err != nil { + return fmt.Errorf("unable to copy ssh key: %s", err) + } + + if err := os.Chmod(dst, 0600); err != nil { + return fmt.Errorf("unable to set permissions on the ssh key: %s", err) + } + + return nil +} diff --git a/pkg/minikube/registry/drvs/generic/generic.go b/pkg/minikube/registry/drvs/generic/generic.go index 93afecc133..c24d2dab13 100644 --- a/pkg/minikube/registry/drvs/generic/generic.go +++ b/pkg/minikube/registry/drvs/generic/generic.go @@ -19,10 +19,10 @@ package generic import ( "fmt" - "github.com/docker/machine/drivers/generic" "github.com/docker/machine/libmachine/drivers" "github.com/pkg/errors" + "k8s.io/minikube/pkg/drivers/generic" "k8s.io/minikube/pkg/minikube/config" "k8s.io/minikube/pkg/minikube/driver" "k8s.io/minikube/pkg/minikube/localpath" From a77e3de85f3bdb4f189592b1dd49641d6f3ae17c Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Anders=20F=20Bj=C3=B6rklund?= Date: Wed, 6 Jan 2021 18:41:54 +0100 Subject: [PATCH 28/91] Use CommonDrivers and drop machine GetCreateFlags This makes the machine driver specific to minikube --- pkg/drivers/generic/generic.go | 41 ++----------------- pkg/minikube/registry/drvs/generic/generic.go | 8 ++-- 2 files changed, 7 insertions(+), 42 deletions(-) diff --git a/pkg/drivers/generic/generic.go b/pkg/drivers/generic/generic.go index b7a65e135f..809bab0ddf 100644 --- a/pkg/drivers/generic/generic.go +++ b/pkg/drivers/generic/generic.go @@ -28,13 +28,14 @@ import ( "github.com/docker/machine/libmachine/drivers" "github.com/docker/machine/libmachine/engine" "github.com/docker/machine/libmachine/log" - "github.com/docker/machine/libmachine/mcnflag" "github.com/docker/machine/libmachine/mcnutils" "github.com/docker/machine/libmachine/state" + pkgdrivers "k8s.io/minikube/pkg/drivers" ) type Driver struct { *drivers.BaseDriver + *pkgdrivers.CommonDriver EnginePort int SSHKey string } @@ -43,44 +44,8 @@ const ( defaultTimeout = 15 * time.Second ) -// GetCreateFlags registers the flags this driver adds to -// "docker hosts create" -func (d *Driver) GetCreateFlags() []mcnflag.Flag { - return []mcnflag.Flag{ - mcnflag.IntFlag{ - Name: "generic-engine-port", - Usage: "Docker engine port", - Value: engine.DefaultPort, - EnvVar: "GENERIC_ENGINE_PORT", - }, - mcnflag.StringFlag{ - Name: "generic-ip-address", - Usage: "IP Address of machine", - EnvVar: "GENERIC_IP_ADDRESS", - }, - mcnflag.StringFlag{ - Name: "generic-ssh-user", - Usage: "SSH user", - Value: drivers.DefaultSSHUser, - EnvVar: "GENERIC_SSH_USER", - }, - mcnflag.StringFlag{ - Name: "generic-ssh-key", - Usage: "SSH private key path (if not provided, default SSH key will be used)", - Value: "", - EnvVar: "GENERIC_SSH_KEY", - }, - mcnflag.IntFlag{ - Name: "generic-ssh-port", - Usage: "SSH port", - Value: drivers.DefaultSSHPort, - EnvVar: "GENERIC_SSH_PORT", - }, - } -} - // NewDriver creates and returns a new instance of the driver -func NewDriver(hostName, storePath string) drivers.Driver { +func NewDriver(hostName, storePath string) *Driver { return &Driver{ EnginePort: engine.DefaultPort, BaseDriver: &drivers.BaseDriver{ diff --git a/pkg/minikube/registry/drvs/generic/generic.go b/pkg/minikube/registry/drvs/generic/generic.go index c24d2dab13..fc123db617 100644 --- a/pkg/minikube/registry/drvs/generic/generic.go +++ b/pkg/minikube/registry/drvs/generic/generic.go @@ -49,10 +49,10 @@ func configure(cc config.ClusterConfig, n config.Node) (interface{}, error) { return nil, errors.Errorf("please provide an IP address") } - d.(*generic.Driver).IPAddress = cc.GenericIPAddress - d.(*generic.Driver).SSHUser = cc.GenericSSHUser - d.(*generic.Driver).SSHKey = cc.GenericSSHKey - d.(*generic.Driver).SSHPort = cc.GenericSSHPort + d.IPAddress = cc.GenericIPAddress + d.SSHUser = cc.GenericSSHUser + d.SSHKey = cc.GenericSSHKey + d.SSHPort = cc.GenericSSHPort return d, nil } From a120c543bf6e878c5c7ffc780ef617927c0ed89c Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Anders=20F=20Bj=C3=B6rklund?= Date: Wed, 6 Jan 2021 20:03:58 +0100 Subject: [PATCH 29/91] Change meaning of Stop/Start/Restart to minikube The "none" driver has redefined stop and start to mean the kubelet rather than the host itself. Use the same API here. Killing actual containers remotely remains to be implemented. Only stop the kubelet service for now, and assuming systemd. --- pkg/drivers/generic/generic.go | 78 +++++++++++++++++++++++++++++++--- pkg/minikube/machine/fix.go | 9 ---- 2 files changed, 73 insertions(+), 14 deletions(-) diff --git a/pkg/drivers/generic/generic.go b/pkg/drivers/generic/generic.go index 809bab0ddf..dd17d39488 100644 --- a/pkg/drivers/generic/generic.go +++ b/pkg/drivers/generic/generic.go @@ -21,6 +21,7 @@ import ( "fmt" "net" "os" + "os/exec" "path" "strconv" "time" @@ -30,7 +31,10 @@ import ( "github.com/docker/machine/libmachine/log" "github.com/docker/machine/libmachine/mcnutils" "github.com/docker/machine/libmachine/state" + "k8s.io/klog/v2" pkgdrivers "k8s.io/minikube/pkg/drivers" + "k8s.io/minikube/pkg/minikube/command" + "k8s.io/minikube/pkg/minikube/sysinit" ) type Driver struct { @@ -143,21 +147,75 @@ func (d *Driver) GetState() (state.State, error) { return state.Running, nil } +// Start a host func (d *Driver) Start() error { - return errors.New("generic driver does not support start") + return nil } +// Stop a host gracefully, including any containers that we are managing. func (d *Driver) Stop() error { - return errors.New("generic driver does not support stop") + exec := command.NewSSHRunner(d) + if err := sysinit.New(exec).Stop("kubelet"); err != nil { + klog.Warningf("couldn't stop kubelet. will continue with stop anyways: %v", err) + if err := sysinit.New(exec).ForceStop("kubelet"); err != nil { + klog.Warningf("couldn't force stop kubelet. will continue with stop anyways: %v", err) + } + } + /* TODO + containers, err := d.runtime.ListContainers(cruntime.ListOptions{}) + if err != nil { + return errors.Wrap(err, "containers") + } + if len(containers) > 0 { + if err := d.runtime.StopContainers(containers); err != nil { + return errors.Wrap(err, "stop containers") + } + } + */ + klog.Infof("generic driver is stopped!") + return nil } +// Restart a host func (d *Driver) Restart() error { - _, err := drivers.RunSSHCommandFromDriver(d, "sudo shutdown -r now") - return err + exec := command.NewSSHRunner(d) + return restartKubelet(exec) } +// Kill stops a host forcefully, including any containers that we are managing. func (d *Driver) Kill() error { - return errors.New("generic driver does not support kill") + exec := command.NewSSHRunner(d) + if err := sysinit.New(exec).ForceStop("kubelet"); err != nil { + klog.Warningf("couldn't force stop kubelet. will continue with kill anyways: %v", err) + } + + /* TODO + // First try to gracefully stop containers + containers, err := d.runtime.ListContainers(cruntime.ListOptions{}) + if err != nil { + return errors.Wrap(err, "containers") + } + if len(containers) == 0 { + return nil + } + // Try to be graceful before sending SIGKILL everywhere. + if err := d.runtime.StopContainers(containers); err != nil { + return errors.Wrap(err, "stop") + } + + containers, err = d.runtime.ListContainers(cruntime.ListOptions{}) + if err != nil { + return errors.Wrap(err, "containers") + } + if len(containers) == 0 { + return nil + } + if err := d.runtime.KillContainers(containers); err != nil { + return errors.Wrap(err, "kill") + } + */ + return nil + } func (d *Driver) Remove() error { @@ -175,3 +233,13 @@ func copySSHKey(src, dst string) error { return nil } + +// restartKubelet restarts the kubelet +func restartKubelet(cr command.Runner) error { + klog.Infof("restarting kubelet.service ...") + c := exec.Command("sudo", "systemctl", "restart", "kubelet.service") + if _, err := cr.RunCmd(c); err != nil { + return err + } + return nil +} diff --git a/pkg/minikube/machine/fix.go b/pkg/minikube/machine/fix.go index 58e09eb8ee..8e0eeb7f77 100644 --- a/pkg/minikube/machine/fix.go +++ b/pkg/minikube/machine/fix.go @@ -129,15 +129,6 @@ func recreateIfNeeded(api libmachine.API, cc *config.ClusterConfig, n *config.No } } - if driver.IsGeneric(h.Driver.DriverName()) { - if s == state.Running { - out.Step(style.Running, `Using the {{.driver_name}} "{{.cluster}}" {{.machine_type}} ...`, out.V{"driver_name": cc.Driver, "cluster": cc.Name, "machine_type": machineType}) - } else { - return h, errors.Errorf("not running") - } - return h, nil - } - if serr != constants.ErrMachineMissing { klog.Warningf("unexpected machine state, will restart: %v", serr) } From 72a0fd66421a12046b1287d1321a5ebd418decdf Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Anders=20F=20Bj=C3=B6rklund?= Date: Wed, 6 Jan 2021 20:23:39 +0100 Subject: [PATCH 30/91] Move the constants for flag defaults from drivers Not using the default libmachine drivers anymore --- cmd/minikube/cmd/start_flags.go | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/cmd/minikube/cmd/start_flags.go b/cmd/minikube/cmd/start_flags.go index 7f659ceaf0..0dd437296f 100644 --- a/cmd/minikube/cmd/start_flags.go +++ b/cmd/minikube/cmd/start_flags.go @@ -22,7 +22,6 @@ import ( "time" "github.com/blang/semver" - "github.com/docker/machine/libmachine/drivers" "github.com/pkg/errors" "github.com/spf13/cobra" "github.com/spf13/viper" @@ -115,6 +114,8 @@ const ( genericSSHUser = "generic-ssh-user" genericSSHKey = "generic-ssh-key" genericSSHPort = "generic-ssh-port" + defaultSSHUser = "root" + defaultSSHPort = 22 ) var ( @@ -229,9 +230,9 @@ func initNetworkingFlags() { // generic startCmd.Flags().String(genericIPAddress, "", "IP address (generic)") - startCmd.Flags().String(genericSSHUser, drivers.DefaultSSHUser, "SSH user (generic)") + startCmd.Flags().String(genericSSHUser, defaultSSHUser, "SSH user (generic)") startCmd.Flags().String(genericSSHKey, "", "SSH key (generic)") - startCmd.Flags().Int(genericSSHPort, drivers.DefaultSSHPort, "SSH port (generic)") + startCmd.Flags().Int(genericSSHPort, defaultSSHPort, "SSH port (generic)") } // ClusterFlagValue returns the current cluster name based on flags From 1d6c86c8b5a6cbd0f1c1fa4b4976fa8b7b773fba Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Anders=20F=20Bj=C3=B6rklund?= Date: Wed, 6 Jan 2021 21:05:14 +0100 Subject: [PATCH 31/91] Also remove unused machine SetConfigFromFlags Setting the config directly instead in minikube --- pkg/drivers/generic/generic.go | 15 --------------- 1 file changed, 15 deletions(-) diff --git a/pkg/drivers/generic/generic.go b/pkg/drivers/generic/generic.go index dd17d39488..63093b586b 100644 --- a/pkg/drivers/generic/generic.go +++ b/pkg/drivers/generic/generic.go @@ -17,7 +17,6 @@ limitations under the License. package generic import ( - "errors" "fmt" "net" "os" @@ -76,20 +75,6 @@ func (d *Driver) GetSSHKeyPath() string { return d.SSHKeyPath } -func (d *Driver) SetConfigFromFlags(flags drivers.DriverOptions) error { - d.EnginePort = flags.Int("generic-engine-port") - d.IPAddress = flags.String("generic-ip-address") - d.SSHUser = flags.String("generic-ssh-user") - d.SSHKey = flags.String("generic-ssh-key") - d.SSHPort = flags.Int("generic-ssh-port") - - if d.IPAddress == "" { - return errors.New("generic driver requires the --generic-ip-address option") - } - - return nil -} - func (d *Driver) PreCreateCheck() error { if d.SSHKey != "" { if _, err := os.Stat(d.SSHKey); os.IsNotExist(err) { From 1d5ee9e02e2553350a6e0c0fdd5a70ce8505bfde Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Anders=20F=20Bj=C3=B6rklund?= Date: Wed, 6 Jan 2021 21:15:45 +0100 Subject: [PATCH 32/91] OK to call Stop when implementation is changed --- pkg/minikube/machine/stop.go | 4 ---- 1 file changed, 4 deletions(-) diff --git a/pkg/minikube/machine/stop.go b/pkg/minikube/machine/stop.go index 56623d3535..3984f2e9aa 100644 --- a/pkg/minikube/machine/stop.go +++ b/pkg/minikube/machine/stop.go @@ -55,10 +55,6 @@ func stop(h *host.Host) error { } } - if driver.IsGeneric(h.DriverName) { - return nil - } - if err := h.Stop(); err != nil { klog.Infof("stop err: %v", err) st, ok := err.(mcnerror.ErrHostAlreadyInState) From 39218369c0600b1e17247f71fe40073467c4b68c Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Anders=20F=20Bj=C3=B6rklund?= Date: Fri, 8 Jan 2021 07:54:51 +0100 Subject: [PATCH 33/91] Improve help text for generic driver flags --- cmd/minikube/cmd/start_flags.go | 8 ++++---- site/content/en/docs/commands/start.md | 8 ++++---- 2 files changed, 8 insertions(+), 8 deletions(-) diff --git a/cmd/minikube/cmd/start_flags.go b/cmd/minikube/cmd/start_flags.go index 810e933d6d..491d760cba 100644 --- a/cmd/minikube/cmd/start_flags.go +++ b/cmd/minikube/cmd/start_flags.go @@ -229,10 +229,10 @@ func initNetworkingFlags() { startCmd.Flags().StringArrayVar(&config.DockerOpt, "docker-opt", nil, "Specify arbitrary flags to pass to the Docker daemon. (format: key=value)") // generic - startCmd.Flags().String(genericIPAddress, "", "IP address (generic)") - startCmd.Flags().String(genericSSHUser, defaultSSHUser, "SSH user (generic)") - startCmd.Flags().String(genericSSHKey, "", "SSH key (generic)") - startCmd.Flags().Int(genericSSHPort, defaultSSHPort, "SSH port (generic)") + startCmd.Flags().String(genericIPAddress, "", "IP address (generic driver only)") + startCmd.Flags().String(genericSSHUser, defaultSSHUser, "SSH user (generic driver only)") + startCmd.Flags().String(genericSSHKey, "", "SSH key (generic driver only)") + startCmd.Flags().Int(genericSSHPort, defaultSSHPort, "SSH port (generic driver only)") } // ClusterFlagValue returns the current cluster name based on flags diff --git a/site/content/en/docs/commands/start.md b/site/content/en/docs/commands/start.md index 173d08c1bf..8f53c8d600 100644 --- a/site/content/en/docs/commands/start.md +++ b/site/content/en/docs/commands/start.md @@ -51,10 +51,10 @@ minikube start [flags] --feature-gates string A set of key=value pairs that describe feature gates for alpha/experimental features. --force Force minikube to perform possibly dangerous operations --force-systemd If set, force the container runtime to use sytemd as cgroup manager. Defaults to false. - --generic-ip-address string IP address (generic) - --generic-ssh-key string SSH key (generic) - --generic-ssh-port int SSH port (generic) (default 22) - --generic-ssh-user string SSH user (generic) (default "root") + --generic-ip-address string IP address (generic driver only) + --generic-ssh-key string SSH key (generic driver only) + --generic-ssh-port int SSH port (generic driver only) (default 22) + --generic-ssh-user string SSH user (generic driver only) (default "root") --host-dns-resolver Enable host resolver for NAT DNS requests (virtualbox driver only) (default true) --host-only-cidr string The CIDR to be used for the minikube VM (virtualbox driver only) (default "192.168.99.1/24") --host-only-nic-type string NIC Type used for host only network. One of Am79C970A, Am79C973, 82540EM, 82543GC, 82545EM, or virtio (virtualbox driver only) (default "virtio") From d51443bee1478eca1c89670d114ab0c8bc1f90d7 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Anders=20F=20Bj=C3=B6rklund?= Date: Thu, 29 Oct 2020 07:23:51 +0100 Subject: [PATCH 34/91] Show remote host info and proper progress --- cmd/minikube/cmd/start.go | 2 +- pkg/minikube/machine/info.go | 84 ++++++++++++++++++++++++++- pkg/minikube/machine/start.go | 25 +++++++- pkg/minikube/out/register/register.go | 2 + pkg/minikube/style/style.go | 1 + pkg/minikube/style/style_enum.go | 1 + 6 files changed, 109 insertions(+), 6 deletions(-) diff --git a/cmd/minikube/cmd/start.go b/cmd/minikube/cmd/start.go index a1325b733f..8dfe887f52 100644 --- a/cmd/minikube/cmd/start.go +++ b/cmd/minikube/cmd/start.go @@ -851,7 +851,7 @@ func validateUser(drvName string) { // memoryLimits returns the amount of memory allocated to the system and hypervisor, the return value is in MiB func memoryLimits(drvName string) (int, int, error) { - info, cpuErr, memErr, diskErr := machine.CachedHostInfo() + info, cpuErr, memErr, diskErr := machine.LocalHostInfo() if cpuErr != nil { klog.Warningf("could not get system cpu info while verifying memory limits, which might be okay: %v", cpuErr) } diff --git a/pkg/minikube/machine/info.go b/pkg/minikube/machine/info.go index d2f3066a7e..8c39b9d264 100644 --- a/pkg/minikube/machine/info.go +++ b/pkg/minikube/machine/info.go @@ -19,6 +19,8 @@ package machine import ( "io/ioutil" "os/exec" + "strconv" + "strings" "github.com/docker/machine/libmachine/provision" "github.com/shirou/gopsutil/cpu" @@ -39,8 +41,8 @@ type HostInfo struct { DiskSize int64 } -// CachedHostInfo returns system information such as memory,CPU, DiskSize -func CachedHostInfo() (*HostInfo, error, error, error) { +// LocalHostInfo returns system information such as memory,CPU, DiskSize +func LocalHostInfo() (*HostInfo, error, error, error) { var cpuErr, memErr, diskErr error i, cpuErr := cachedCPUInfo() if cpuErr != nil { @@ -63,6 +65,43 @@ func CachedHostInfo() (*HostInfo, error, error, error) { return &info, cpuErr, memErr, diskErr } +// RemoteHostInfo returns system information such as memory,CPU, DiskSize +func RemoteHostInfo(r command.Runner) (*HostInfo, error, error, error) { + rr, cpuErr := r.RunCmd(exec.Command("nproc")) + if cpuErr != nil { + klog.Warningf("Unable to get CPU info: %v", cpuErr) + } + nproc := rr.Stdout.String() + ncpus, err := strconv.Atoi(strings.TrimSpace(nproc)) + if err != nil { + klog.Warningf("Failed to parse CPU info: %v", err) + } + rr, memErr := r.RunCmd(exec.Command("free", "-m")) + if memErr != nil { + klog.Warningf("Unable to get mem info: %v", memErr) + } + free := rr.Stdout.String() + memory, err := parseMemFree(free) + if err != nil { + klog.Warningf("Unable to parse mem info: %v", err) + } + rr, diskErr := r.RunCmd(exec.Command("df", "-m")) + if diskErr != nil { + klog.Warningf("Unable to get disk info: %v", diskErr) + } + df := rr.Stdout.String() + disksize, err := parseDiskFree(df) + if err != nil { + klog.Warningf("Unable to parse disk info: %v", err) + } + + var info HostInfo + info.CPUs = ncpus + info.Memory = memory + info.DiskSize = disksize + return &info, cpuErr, memErr, diskErr +} + // showLocalOsRelease shows systemd information about the current linux distribution, on the local host func showLocalOsRelease() { osReleaseOut, err := ioutil.ReadFile("/etc/os-release") @@ -150,3 +189,44 @@ func cachedCPUInfo() ([]cpu.InfoStat, error) { } return *cachedCPU, *cachedCPUErr } + +// ParseMemFree parses the output of the `free -m` command +func parseMemFree(out string) (int64, error) { + // total used free shared buff/cache available + //Mem: 1987 706 194 1 1086 1173 + //Swap: 0 0 0 + outlines := strings.Split(out, "\n") + l := len(outlines) + for _, line := range outlines[1 : l-1] { + parsedLine := strings.Fields(line) + t, err := strconv.ParseInt(parsedLine[1], 10, 64) + if err != nil { + return 0, err + } + m := strings.Trim(parsedLine[0], ":") + if m == "Mem" { + return t, nil + } + } + return 0, nil +} + +// ParseDiskFree parses the output of the `df -m` command +func parseDiskFree(out string) (int64, error) { + // Filesystem 1M-blocks Used Available Use% Mounted on + // /dev/sda1 39643 3705 35922 10% / + outlines := strings.Split(out, "\n") + l := len(outlines) + for _, line := range outlines[1 : l-1] { + parsedLine := strings.Fields(line) + t, err := strconv.ParseInt(parsedLine[1], 10, 64) + if err != nil { + return 0, err + } + m := parsedLine[5] + if m == "/" { + return t, nil + } + } + return 0, nil +} diff --git a/pkg/minikube/machine/start.go b/pkg/minikube/machine/start.go index 689d1e90c2..06176eede2 100644 --- a/pkg/minikube/machine/start.go +++ b/pkg/minikube/machine/start.go @@ -129,7 +129,10 @@ func createHost(api libmachine.API, cfg *config.ClusterConfig, n *config.Node) ( klog.Infof("duration metric: createHost completed in %s", time.Since(start)) }() - showHostInfo(*cfg) + if cfg.Driver != driver.Generic { + showHostInfo(nil, *cfg) + } + def := registry.Driver(cfg.Driver) if def.Empty() { return nil, fmt.Errorf("unsupported/missing driver: %s", cfg.Driver) @@ -163,6 +166,9 @@ func createHost(api libmachine.API, cfg *config.ClusterConfig, n *config.Node) ( return nil, errors.Wrap(err, "creating host") } klog.Infof("duration metric: libmachine.API.Create for %q took %s", cfg.Name, time.Since(cstart)) + if cfg.Driver == driver.Generic { + showHostInfo(h, *cfg) + } if err := postStartSetup(h, *cfg); err != nil { return h, errors.Wrap(err, "post-start") @@ -320,16 +326,29 @@ func acquireMachinesLock(name string, drv string) (mutex.Releaser, error) { } // showHostInfo shows host information -func showHostInfo(cfg config.ClusterConfig) { +func showHostInfo(h *host.Host, cfg config.ClusterConfig) { machineType := driver.MachineType(cfg.Driver) if driver.BareMetal(cfg.Driver) { - info, cpuErr, memErr, DiskErr := CachedHostInfo() + info, cpuErr, memErr, DiskErr := LocalHostInfo() if cpuErr == nil && memErr == nil && DiskErr == nil { register.Reg.SetStep(register.RunningLocalhost) out.Step(style.StartingNone, "Running on localhost (CPUs={{.number_of_cpus}}, Memory={{.memory_size}}MB, Disk={{.disk_size}}MB) ...", out.V{"number_of_cpus": info.CPUs, "memory_size": info.Memory, "disk_size": info.DiskSize}) } return } + if cfg.Driver == driver.Generic { + r, err := CommandRunner(h) + if err != nil { + klog.Warningf("error getting command runner: %v", err) + return + } + info, cpuErr, memErr, DiskErr := RemoteHostInfo(r) + if cpuErr == nil && memErr == nil && DiskErr == nil { + register.Reg.SetStep(register.RunningRemotely) + out.Step(style.StartingGeneric, "Running remotely (CPUs={{.number_of_cpus}}, Memory={{.memory_size}}MB, Disk={{.disk_size}}MB) ...", out.V{"number_of_cpus": info.CPUs, "memory_size": info.Memory, "disk_size": info.DiskSize}) + } + return + } if driver.IsKIC(cfg.Driver) { // TODO:medyagh add free disk space on docker machine register.Reg.SetStep(register.CreatingContainer) out.Step(style.StartingVM, "Creating {{.driver_name}} {{.machine_type}} (CPUs={{.number_of_cpus}}, Memory={{.memory_size}}MB) ...", out.V{"driver_name": cfg.Driver, "number_of_cpus": cfg.CPUs, "memory_size": cfg.Memory, "machine_type": machineType}) diff --git a/pkg/minikube/out/register/register.go b/pkg/minikube/out/register/register.go index ebb6c13a4c..6b810b0e30 100644 --- a/pkg/minikube/out/register/register.go +++ b/pkg/minikube/out/register/register.go @@ -32,6 +32,7 @@ const ( StartingNode RegStep = "Starting Node" PullingBaseImage RegStep = "Pulling Base Image" RunningLocalhost RegStep = "Running on Localhost" + RunningRemotely RegStep = "Running Remotely" LocalOSRelease RegStep = "Local OS Release" CreatingContainer RegStep = "Creating Container" CreatingVM RegStep = "Creating VM" @@ -79,6 +80,7 @@ func init() { LocalOSRelease, CreatingContainer, CreatingVM, + RunningRemotely, PreparingKubernetes, PreparingKubernetesCerts, PreparingKubernetesControlPlane, diff --git a/pkg/minikube/style/style.go b/pkg/minikube/style/style.go index 6707ab4fe1..c32116c671 100644 --- a/pkg/minikube/style/style.go +++ b/pkg/minikube/style/style.go @@ -126,6 +126,7 @@ var Config = map[Enum]Options{ Resetting: {Prefix: "🔄 "}, Shutdown: {Prefix: "🛑 "}, StartingNone: {Prefix: "🤹 "}, + StartingGeneric: {Prefix: "🔗 "}, StartingVM: {Prefix: "🔥 ", OmitNewline: true, Spinner: true}, SubStep: {Prefix: " ▪ ", LowPrefix: LowIndent, OmitNewline: true, Spinner: true}, // Indented bullet Tip: {Prefix: "💡 "}, diff --git a/pkg/minikube/style/style_enum.go b/pkg/minikube/style/style_enum.go index 63a6c49e9f..7ff5da49f8 100644 --- a/pkg/minikube/style/style_enum.go +++ b/pkg/minikube/style/style_enum.go @@ -81,6 +81,7 @@ const ( Shutdown Sparkle StartingNone + StartingGeneric StartingVM Stopped Stopping From 010e5fb5b0140b5f0b5664e18eaa549deb54bd72 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Anders=20F=20Bj=C3=B6rklund?= Date: Fri, 30 Oct 2020 12:13:15 +0100 Subject: [PATCH 35/91] Add some error checking on the parsed data fields --- pkg/minikube/machine/info.go | 11 +++++++++-- 1 file changed, 9 insertions(+), 2 deletions(-) diff --git a/pkg/minikube/machine/info.go b/pkg/minikube/machine/info.go index 8c39b9d264..e10c611d46 100644 --- a/pkg/minikube/machine/info.go +++ b/pkg/minikube/machine/info.go @@ -17,6 +17,7 @@ limitations under the License. package machine import ( + "errors" "io/ioutil" "os/exec" "strconv" @@ -199,6 +200,9 @@ func parseMemFree(out string) (int64, error) { l := len(outlines) for _, line := range outlines[1 : l-1] { parsedLine := strings.Fields(line) + if len(parsedLine) < 7 { + continue + } t, err := strconv.ParseInt(parsedLine[1], 10, 64) if err != nil { return 0, err @@ -208,7 +212,7 @@ func parseMemFree(out string) (int64, error) { return t, nil } } - return 0, nil + return 0, errors.New("no matching data found") } // ParseDiskFree parses the output of the `df -m` command @@ -219,6 +223,9 @@ func parseDiskFree(out string) (int64, error) { l := len(outlines) for _, line := range outlines[1 : l-1] { parsedLine := strings.Fields(line) + if len(parsedLine) < 6 { + continue + } t, err := strconv.ParseInt(parsedLine[1], 10, 64) if err != nil { return 0, err @@ -228,5 +235,5 @@ func parseDiskFree(out string) (int64, error) { return t, nil } } - return 0, nil + return 0, errors.New("no matching data found") } From e4ebaeabf640172eb6c9f4c09407763f93ff9525 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Anders=20F=20Bj=C3=B6rklund?= Date: Fri, 8 Jan 2021 17:36:23 +0100 Subject: [PATCH 36/91] Complete the container runtime and config change --- pkg/drivers/generic/generic.go | 44 ++++++++++++------- pkg/minikube/registry/drvs/generic/generic.go | 8 +++- 2 files changed, 34 insertions(+), 18 deletions(-) diff --git a/pkg/drivers/generic/generic.go b/pkg/drivers/generic/generic.go index 63093b586b..b04811c3f0 100644 --- a/pkg/drivers/generic/generic.go +++ b/pkg/drivers/generic/generic.go @@ -30,9 +30,11 @@ import ( "github.com/docker/machine/libmachine/log" "github.com/docker/machine/libmachine/mcnutils" "github.com/docker/machine/libmachine/state" + "github.com/pkg/errors" "k8s.io/klog/v2" pkgdrivers "k8s.io/minikube/pkg/drivers" "k8s.io/minikube/pkg/minikube/command" + "k8s.io/minikube/pkg/minikube/cruntime" "k8s.io/minikube/pkg/minikube/sysinit" ) @@ -41,6 +43,15 @@ type Driver struct { *pkgdrivers.CommonDriver EnginePort int SSHKey string + runtime cruntime.Manager + exec command.Runner +} + +// Config is configuration for the Generic driver +type Config struct { + MachineName string + StorePath string + ContainerRuntime string } const ( @@ -48,14 +59,23 @@ const ( ) // NewDriver creates and returns a new instance of the driver -func NewDriver(hostName, storePath string) *Driver { - return &Driver{ +func NewDriver(c Config) *Driver { + d := &Driver{ EnginePort: engine.DefaultPort, BaseDriver: &drivers.BaseDriver{ - MachineName: hostName, - StorePath: storePath, + MachineName: c.MachineName, + StorePath: c.StorePath, }, } + runner := command.NewSSHRunner(d) + runtime, err := cruntime.New(cruntime.Config{Type: c.ContainerRuntime, Runner: runner}) + // Libraries shouldn't panic, but there is no way for drivers to return error :( + if err != nil { + klog.Fatalf("unable to create container runtime: %v", err) + } + d.runtime = runtime + d.exec = runner + return d } // DriverName returns the name of the driver @@ -139,14 +159,12 @@ func (d *Driver) Start() error { // Stop a host gracefully, including any containers that we are managing. func (d *Driver) Stop() error { - exec := command.NewSSHRunner(d) - if err := sysinit.New(exec).Stop("kubelet"); err != nil { + if err := sysinit.New(d.exec).Stop("kubelet"); err != nil { klog.Warningf("couldn't stop kubelet. will continue with stop anyways: %v", err) - if err := sysinit.New(exec).ForceStop("kubelet"); err != nil { + if err := sysinit.New(d.exec).ForceStop("kubelet"); err != nil { klog.Warningf("couldn't force stop kubelet. will continue with stop anyways: %v", err) } } - /* TODO containers, err := d.runtime.ListContainers(cruntime.ListOptions{}) if err != nil { return errors.Wrap(err, "containers") @@ -156,25 +174,21 @@ func (d *Driver) Stop() error { return errors.Wrap(err, "stop containers") } } - */ klog.Infof("generic driver is stopped!") return nil } // Restart a host func (d *Driver) Restart() error { - exec := command.NewSSHRunner(d) - return restartKubelet(exec) + return restartKubelet(d.exec) } // Kill stops a host forcefully, including any containers that we are managing. func (d *Driver) Kill() error { - exec := command.NewSSHRunner(d) - if err := sysinit.New(exec).ForceStop("kubelet"); err != nil { + if err := sysinit.New(d.exec).ForceStop("kubelet"); err != nil { klog.Warningf("couldn't force stop kubelet. will continue with kill anyways: %v", err) } - /* TODO // First try to gracefully stop containers containers, err := d.runtime.ListContainers(cruntime.ListOptions{}) if err != nil { @@ -198,9 +212,7 @@ func (d *Driver) Kill() error { if err := d.runtime.KillContainers(containers); err != nil { return errors.Wrap(err, "kill") } - */ return nil - } func (d *Driver) Remove() error { diff --git a/pkg/minikube/registry/drvs/generic/generic.go b/pkg/minikube/registry/drvs/generic/generic.go index fc123db617..87d4ae0485 100644 --- a/pkg/minikube/registry/drvs/generic/generic.go +++ b/pkg/minikube/registry/drvs/generic/generic.go @@ -35,7 +35,7 @@ func init() { Config: configure, Status: status, Priority: registry.Fallback, - Init: func() drivers.Driver { return generic.NewDriver("", "") }, + Init: func() drivers.Driver { return generic.NewDriver(generic.Config{}) }, }) if err != nil { panic(fmt.Sprintf("unable to register: %v", err)) @@ -43,7 +43,11 @@ func init() { } func configure(cc config.ClusterConfig, n config.Node) (interface{}, error) { - d := generic.NewDriver(driver.MachineName(cc, n), localpath.MiniPath()) + d := generic.NewDriver(generic.Config{ + MachineName: driver.MachineName(cc, n), + StorePath: localpath.MiniPath(), + ContainerRuntime: cc.KubernetesConfig.ContainerRuntime, + }) if cc.GenericIPAddress == "" { return nil, errors.Errorf("please provide an IP address") From fb6cf6b6b6511c93cf6f07c6d48411c0bc3184ca Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Anders=20F=20Bj=C3=B6rklund?= Date: Fri, 8 Jan 2021 18:09:21 +0100 Subject: [PATCH 37/91] Add placeholder for docs for the generic driver But most of it is identical to the "none" driver --- pkg/drivers/generic/generic.go | 2 ++ site/content/en/docs/drivers/generic.md | 22 ++++++++++++++++ .../docs/drivers/includes/generic_usage.inc | 25 +++++++++++++++++++ 3 files changed, 49 insertions(+) create mode 100644 site/content/en/docs/drivers/generic.md create mode 100644 site/content/en/docs/drivers/includes/generic_usage.inc diff --git a/pkg/drivers/generic/generic.go b/pkg/drivers/generic/generic.go index b04811c3f0..dd8f8ca3d8 100644 --- a/pkg/drivers/generic/generic.go +++ b/pkg/drivers/generic/generic.go @@ -38,6 +38,8 @@ import ( "k8s.io/minikube/pkg/minikube/sysinit" ) +// Driver is a driver designed to run kubeadm w/o VM management. +// https://minikube.sigs.k8s.io/docs/reference/drivers/generic/ type Driver struct { *drivers.BaseDriver *pkgdrivers.CommonDriver diff --git a/site/content/en/docs/drivers/generic.md b/site/content/en/docs/drivers/generic.md new file mode 100644 index 0000000000..558c25b1b5 --- /dev/null +++ b/site/content/en/docs/drivers/generic.md @@ -0,0 +1,22 @@ +--- +title: "generic" +weight: 3 +description: > + Linux generic (remote) driver +aliases: + - /docs/reference/drivers/generic +--- + +## Overview + +This document is written for system integrators who wish to run minikube within a customized VM environment. The `generic` driver allows advanced minikube users to skip VM creation, allowing minikube to be run on a user-supplied VM. + +{{% readfile file="/docs/drivers/includes/generic_usage.inc" %}} + +## Issues + +* [Full list of open 'generic' driver issues](https://github.com/kubernetes/minikube/labels/co%2Fgeneric-driver) + +## Troubleshooting + +* Run `minikube start --alsologtostderr -v=4` to debug crashes diff --git a/site/content/en/docs/drivers/includes/generic_usage.inc b/site/content/en/docs/drivers/includes/generic_usage.inc new file mode 100644 index 0000000000..3a0d8a3bf7 --- /dev/null +++ b/site/content/en/docs/drivers/includes/generic_usage.inc @@ -0,0 +1,25 @@ +## Requirements + +A Linux VM with the following: + +* systemd or OpenRC +* a container runtime, such as Docker or CRIO + +This VM must also meet the [kubeadm requirements](https://kubernetes.io/docs/setup/production-environment/tools/kubeadm/install-kubeadm/), such as: + +* 2 CPU's +* 2GB RAM +* iptables (in legacy mode) +* conntrack +* crictl +* SELinux permissive +* cgroups v1 (v2 is not yet supported by Kubernetes) + +## Usage + +The generic driver requires the IP address of the VM to use. + +```shell +minikube start --driver=generic --generic-ip-address=vm.example.com +``` + From 40ec0e8015a66fb9341df8066071471cf0975dbe Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Anders=20F=20Bj=C3=B6rklund?= Date: Fri, 8 Jan 2021 18:30:19 +0100 Subject: [PATCH 38/91] Avoid the hard-coded dependency on systemctl --- pkg/drivers/generic/generic.go | 16 ++++------------ 1 file changed, 4 insertions(+), 12 deletions(-) diff --git a/pkg/drivers/generic/generic.go b/pkg/drivers/generic/generic.go index dd8f8ca3d8..caf7062d9c 100644 --- a/pkg/drivers/generic/generic.go +++ b/pkg/drivers/generic/generic.go @@ -20,7 +20,6 @@ import ( "fmt" "net" "os" - "os/exec" "path" "strconv" "time" @@ -182,7 +181,10 @@ func (d *Driver) Stop() error { // Restart a host func (d *Driver) Restart() error { - return restartKubelet(d.exec) + if err := sysinit.New(d.exec).Restart("kubelet"); err != nil { + return err + } + return nil } // Kill stops a host forcefully, including any containers that we are managing. @@ -232,13 +234,3 @@ func copySSHKey(src, dst string) error { return nil } - -// restartKubelet restarts the kubelet -func restartKubelet(cr command.Runner) error { - klog.Infof("restarting kubelet.service ...") - c := exec.Command("sudo", "systemctl", "restart", "kubelet.service") - if _, err := cr.RunCmd(c); err != nil { - return err - } - return nil -} From 66a671fc863030116b947363a2b233c8542b2971 Mon Sep 17 00:00:00 2001 From: Thomas Stromberg Date: Fri, 8 Jan 2021 15:38:31 -0800 Subject: [PATCH 39/91] Experimental macOS/arm64 work --- cmd/minikube/cmd/start.go | 4 +- deploy/kicbase/entrypoint | 4 +- go.mod | 12 +- go.sum | 228 ++------------------ pkg/minikube/machine/info.go | 6 +- pkg/minikube/registry/drvs/docker/docker.go | 8 +- test/integration/helpers_test.go | 2 +- 7 files changed, 37 insertions(+), 227 deletions(-) diff --git a/cmd/minikube/cmd/start.go b/cmd/minikube/cmd/start.go index 8b1c1949ed..0f79ff65d4 100644 --- a/cmd/minikube/cmd/start.go +++ b/cmd/minikube/cmd/start.go @@ -34,8 +34,8 @@ import ( "github.com/google/go-containerregistry/pkg/name" "github.com/google/go-containerregistry/pkg/v1/remote" "github.com/pkg/errors" - "github.com/shirou/gopsutil/cpu" - gopshost "github.com/shirou/gopsutil/host" + "github.com/shirou/gopsutil/v3/cpu" + gopshost "github.com/shirou/gopsutil/v3/host" "github.com/spf13/cobra" "github.com/spf13/viper" diff --git a/deploy/kicbase/entrypoint b/deploy/kicbase/entrypoint index bf6c54df84..0b6c60a667 100755 --- a/deploy/kicbase/entrypoint +++ b/deploy/kicbase/entrypoint @@ -14,7 +14,7 @@ # See the License for the specific language governing permissions and # limitations under the License. -set -o errexit +# set -o errexit set -o nounset set -o pipefail set -x @@ -280,5 +280,7 @@ fix_product_uuid select_iptables enable_network_magic +echo "WE HAVE SUCEEDED" + # we want the command (expected to be systemd) to be PID1, so exec to it exec "$@" diff --git a/go.mod b/go.mod index 0ecc3be78e..9dd4d62338 100644 --- a/go.mod +++ b/go.mod @@ -8,8 +8,8 @@ require ( github.com/Azure/azure-sdk-for-go v42.3.0+incompatible github.com/GoogleCloudPlatform/opentelemetry-operations-go/exporter/trace v0.13.0 github.com/Microsoft/go-winio v0.4.15-0.20190919025122-fc70bd9a86b5 // indirect + github.com/Nvveen/Gotty v0.0.0-20120604004816-cd527374f1e5 // indirect github.com/Parallels/docker-machine-parallels/v2 v2.0.1 - github.com/StackExchange/wmi v0.0.0-20190523213315-cbe66965904d // indirect github.com/VividCortex/godaemon v0.0.0-20201030160542-15e3f4925a21 github.com/blang/semver v3.5.0+incompatible github.com/briandowns/spinner v1.11.1 @@ -20,7 +20,7 @@ require ( github.com/cloudevents/sdk-go/v2 v2.1.0 github.com/cloudfoundry-attic/jibber_jabber v0.0.0-20151120183258-bcc4c8345a21 github.com/cloudfoundry/jibber_jabber v0.0.0-20151120183258-bcc4c8345a21 // indirect - github.com/containerd/containerd v1.3.1-0.20191213020239-082f7e3aed57 // indirect + github.com/containerd/continuity v0.0.0-20201208142359-180525291bb7 // indirect github.com/docker/cli v0.0.0-20200303162255-7d407207c304 // indirect github.com/docker/docker v17.12.0-ce-rc1.0.20181225093023-5ddb1d410a8b+incompatible github.com/docker/go-units v0.4.0 @@ -29,7 +29,6 @@ require ( github.com/elazarl/goproxy/ext v0.0.0-20190421051319-9d40249d3c2f // indirect github.com/evanphx/json-patch v4.5.0+incompatible // indirect github.com/go-logr/logr v0.3.0 // indirect - github.com/go-ole/go-ole v1.2.4 // indirect github.com/golang-collections/collections v0.0.0-20130729185459-604e922904d3 github.com/google/go-cmp v0.5.2 github.com/google/go-containerregistry v0.0.0-20200601195303-96cf69f03a3c @@ -59,7 +58,7 @@ require ( github.com/mitchellh/go-ps v0.0.0-20190716172923-621e5597135b github.com/moby/hyperkit v0.0.0-20171020124204-a12cd7250bcd github.com/olekukonko/tablewriter v0.0.4 - github.com/opencontainers/go-digest v1.0.0-rc1 + github.com/opencontainers/go-digest v1.0.0 github.com/otiai10/copy v1.0.2 github.com/pborman/uuid v1.2.0 github.com/phayes/freeport v0.0.0-20180830031419-95f893ade6f2 @@ -69,7 +68,7 @@ require ( github.com/pmezard/go-difflib v1.0.0 github.com/russross/blackfriday v1.5.3-0.20200218234912-41c5fccfd6f6 // indirect github.com/samalba/dockerclient v0.0.0-20160414174713-91d7393ff859 // indirect - github.com/shirou/gopsutil v2.18.12+incompatible + github.com/shirou/gopsutil/v3 v3.20.12 github.com/spf13/cobra v1.0.0 github.com/spf13/pflag v1.0.5 github.com/spf13/viper v1.7.0 @@ -86,7 +85,7 @@ require ( golang.org/x/mod v0.3.0 golang.org/x/oauth2 v0.0.0-20200107190931-bf48bf16ab8d golang.org/x/sync v0.0.0-20200625203802-6e8e738ad208 - golang.org/x/sys v0.0.0-20200523222454-059865788121 + golang.org/x/sys v0.0.0-20201201145000-ef89a241ccb3 golang.org/x/text v0.3.3 google.golang.org/api v0.29.0 gopkg.in/mgo.v2 v2.0.0-20190816093944-a6b53ec6cb22 // indirect @@ -106,7 +105,6 @@ require ( replace ( git.apache.org/thrift.git => github.com/apache/thrift v0.0.0-20180902110319-2566ecd5d999 github.com/briandowns/spinner => github.com/alonyb/spinner v1.12.1 - github.com/docker/docker => github.com/docker/docker v1.4.2-0.20190924003213-a8608b5b67c7 github.com/docker/machine => github.com/machine-drivers/machine v0.7.1-0.20200810185219-7d42fed1b770 github.com/google/go-containerregistry => github.com/afbjorklund/go-containerregistry v0.0.0-20200902152226-fbad78ec2813 github.com/hashicorp/go-getter => github.com/afbjorklund/go-getter v1.4.1-0.20201020145846-c0da14b4bffe diff --git a/go.sum b/go.sum index 1ce4cf5266..9a5b6eee25 100644 --- a/go.sum +++ b/go.sum @@ -1,3 +1,4 @@ +bazil.org/fuse v0.0.0-20160811212531-371fbbdaa898/go.mod h1:Xbm+BRKSBEpa4q4hTSxohYNQpsxXPbPry4JJWOB3LB8= bazil.org/fuse v0.0.0-20180421153158-65cc252bf669/go.mod h1:Xbm+BRKSBEpa4q4hTSxohYNQpsxXPbPry4JJWOB3LB8= bitbucket.org/bertimus9/systemstat v0.0.0-20180207000608-0eeff89b0690/go.mod h1:Ulb78X89vxKYgdL24HMTiXYHlyHEvruOj1ZPlqeNEZM= cloud.google.com/go v0.26.0/go.mod h1:aQUYkXzVsufM+DwF1aE+0xfcU+56JwCaLick0ClmMTw= @@ -7,7 +8,6 @@ cloud.google.com/go v0.39.0/go.mod h1:rVLT6fkc8chs9sfPtFc1SBH6em7n+ZoXaG+87tDISt cloud.google.com/go v0.44.1/go.mod h1:iSa0KzasP4Uvy3f1mN/7PiObzGgflwredwwASm/v6AU= cloud.google.com/go v0.44.2/go.mod h1:60680Gw3Yr4ikxnPRS/oxxkBccT6SA1yMk63TGekxKY= cloud.google.com/go v0.44.3/go.mod h1:60680Gw3Yr4ikxnPRS/oxxkBccT6SA1yMk63TGekxKY= -cloud.google.com/go v0.45.1 h1:lRi0CHyU+ytlvylOlFKKq0af6JncuyoRh1J+QJBqQx0= cloud.google.com/go v0.45.1/go.mod h1:RpBamKRgapWJb87xiFSdk4g1CME7QZg3uwTez+TSTjc= cloud.google.com/go v0.46.3/go.mod h1:a6bKKbmY7er1mI7TEI4lsAkts/mkhTSZK8w33B4RAg0= cloud.google.com/go v0.50.0/go.mod h1:r9sluTvynVuxRIOHXQEHMFffphuXHOMZMycpNR5e6To= @@ -15,7 +15,6 @@ cloud.google.com/go v0.52.0/go.mod h1:pXajvRH/6o3+F9jDHZWQ5PbGhn+o8w9qiu/CffaVdO cloud.google.com/go v0.53.0/go.mod h1:fp/UouUEsRkN6ryDKNW/Upv/JBKnv6WDthjR6+vze6M= cloud.google.com/go v0.54.0/go.mod h1:1rq2OEkV3YMf6n/9ZvGWI3GWw0VoqH/1x2nd8Is/bPc= cloud.google.com/go v0.56.0/go.mod h1:jr7tqZxxKOVYizybht9+26Z/gUq7tiRzu+ACVAMbKVk= -cloud.google.com/go v0.57.0 h1:EpMNVUorLiZIELdMZbCYX/ByTFCdoYopYAGxaGVz9ms= cloud.google.com/go v0.57.0/go.mod h1:oXiQ6Rzq3RAkkY7N6t3TcE6jE+CIBBbA36lwQ1JyzZs= cloud.google.com/go v0.61.0 h1:NLQf5e1OMspfNT1RAHOB3ublr1TW3YTXO8OiWwVjK2U= cloud.google.com/go v0.61.0/go.mod h1:XukKJg4Y7QsUu0Hxg3qQKUWR4VuWivmyMK2+rUyxAqw= @@ -23,22 +22,18 @@ 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/bigquery v1.8.0/go.mod h1:J5hqkt3O0uAFnINi6JXValWIb1v0goeZM77hZzJN/fQ= 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/firestore v1.1.0/go.mod h1:ulACoGHTpvq5r8rxGJ4ddJZBZqakUQqClKRT5SZwBmk= 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= cloud.google.com/go/storage v1.6.0/go.mod h1:N7U0C8pVQ/+NIKOBQyamJIeKQKkZ+mxpohlUTyfDhBk= -cloud.google.com/go/storage v1.8.0 h1:86K1Gel7BQ9/WmNWn7dTKMvTLFzwtBe5FNqYbi9X35g= cloud.google.com/go/storage v1.8.0/go.mod h1:Wv1Oy7z6Yz3DshWRJFhqM/UCfaWIRTdp0RXyy7KQOVs= cloud.google.com/go/storage v1.10.0 h1:STgFzyU5/8miMl0//zKh2aQeTyeaUH3WN9bSUiJ09bA= cloud.google.com/go/storage v1.10.0/go.mod h1:FLPqc6j+Ki4BU591ie1oL6qBQGu2Bl/tZ9ullr3+Kg0= @@ -102,13 +97,13 @@ github.com/MakeNowJust/heredoc v0.0.0-20170808103936-bb23615498cd/go.mod h1:64YH github.com/Masterminds/semver v1.5.0/go.mod h1:MB6lktGJrhw8PrUyiEoblNEGEQ+RzHPF078ddwwvV3Y= github.com/Masterminds/semver/v3 v3.0.3/go.mod h1:VPu/7SZ7ePZ3QOrcuXROw5FAcLl4a0cBrbBpGY/8hQs= github.com/Masterminds/semver/v3 v3.1.0/go.mod h1:VPu/7SZ7ePZ3QOrcuXROw5FAcLl4a0cBrbBpGY/8hQs= -github.com/Microsoft/go-winio v0.4.14 h1:+hMXMk01us9KgxGb7ftKQt2Xpf5hH/yky+TDA+qxleU= github.com/Microsoft/go-winio v0.4.14/go.mod h1:qXqCSQ3Xa7+6tgxaGTIe4Kpcdsi+P8jBhyzoq1bpyYA= github.com/Microsoft/go-winio v0.4.15-0.20190919025122-fc70bd9a86b5 h1:ygIc8M6trr62pF5DucadTWGdEB4mEyvzi0e2nbcmcyA= github.com/Microsoft/go-winio v0.4.15-0.20190919025122-fc70bd9a86b5/go.mod h1:tTuCMEN+UleMWgg9dVx4Hu52b1bJo+59jBh3ajtinzw= -github.com/Microsoft/hcsshim v0.0.0-20190417211021-672e52e9209d h1:u64+IetywsPQ0gJ/4cXBJ/KiXV9xTKRMoaCOzW9PI3g= github.com/Microsoft/hcsshim v0.0.0-20190417211021-672e52e9209d/go.mod h1:Op3hHsoHPAvb6lceZHDtd9OkTew38wNoXnJs8iY7rUg= github.com/NYTimes/gziphandler v0.0.0-20170623195520-56545f4a5d46/go.mod h1:3wb06e3pkSAbeQ52E9H9iFoQsEEwGN64994WTCIhntQ= +github.com/Nvveen/Gotty v0.0.0-20120604004816-cd527374f1e5 h1:TngWCqHvy9oXAN6lEVMRuU21PR1EtLVZJmdB18Gu3Rw= +github.com/Nvveen/Gotty v0.0.0-20120604004816-cd527374f1e5/go.mod h1:lmUJ/7eu/Q8D7ML55dXQrVaamCz2vxCfdQBasLZfHKk= github.com/OneOfOne/xxhash v1.2.2/go.mod h1:HSdplMjZKSmBqAxg5vPj2TmRDmfkzw+cTzAElWljhcU= github.com/OpenPeeDeeP/depguard v1.0.0/go.mod h1:7/4sitnI9YlQgTLLk734QlzXT8DuHVnAyztLplQjk+o= github.com/OpenPeeDeeP/depguard v1.0.1/go.mod h1:xsIw86fROiiwelg+jB2uM9PiKihMMmUx/1V+TNhjQvM= @@ -116,10 +111,8 @@ github.com/Parallels/docker-machine-parallels/v2 v2.0.1 h1:3Rj+4tcm/UqMU5g2bLJmp github.com/Parallels/docker-machine-parallels/v2 v2.0.1/go.mod h1:NKwI5KryEmEHMZVj80t9JQcfXWZp4/ZYNBuw4C5sQ9E= 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/Rican7/retry v0.1.0/go.mod h1:FgOROf8P5bebcC1DS0PdOQiqGUridaZvikzUmkFW6gg= github.com/StackExchange/wmi v0.0.0-20180116203802-5d049714c4a6/go.mod h1:3eOhrUMpNV+6aFIbp5/iudMxNCF27Vw2OZgy4xEx0Fg= @@ -136,10 +129,8 @@ github.com/afbjorklund/go-getter v1.4.1-0.20201020145846-c0da14b4bffe/go.mod h1: github.com/agnivade/levenshtein v1.0.1/go.mod h1:CURSv5d9Uaml+FovSIICkLbAUZ9S4RqaHDIsdSBg7lM= github.com/ajstarks/svgo v0.0.0-20180226025133-644b8db467af/go.mod h1:K08gAheRH3/J6wwsYMMT4xOr94bZjxIelGM0+d/wbFw= github.com/alecthomas/kingpin v2.2.6+incompatible/go.mod h1:59OFYbFVLKQKq+mqrL6Rw5bR0c3ACQaawgXx0QYndlE= -github.com/alecthomas/template v0.0.0-20160405071501-a0175ee3bccc h1:cAKDfWh5VpdgMhJosfJnn5/FoN2SRZ4p7fJNX58YPaU= github.com/alecthomas/template v0.0.0-20160405071501-a0175ee3bccc/go.mod h1:LOuyumcjzFXgccqObfd/Ljyb9UuFJ6TxHnclSeseNhc= github.com/alecthomas/template v0.0.0-20190718012654-fb15b899a751/go.mod h1:LOuyumcjzFXgccqObfd/Ljyb9UuFJ6TxHnclSeseNhc= -github.com/alecthomas/units v0.0.0-20151022065526-2efee857e7cf h1:qet1QNfXsQxTZqLG4oE62mJzwPIB8+Tee4RNCL9ulrY= github.com/alecthomas/units v0.0.0-20151022065526-2efee857e7cf/go.mod h1:ybxpYRFXyAe+OPACYpWeL0wqObRcbAqCMya13uyzqw0= github.com/alecthomas/units v0.0.0-20190717042225-c3de453c63f4/go.mod h1:ybxpYRFXyAe+OPACYpWeL0wqObRcbAqCMya13uyzqw0= github.com/alecthomas/units v0.0.0-20190924025748-f65c72e2690d/go.mod h1:rBZYJk541a8SKzHPHnH3zbiI+7dagKZ0cgpgrD7Fyho= @@ -148,7 +139,6 @@ github.com/alonyb/spinner v1.12.1/go.mod h1:QOuQk7x+EaDASo80FEXwlwiA+j/PPIcX3FSc github.com/andreyvit/diff v0.0.0-20170406064948-c7f18ee00883/go.mod h1:rCTlJbsFo29Kk6CurOXKm700vrz8f0KW0JNfpkRJY/8= github.com/anmitsu/go-shlex v0.0.0-20161002113705-648efa622239/go.mod h1:2FmKhYUyUczH0OGQWaF5ceTx0UBShxjsH6f8oGKYe2c= github.com/apex/log v1.1.4/go.mod h1:AlpoD9aScyQfJDVHmLMEcx4oU6LqzkWp4Mg9GdAcEvQ= -github.com/apex/log v1.3.0 h1:1fyfbPvUwD10nMoh3hY6MXzvZShJQn9/ck7ATgAt5pA= github.com/apex/log v1.3.0/go.mod h1:jd8Vpsr46WAe3EZSQ/IUMs2qQD/GOycT5rPWCO1yGcs= github.com/apex/logs v0.0.4/go.mod h1:XzxuLZ5myVHDy9SAmYpamKKRNApGj54PfYLcFrXqDwo= github.com/aphistic/golf v0.0.0-20180712155816-02c07f170c5a/go.mod h1:3NqKYiepwy8kCu4PNA+aP7WUV72eXWJeP9/r3/K9aLE= @@ -158,19 +148,15 @@ github.com/armon/consul-api v0.0.0-20180202201655-eb2c6b5be1b6/go.mod h1:grANhF5 github.com/armon/go-metrics v0.0.0-20180917152333-f0300d1749da/go.mod h1:Q73ZrmVTwzkszR9V5SSuryQ31EELlFMUz1kKyl939pY= 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/auth0/go-jwt-middleware v0.0.0-20170425171159-5493cabe49f7/go.mod h1:LWMyo4iOLWXHGdBki7NIht1kHru/0wM179h+d3g8ATM= github.com/aws/aws-sdk-go v1.15.27/go.mod h1:mFuSZ37Z9YOHbQEwBWztmVzqXrEkub65tZoCYDt7FT0= -github.com/aws/aws-sdk-go v1.15.78 h1:LaXy6lWR0YK7LKyuU0QWy2ws/LWTPfYV/UgfiBu4tvY= github.com/aws/aws-sdk-go v1.15.78/go.mod h1:E3/ieXAlvM0XWO57iftYVDLLvQ824smPP3ATZkfNZeM= -github.com/aws/aws-sdk-go v1.16.26 h1:GWkl3rkRO/JGRTWoLLIqwf7AWC4/W/1hMOUZqmX0js4= github.com/aws/aws-sdk-go v1.16.26/go.mod h1:KmX6BPdI08NWTb3/sm4ZGu5ShLoqVDhKgpiN924inxo= github.com/aws/aws-sdk-go v1.19.18/go.mod h1:KmX6BPdI08NWTb3/sm4ZGu5ShLoqVDhKgpiN924inxo= github.com/aws/aws-sdk-go v1.19.45/go.mod h1:KmX6BPdI08NWTb3/sm4ZGu5ShLoqVDhKgpiN924inxo= github.com/aws/aws-sdk-go v1.20.6/go.mod h1:KmX6BPdI08NWTb3/sm4ZGu5ShLoqVDhKgpiN924inxo= github.com/aws/aws-sdk-go v1.25.11/go.mod h1:KmX6BPdI08NWTb3/sm4ZGu5ShLoqVDhKgpiN924inxo= -github.com/aws/aws-sdk-go v1.27.1 h1:MXnqY6SlWySaZAqNnXThOvjRFdiiOuKtC6i7baFdNdU= github.com/aws/aws-sdk-go v1.27.1/go.mod h1:KmX6BPdI08NWTb3/sm4ZGu5ShLoqVDhKgpiN924inxo= github.com/aws/aws-sdk-go v1.28.2/go.mod h1:KmX6BPdI08NWTb3/sm4ZGu5ShLoqVDhKgpiN924inxo= github.com/aws/aws-sdk-go v1.31.6 h1:nKjQbpXhdImctBh1e0iLg9iQW/X297LPPuY/9f92R2k= @@ -182,9 +168,7 @@ github.com/bazelbuild/buildtools v0.0.0-20190731111112-f720930ceb60/go.mod h1:5J github.com/bazelbuild/buildtools v0.0.0-20190917191645-69366ca98f89/go.mod h1:5JP0TXzWDHXv8qvxRC4InIazwdyDseBDbzESUMKk1yU= github.com/bazelbuild/rules_go v0.0.0-20190719190356-6dae44dc5cab/go.mod h1:MC23Dc/wkXEyk3Wpq6lCqz0ZAYOZDw2DR5y3N1q2i7M= github.com/benbjohnson/clock v1.0.3/go.mod h1:bGMdMPoPVvcYyt1gHDf4J2KE153Yf9BuiUKYMaxlTDM= -github.com/beorn7/perks v0.0.0-20180321164747-3a771d992973 h1:xJ4a3vCFaGF/jqvzLMYoU8P317H5OQ+Via4RmuPwCS0= github.com/beorn7/perks v0.0.0-20180321164747-3a771d992973/go.mod h1:Dwedo/Wpr24TaqPxmxbtue+5NUziq4I4S80YR8gNf3Q= -github.com/beorn7/perks v1.0.0 h1:HWo1m869IqiPhD389kmkxeTalrjNbbJTC8LXupb+sl0= github.com/beorn7/perks v1.0.0/go.mod h1:KWe93zE9D1o94FZ5RNwFwVgaQK1VOXiVxmqh+CedLV8= github.com/beorn7/perks v1.0.1 h1:VlbKKnNfV8bJzeqoa4cOKqO6bYr3WgKZxO8Z16+hsOM= github.com/beorn7/perks v1.0.1/go.mod h1:G2ZrVWU2WbWT9wwq4/hrbKbnv/1ERSJQ0ibhJ6rlkpw= @@ -196,7 +180,6 @@ github.com/bketelsen/crypt v0.0.3-0.20200106085610-5cbc8cc4026c/go.mod h1:MKsuJm github.com/blakesmith/ar v0.0.0-20190502131153-809d4375e1fb/go.mod h1:PkYb9DJNAwrSvRx5DYA+gUcOIgTGVMNkfSCbZM8cWpI= 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 h1:JQmyP4ZBrce+ZQu0dY660FMfatumYDLun9hBCUVIkF4= github.com/boltdb/bolt v1.3.1/go.mod h1:clJnj/oiGkjum5o1McbSZDSLxVThjynRyGBgiAx27Ps= github.com/bombsimon/wsl/v2 v2.0.0/go.mod h1:mf25kr/SqFEPhhcxW1+7pxzGlW+hIl/hYTKY95VwV8U= github.com/bombsimon/wsl/v2 v2.2.0/go.mod h1:Azh8c3XGEJl9LyX0/sFC+CKMc7Ssgua0g+6abzXN4Pg= @@ -222,7 +205,6 @@ github.com/cespare/xxhash v1.1.0 h1:a6HrQnmkObjyL+Gs60czilIUGqrzKutQD6XZog3p+ko= github.com/cespare/xxhash v1.1.0/go.mod h1:XrSqR1VqqWfGrhpAt58auRo0WTKS1nRRg3ghfAqPWnc= github.com/cespare/xxhash/v2 v2.1.1 h1:6MnRN8NT7+YBpUIWxHtefFZOKTAPgGjpQSxqLNn0+qY= github.com/cespare/xxhash/v2 v2.1.1/go.mod h1:VGX0DQ3Q6kWi7AoAeZDth3/j3BFtOZR5XLFGgcrjCOs= -github.com/chai2010/gettext-go v0.0.0-20160711120539-c6fed771bfd5 h1:7aWHqerlJ41y6FOsEUvknqgXnGmJyJSbjhAWq5pO4F8= github.com/chai2010/gettext-go v0.0.0-20160711120539-c6fed771bfd5/go.mod h1:/iP1qXHoty45bqomnu2LM+VVyAEdWN+vtSHGlQgyxbw= github.com/checkpoint-restore/go-criu v0.0.0-20181120144056-17b0214f6c48/go.mod h1:TrMrLQfeENAPYPRsJuq3jsqdlRh3lvi6trTZJG8+tho= github.com/cheekybits/genny v0.0.0-20170328200008-9127e812e1e9/go.mod h1:+tQajlRqAUrPI7DOSpB0XAqZYtQakVtB7wXkRAgjxjQ= @@ -246,16 +228,12 @@ github.com/cncf/udpa/go v0.0.0-20191209042840-269d4d468f6f/go.mod h1:M8M6+tZqaGX github.com/cockroachdb/datadriven v0.0.0-20190809214429-80d97fb3cbaa/go.mod h1:zn76sxSg3SzpJ0PPJaLDCu+Bu0Lg3sKTORVIj19EIF8= github.com/codegangsta/negroni v1.0.0/go.mod h1:v0y3T5G7Y1UlFfyxFn/QLRU4a2EuNau2iZY63YTKWo0= github.com/container-storage-interface/spec v1.2.0/go.mod h1:6URME8mwIBbpVyZV93Ce5St17xBiQJQY67NDsuohiy4= -github.com/containerd/console v0.0.0-20170925154832-84eeaae905fa h1:GnRy2maqb8vcJhYRN5L+5WyYNKfUG4otiz2zxE182ng= github.com/containerd/console v0.0.0-20170925154832-84eeaae905fa/go.mod h1:Tj/on1eG8kiEhd0+fhSDzsPAFESxzBBvdyEgyryXffw= github.com/containerd/containerd v1.0.2/go.mod h1:bC6axHOhabU15QhwfG7w5PipXdVtMXFTttgp+kVtyUA= -github.com/containerd/containerd v1.3.0 h1:xjvXQWABwS2uiv3TWgQt5Uth60Gu86LTGZXMJkjc7rY= github.com/containerd/containerd v1.3.0/go.mod h1:bC6axHOhabU15QhwfG7w5PipXdVtMXFTttgp+kVtyUA= -github.com/containerd/containerd v1.3.1-0.20191213020239-082f7e3aed57 h1:BCZI5sRbYuiY1a5bGlRGMo/29OIzHLtJvpd0+Eg+VhI= -github.com/containerd/containerd v1.3.1-0.20191213020239-082f7e3aed57/go.mod h1:bC6axHOhabU15QhwfG7w5PipXdVtMXFTttgp+kVtyUA= -github.com/containerd/typeurl v0.0.0-20190228175220-2a93cfde8c20 h1:14r0i3IeJj6zkNLigAJiv/TWSR8EY+pxIjv5tFiT+n8= +github.com/containerd/continuity v0.0.0-20201208142359-180525291bb7 h1:6ejg6Lkk8dskcM7wQ28gONkukbQkM4qpj4RnYbpFzrI= +github.com/containerd/continuity v0.0.0-20201208142359-180525291bb7/go.mod h1:kR3BEg7bDFaEddKm54WSmrol1fKWDU1nKYkgrcgZT7Y= github.com/containerd/typeurl v0.0.0-20190228175220-2a93cfde8c20/go.mod h1:Cm3kwCdlkCfMSHURc+r6fwoGH6/F1hH3S4sg0rLFWPc= -github.com/containernetworking/cni v0.7.1 h1:fE3r16wpSEyaqY4Z4oFrLMmIGfBYIKpPrHK31EJ9FzE= github.com/containernetworking/cni v0.7.1/go.mod h1:LGwApLUm2FpoOfxTDEeq8T9ipbpZ61X79hmU3w8FmsY= github.com/coredns/corefile-migration v1.0.6/go.mod h1:OFwBp/Wc9dJt5cAZzHWMNhK1r5L0p0jDwIBc6j8NC8E= github.com/coreos/bbolt v1.3.2/go.mod h1:iRUV2dpdMOn7Bo10OQBFzIJO9kkE559Wcmn+qkEiiKk= @@ -264,11 +242,9 @@ github.com/coreos/etcd v3.3.13+incompatible/go.mod h1:uF7uidLiAD3TWHmW31ZFd/JWoc 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 h1:wkHLiw0WNATZnSG7epLsujiMCgPAc9xhjJ4tgnAxmfM= 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-20181012123002-c6f51f82210d/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= @@ -280,41 +256,37 @@ github.com/cpuguy83/go-md2man/v2 v2.0.0 h1:EoUDS0afbrsXAZ9YQ9jdu/mZ2sXgT1/2yyNng github.com/cpuguy83/go-md2man/v2 v2.0.0/go.mod h1:maD7wRr/U5Z6m/iR4s+kqSMx2CaBsrgA7czyZG/E6dU= github.com/creack/pty v1.1.7/go.mod h1:lj5s0c3V2DBrqTV7llrYr5NG6My20zk30Fl46Y7DoTY= github.com/creack/pty v1.1.9/go.mod h1:oKZEueFk5CKHvIhNR5MUki03XCEU+Q6VDXinZuGJ33E= -github.com/cyphar/filepath-securejoin v0.2.2 h1:jCwT2GTP+PY5nBz3c/YL5PAIbusElVrPujOBSCj8xRg= github.com/cyphar/filepath-securejoin v0.2.2/go.mod h1:FpkQEhXnPnOthhzymB7CGsFk2G9VLXONKD9G7QGMM+4= github.com/davecgh/go-spew v0.0.0-20151105211317-5215b55f46b2/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38= github.com/davecgh/go-spew v1.1.0/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38= github.com/davecgh/go-spew v1.1.1 h1:vj9j/u1bqnvCEfJOwUhtlOARqs3+rkHYY13jYWTU97c= github.com/davecgh/go-spew v1.1.1/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38= -github.com/daviddengcn/go-colortext v0.0.0-20160507010035-511bcaf42ccd h1:uVsMphB1eRx7xB1njzL3fuMdWRN8HtVzoUOItHMwv5c= github.com/daviddengcn/go-colortext v0.0.0-20160507010035-511bcaf42ccd/go.mod h1:dv4zxwHi5C/8AeI+4gX4dCWOIvNi7I6JCSX0HvlKPgE= github.com/devigned/tab v0.1.1/go.mod h1:XG9mPq0dFghrYvoBF3xdRrJzSTX1b7IQrvaL9mzjeJY= github.com/dgrijalva/jwt-go v3.2.0+incompatible/go.mod h1:E3ru+11k8xSBh+hMPgOLZmtrrCbhqsmaPHjLKYnJCaQ= github.com/dgryski/go-sip13 v0.0.0-20181026042036-e10d5fee7954/go.mod h1:vAd38F8PWV+bWy6jNmig1y/TA+kYO4g3RSRF0IAv0no= github.com/dimchansky/utfbom v1.1.0/go.mod h1:rO41eb7gLfo8SF1jd9F8HplJm1Fewwi4mQvIirEdv+8= github.com/dnaeon/go-vcr v1.0.1/go.mod h1:aBB1+wY4s93YsC3HHjMBMrwTj2R9FHDzUr9KyGc8n1E= -github.com/docker/cli v0.0.0-20191017083524-a8ff7f821017 h1:2HQmlpI3yI9deH18Q6xiSOIjXD4sLI55Y/gfpa8/558= github.com/docker/cli v0.0.0-20191017083524-a8ff7f821017/go.mod h1:JLrzqnKDaYBop7H2jaqPtU4hHvMKP+vjCwu2uszcLI8= github.com/docker/cli v0.0.0-20200303162255-7d407207c304 h1:A7SYzidcyuQ/yS4wezWGYeUioUFJQk8HYWY9aMYTF4I= github.com/docker/cli v0.0.0-20200303162255-7d407207c304/go.mod h1:JLrzqnKDaYBop7H2jaqPtU4hHvMKP+vjCwu2uszcLI8= github.com/docker/distribution v2.7.1+incompatible h1:a5mlkVzth6W5A4fOsS3D2EO5BUmsJpcB+cRlLU7cSug= github.com/docker/distribution v2.7.1+incompatible/go.mod h1:J2gT2udsDAN96Uj4KfcMRqY0/ypR+oyYUYmja8H+y+w= -github.com/docker/docker v1.4.2-0.20190924003213-a8608b5b67c7 h1:Cvj7S8I4Xpx78KAl6TwTmMHuHlZ/0SM60NUneGJQ7IE= +github.com/docker/docker v0.7.3-0.20190327010347-be7ac8be2ae0/go.mod h1:eEKB0N0r5NX/I1kEveEz05bcu8tLC/8azJZsviup8Sk= github.com/docker/docker v1.4.2-0.20190924003213-a8608b5b67c7/go.mod h1:eEKB0N0r5NX/I1kEveEz05bcu8tLC/8azJZsviup8Sk= +github.com/docker/docker v17.12.0-ce-rc1.0.20181225093023-5ddb1d410a8b+incompatible h1:a8u6wIme+XjtxYrK3gxPP+xiCA5JQnTI89mMAO3QVes= +github.com/docker/docker v17.12.0-ce-rc1.0.20181225093023-5ddb1d410a8b+incompatible/go.mod h1:eEKB0N0r5NX/I1kEveEz05bcu8tLC/8azJZsviup8Sk= github.com/docker/docker-credential-helpers v0.6.3 h1:zI2p9+1NQYdnG6sMU26EX4aVGlqbInSQxQXLvzJ4RPQ= github.com/docker/docker-credential-helpers v0.6.3/go.mod h1:WRaJzqw3CTB9bk10avuGsjVBZsD05qeibJ1/TYlvc0Y= -github.com/docker/go-connections v0.3.0 h1:3lOnM9cSzgGwx8VfK/NGOW5fLQ0GjIlCkaktF+n1M6o= github.com/docker/go-connections v0.3.0/go.mod h1:Gbd7IOopHjR8Iph03tsViu4nIes5XhDvyHbTtUxmeec= github.com/docker/go-connections v0.4.0 h1:El9xVISelRB7BuFusrZozjnkIM5YnzCViNKohAFqRJQ= github.com/docker/go-connections v0.4.0/go.mod h1:Gbd7IOopHjR8Iph03tsViu4nIes5XhDvyHbTtUxmeec= -github.com/docker/go-units v0.3.3 h1:Xk8S3Xj5sLGlG5g67hJmYMmUgXv5N4PhkjJHHqrwnTk= github.com/docker/go-units v0.3.3/go.mod h1:fgPhTUdO+D/Jk86RDLlptpiXQzgHJF7gydDDbaIK4Dk= github.com/docker/go-units v0.4.0 h1:3uh0PgVws3nIA0Q+MwDC8yjEPf9zjRfZZWXZYDct3Tw= github.com/docker/go-units v0.4.0/go.mod h1:fgPhTUdO+D/Jk86RDLlptpiXQzgHJF7gydDDbaIK4Dk= github.com/docker/spdystream v0.0.0-20160310174837-449fdfce4d96 h1:cenwrSVm+Z7QLSV/BsnenAOcDXdX4cMv4wP0B/5QbPg= github.com/docker/spdystream v0.0.0-20160310174837-449fdfce4d96/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/elazarl/goproxy v0.0.0-20170405201442-c4fc26588b6e/go.mod h1:/Zj4wYkgs4iZTTu3o/KG3Itv/qCCa8VVMlb3i9OVuzc= github.com/elazarl/goproxy v0.0.0-20180725130230-947c36da3153/go.mod h1:/Zj4wYkgs4iZTTu3o/KG3Itv/qCCa8VVMlb3i9OVuzc= @@ -323,23 +295,18 @@ github.com/elazarl/goproxy v0.0.0-20190421051319-9d40249d3c2f/go.mod h1:/Zj4wYkg github.com/elazarl/goproxy/ext v0.0.0-20190421051319-9d40249d3c2f h1:AUj1VoZUfhPhOPHULCQQDnGhRelpFWHMLhQVWDsS0v4= github.com/elazarl/goproxy/ext v0.0.0-20190421051319-9d40249d3c2f/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/euank/go-kmsg-parser v2.0.0+incompatible/go.mod h1:MhmAMZ8V4CYH4ybgdRwPr2TU5ThnS43puaKEMpja1uw= -github.com/evanphx/json-patch v4.2.0+incompatible h1:fUDGZCv/7iAN7u0puUVhvKCcsR6vRfwrJatElLBEf0I= 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/exponent-io/jsonpath v0.0.0-20151013193312-d6023ce2651d h1:105gxyaGwCFad8crR9dcMQWvV9Hvulu6hwUh4tWPJnM= github.com/exponent-io/jsonpath v0.0.0-20151013193312-d6023ce2651d/go.mod h1:ZZMPRZwes7CROmyNKgQzC3XPs6L/G2EJLHddWejkmf4= -github.com/fatih/camelcase v1.0.0 h1:hxNvNX/xYBp0ovncs8WyWZrOrpBNub/JfaMvbURyft8= github.com/fatih/camelcase v1.0.0/go.mod h1:yN2Sb0lFhZJUdVvtELVWefmrXpuZESvPmqwoZc+/fpc= github.com/fatih/color v1.6.0/go.mod h1:Zm6kSWBoL9eyXnKyktHP6abPY2pDugNf5KwzbycvMj4= -github.com/fatih/color v1.7.0 h1:DkWD4oS2D8LGGgTQ6IvwJJXSL5Vp2ffcQg58nFV38Ys= github.com/fatih/color v1.7.0/go.mod h1:Zm6kSWBoL9eyXnKyktHP6abPY2pDugNf5KwzbycvMj4= github.com/fatih/color v1.9.0 h1:8xPHl4/q1VyqGIPif1F+1V3Y3lSmrq01EabUW3CoW5s= github.com/fatih/color v1.9.0/go.mod h1:eQcE1qtQxscV5RaZvpXrrb8Drkc3/DdQ+uUYCNjL+zU= @@ -347,12 +314,10 @@ github.com/flynn/go-shlex v0.0.0-20150515145356-3f9db97f8568/go.mod h1:xEzjJPgXI github.com/fogleman/gg v1.2.1-0.20190220221249-0403632d5b90/go.mod h1:R/bRT+9gY/C5z7JzPU0zXsXHKM4/ayA+zqcVNZzPa1k= github.com/fortytw2/leaktest v1.2.0/go.mod h1:jDsjWgpAGjm2CA7WthBh/CdZYEPF31XHquHwclZch5g= github.com/fortytw2/leaktest v1.3.0/go.mod h1:jDsjWgpAGjm2CA7WthBh/CdZYEPF31XHquHwclZch5g= -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/fsnotify/fsnotify v1.4.9 h1:hsms1Qyu0jgnwNXIxa+/V/PDsU6CfLf6CNO8H7IWoS4= github.com/fsnotify/fsnotify v1.4.9/go.mod h1:znqG4EE+3YCdAaPaxE2ZRY/06pZUdp0tY4IgpuI1SZQ= 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/gliderlabs/ssh v0.1.1/go.mod h1:U7qILu1NlMHj9FlMhZLlkCdDnU1DBEAqr0aevW3Awn0= github.com/globalsign/mgo v0.0.0-20180905125535-1ca0a4f7cbcb/go.mod h1:xkRDCp4j0OGD1HRkm4kmhM+pmpv3AKq5SU7GMg4oO/Q= @@ -372,7 +337,6 @@ github.com/go-lintpack/lintpack v0.5.2/go.mod h1:NwZuYi2nUHho8XEIZ6SIxihrnPoqBTD 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-logr/logr v0.2.0 h1:QvGt2nLcHH0WK9orKa+ppBPAxREcH364nPUedEpK0TY= github.com/go-logr/logr v0.2.0/go.mod h1:z6/tIYblkpsD+a4lm/fGIIU9mZ+XfAiaFtq7xTgseGU= github.com/go-logr/logr v0.3.0 h1:q4c+kbcR0d5rSurhBR8dIgieOaYpXtsdTYfx22Cu6rs= github.com/go-logr/logr v0.3.0/go.mod h1:z6/tIYblkpsD+a4lm/fGIIU9mZ+XfAiaFtq7xTgseGU= @@ -391,13 +355,11 @@ github.com/go-openapi/jsonpointer v0.0.0-20160704185906-46af16f9f7b1/go.mod h1:+ 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= @@ -411,7 +373,6 @@ github.com/go-openapi/spec v0.0.0-20160808142527-6aced65f8501/go.mod h1:J8+jY1nA 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= @@ -421,12 +382,10 @@ github.com/go-openapi/swag v0.0.0-20160704191624-1d0bd113de87/go.mod h1:DXUve3Dp 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/go.mod h1:8DJv2CVJQ6kGNpFW6eV9N3JviE1C85nY1c2z52x1Gk4= -github.com/go-ozzo/ozzo-validation v3.5.0+incompatible h1:sUy/in/P6askYr16XJgTKq/0SZhiWsdg4WZGaLsGQkM= github.com/go-ozzo/ozzo-validation v3.5.0+incompatible/go.mod h1:gsEKFIVnabGBt6mXmxK0MoFy+cZoTJY6mu5Ll3LVLBU= github.com/go-sql-driver/mysql v1.4.0/go.mod h1:zAC/RDZ24gD3HViQzih4MyKcchzm+sOG5ZlKdlhCg5w= github.com/go-sql-driver/mysql v1.4.1/go.mod h1:zAC/RDZ24gD3HViQzih4MyKcchzm+sOG5ZlKdlhCg5w= @@ -447,26 +406,19 @@ github.com/go-toolsmith/strparse v1.0.0/go.mod h1:YI2nUKP9YGZnL/L1/DLFBfixrcjslW github.com/go-toolsmith/typep v1.0.0/go.mod h1:JSQCQMUPdRlMZFswiq3TGpNp1GMktqkR2Ns5AIQkATU= github.com/go-toolsmith/typep v1.0.2/go.mod h1:JSQCQMUPdRlMZFswiq3TGpNp1GMktqkR2Ns5AIQkATU= github.com/go-xmlfmt/xmlfmt v0.0.0-20191208150333-d5b6f63a941b/go.mod h1:aUCEOzzezBEjDBbFBoSiya/gduyIiWYRP6CnSFIV8AM= -github.com/gobwas/glob v0.2.3 h1:A4xDbljILXROh+kObIiy5kIaPYD8e96x1tgBhUI5J+Y= github.com/gobwas/glob v0.2.3/go.mod h1:d3Ez4x06l9bZtSvzIay5+Yzi0fmZzPgnTbPcKjJAkT8= -github.com/godbus/dbus v0.0.0-20181101234600-2ff6f7ffd60f h1:zlOR3rOlPAVvtfuxGKoghCmop5B0TRyu/ZieziZuGiM= github.com/godbus/dbus v0.0.0-20181101234600-2ff6f7ffd60f/go.mod h1:/YcGZj5zSblfDWMMoOzV4fas9FZnQYTkDnsGvmh2Grw= github.com/gofrs/flock v0.0.0-20190320160742-5135e617513b/go.mod h1:F1TvTiK9OcQqauNUHlbJvyl9Qa1QvF/gOUDKA14jxHU= -github.com/gogo/protobuf v1.1.1 h1:72R+M5VuhED/KujmZVcIquuo8mBgX4oVda//DQb3PXo= github.com/gogo/protobuf v1.1.1/go.mod h1:r8qH/GZQm5c6nD/R0oafs1akxWv10x8SbQlK7atdtwQ= github.com/gogo/protobuf v1.2.1/go.mod h1:hp+jE20tsWTFYpLwKvXlhS1hjn+gTNwPg2I6zVXpSg4= -github.com/gogo/protobuf v1.2.2-0.20190723190241-65acae22fc9d h1:3PaI8p3seN09VjbTYC/QWlUZdZ1qS1zGjy7LH2Wt07I= github.com/gogo/protobuf v1.2.2-0.20190723190241-65acae22fc9d/go.mod h1:SlYgWuQ5SjCEi6WLHjHCa1yvBfUnHcTbrrZtXPKa29o= github.com/gogo/protobuf v1.3.1 h1:DqDEcV5aeaTmdFBePNpYsp3FlcVH/2ISVVM9Qf8PSls= github.com/gogo/protobuf v1.3.1/go.mod h1:SlYgWuQ5SjCEi6WLHjHCa1yvBfUnHcTbrrZtXPKa29o= github.com/golang-collections/collections v0.0.0-20130729185459-604e922904d3 h1:zN2lZNZRflqFyxVaTIU61KNKQ9C0055u9CAfpmqUvo4= github.com/golang-collections/collections v0.0.0-20130729185459-604e922904d3/go.mod h1:nPpo7qLxd6XL3hWJG/O60sR8ZKfMCiIoNap5GvD12KU= github.com/golang/freetype v0.0.0-20170609003504-e2365dfdc4a0/go.mod h1:E/TSTwGwJL78qG/PmXZO1EjYhfJinVAhrmmHX6Z8B9k= -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 h1:LbsanbbD6LieFkXbj9YNNBupiGHJgFeLpO0j0Fza1h8= github.com/golang/groupcache v0.0.0-20160516000752-02826c3e7903/go.mod h1:cIg4eruTrX1D+g88fzRXU5OdNfaM+9IcxsU14FzY7Hc= -github.com/golang/groupcache v0.0.0-20190129154638-5b532d6fd5ef h1:veQD95Isof8w9/WXiA+pa3tz3fJXkt5B7QaRBrM62gk= github.com/golang/groupcache v0.0.0-20190129154638-5b532d6fd5ef/go.mod h1:cIg4eruTrX1D+g88fzRXU5OdNfaM+9IcxsU14FzY7Hc= 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= @@ -474,19 +426,15 @@ github.com/golang/groupcache v0.0.0-20200121045136-8c9f03a8e57e h1:1r7pUrabqp18h github.com/golang/groupcache v0.0.0-20200121045136-8c9f03a8e57e/go.mod h1:cIg4eruTrX1D+g88fzRXU5OdNfaM+9IcxsU14FzY7Hc= github.com/golang/mock v1.0.0/go.mod h1:oTYuIxOrZwtPieC+H1uAHpcLFnEyAGVDL/k47Jfbm0A= github.com/golang/mock v1.1.1/go.mod h1:oTYuIxOrZwtPieC+H1uAHpcLFnEyAGVDL/k47Jfbm0A= -github.com/golang/mock v1.2.0 h1:28o5sBqPkBsMGnC6b4MvE2TzSr5/AT4c/1fLqVGIwlk= github.com/golang/mock v1.2.0/go.mod h1:oTYuIxOrZwtPieC+H1uAHpcLFnEyAGVDL/k47Jfbm0A= -github.com/golang/mock v1.3.1 h1:qGJ6qTW+x6xX/my+8YUVl4WNpX9B7+/l2tRsHGZ7f2s= github.com/golang/mock v1.3.1/go.mod h1:sBzyDLLjw3U8JLTeZvSv8jJB+tU5PVekmnlKIyFUx0Y= 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 h1:GV+pQPG/EUUbkh47niozDcADz6go/dUwhVzdUQHIVRw= 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.2.0 h1:P3YflyNX/ehuJFLhxviNdFxQPkGK5cDcApsge1SqnvM= github.com/golang/protobuf v1.2.0/go.mod h1:6lQm79b+lXiMfvg/cZm0SGofjICqVBUtrP5yJMmIC1U= github.com/golang/protobuf v1.3.1/go.mod h1:6lQm79b+lXiMfvg/cZm0SGofjICqVBUtrP5yJMmIC1U= -github.com/golang/protobuf v1.3.2 h1:6nsPYzhq5kReh6QImI3k5qWzO4PEbvbIW2cwSfR/6xs= github.com/golang/protobuf v1.3.2/go.mod h1:6lQm79b+lXiMfvg/cZm0SGofjICqVBUtrP5yJMmIC1U= github.com/golang/protobuf v1.3.3/go.mod h1:vzj43D7+SQXF/4pzW/hwtAqwc6iTitCiVSaWz5lYuqw= github.com/golang/protobuf v1.3.4/go.mod h1:vzj43D7+SQXF/4pzW/hwtAqwc6iTitCiVSaWz5lYuqw= @@ -527,16 +475,12 @@ github.com/golangplus/bytes v0.0.0-20160111154220-45c989fe5450/go.mod h1:Bk6SMAO github.com/golangplus/fmt v0.0.0-20150411045040-2a5d6d7d2995/go.mod h1:lJgMEyOkYFkPcDKwRXegd+iM6E7matEszMG5HhwytU8= github.com/golangplus/testing v0.0.0-20180327235837-af21d9c3145e/go.mod h1:0AA//k/eakGydO4jKRoRL2j92ZKSzTgj9tclaCrvXHk= github.com/google/btree v0.0.0-20180813153112-4030bb1f1f0c/go.mod h1:lNA+9X1NB3Zf8V7Ke586lFgjr2dZNuvo3lPJSGZ5JPQ= -github.com/google/btree v1.0.0 h1:0udJVsspx3VBr5FwtLhQQtuAsVc79tTq0ocGIPAU6qo= github.com/google/btree v1.0.0/go.mod h1:lNA+9X1NB3Zf8V7Ke586lFgjr2dZNuvo3lPJSGZ5JPQ= github.com/google/cadvisor v0.35.0/go.mod h1:1nql6U13uTHaLYB8rLS5x9IJc2qT6Xd/Tr1sTX6NE48= github.com/google/go-cmp v0.2.0/go.mod h1:oXzfMopK8JAjlY9xF4vHSVASa0yLyX7SntLO5aqRK0M= -github.com/google/go-cmp v0.3.0 h1:crn/baboCvb5fXaQ0IJ1SGTsTVrWpDsCWC8EGETZijY= github.com/google/go-cmp v0.3.0/go.mod h1:8QqcDgzrUqlUb/G2PQTWiueGozuR1884gddMywk6iLU= 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-cmp v0.4.1 h1:/exdXoGamhu5ONeUJH0deniYLWYvQwW66yvlfiiKTu0= github.com/google/go-cmp v0.4.1/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE= github.com/google/go-cmp v0.5.0/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE= github.com/google/go-cmp v0.5.2 h1:X2ev0eStA3AbceY54o37/0PQ/UWqKEiiO2dKL5OPaFM= @@ -551,18 +495,15 @@ github.com/google/go-querystring v1.0.0/go.mod h1:odCYkC5MyYFN7vkCjXpyrEuKhc/BUO github.com/google/go-replayers/grpcreplay v0.1.0/go.mod h1:8Ig2Idjpr6gifRd6pNVggX6TC1Zw6Jx74AKp7QNH2QE= github.com/google/go-replayers/httpreplay v0.1.0/go.mod h1:YKZViNhiGgqdBlUbI2MwGpq4pXxNmhJLPHQ7cv2b5no= github.com/google/gofuzz v0.0.0-20161122191042-44d81051d367/go.mod h1:HP5RmnzzSNb993RKQDq4+1A4ia9nllfqcQFTQJedwGI= -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 h1:/CP5g8u/VJHijgedC/Legn3BAbAaWPgecwXBIDzw5no= 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/martian/v3 v3.0.0 h1:pMen7vLs8nvgEYhywH3KDWJIJTeEr2ULsVWHWYHQyBs= github.com/google/martian/v3 v3.0.0/go.mod h1:y5Zk1BBys9G+gd6Jrk0W3cC1+ELVxBWuIGO+w/tUAp0= github.com/google/pprof v0.0.0-20181206194817-3ea8567a2e57/go.mod h1:zfwlbNMJ+OItoe0UupaVj+oy1omPYYDuagoSzA8v9mc= -github.com/google/pprof v0.0.0-20190515194954-54271f7e092f h1:Jnx61latede7zDD3DiiP4gmNz33uK0U5HDUaF0a/HVQ= github.com/google/pprof v0.0.0-20190515194954-54271f7e092f/go.mod h1:zfwlbNMJ+OItoe0UupaVj+oy1omPYYDuagoSzA8v9mc= github.com/google/pprof v0.0.0-20191218002539-d4f498aebedc/go.mod h1:ZgVRPoUq/hfqzAqh7sHMqb3I9Rq5C59dIz2SbBwJ4eM= github.com/google/pprof v0.0.0-20200212024743-f11f1df84d12/go.mod h1:ZgVRPoUq/hfqzAqh7sHMqb3I9Rq5C59dIz2SbBwJ4eM= @@ -584,7 +525,6 @@ 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 h1:7XGaL1e6bYS1yIonGp9761ExpPPV1ui0SAC59Yube9k= 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.2.2/go.mod h1:sJBsCZ4ayReDTBIg8b9dl28c5xFWyhBTVRp3pOg5EKY= @@ -608,21 +548,17 @@ github.com/gorilla/websocket v1.4.0/go.mod h1:E7qHFY5m1UJ88s3WnNqhKjPHQ0heANvMoA github.com/gorilla/websocket v1.4.2/go.mod h1:YR8l580nyteQvAITg2hZ9XVh4b55+EU/adAjf1fMHhE= github.com/gostaticanalysis/analysisutil v0.0.0-20190318220348-4088753ea4d3/go.mod h1:eEOZF4jCKGi+aprrirO9e7WKB3beBRtWgqGunKl6pKE= github.com/gostaticanalysis/analysisutil v0.0.3/go.mod h1:eEOZF4jCKGi+aprrirO9e7WKB3beBRtWgqGunKl6pKE= -github.com/gregjones/httpcache v0.0.0-20180305231024-9cad4c3443a7 h1:pdN6V1QBWetyv/0+wjACpqVH+eVULgEjkurDLq3goeM= github.com/gregjones/httpcache v0.0.0-20180305231024-9cad4c3443a7/go.mod h1:FecbI9+v66THATjSRHfNgh1IVFe/9kFxbXtjV0ctIMA= github.com/grpc-ecosystem/go-grpc-middleware v1.0.0/go.mod h1:FiyG127CGDf3tlThmgyCl78X/SZQqEOJBCDaAfeWzPs= 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/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 h1:UImYN5qQ8tuGpGE16ZmjvcTtTw24zw1QAp/SlnNrZhI= github.com/grpc-ecosystem/grpc-gateway v1.9.5/go.mod h1:vNeuVxBJEsws4ogUvrchl83t/GYV9WGTSLVdBhOQFDY= github.com/hashicorp/consul/api v1.1.0/go.mod h1:VmuI/Lkw1nC05EYQWNKwWGbkg+FbDBtguAZLlVdkD9Q= github.com/hashicorp/consul/sdk v0.1.1/go.mod h1:VKf9jXwCTEY1QZP2MOLRhb5i/I/ssyNV1vwHyQBF0x8= github.com/hashicorp/errwrap v1.0.0/go.mod h1:YH+1FKiLXxHSkmPseP+kNlulaMuP3n2brvKWEqk/Jc4= -github.com/hashicorp/go-cleanhttp v0.5.0 h1:wvCrVc9TjDls6+YGAF2hAifE1E5U1+b4tH6KdvN3Gig= github.com/hashicorp/go-cleanhttp v0.5.0/go.mod h1:JpRdi6/HCYpAwUzNwuwqhbovhLtngrth3wmdIIUrZ80= github.com/hashicorp/go-cleanhttp v0.5.1 h1:dH3aiDG9Jvb5r5+bYHsikaOUIpcM0xvgMXVoDkXMzJM= github.com/hashicorp/go-cleanhttp v0.5.1/go.mod h1:JpRdi6/HCYpAwUzNwuwqhbovhLtngrth3wmdIIUrZ80= @@ -641,17 +577,13 @@ github.com/hashicorp/go-sockaddr v1.0.0/go.mod h1:7Xibr9yA9JjQq1JpNB2Vw7kxv8xerX github.com/hashicorp/go-syslog v1.0.0/go.mod h1:qPfqrKkXGihmCqbJM2mZgkZGvKG1dFdvsLplgctolz4= github.com/hashicorp/go-uuid v1.0.0/go.mod h1:6SBZvOh/SIDV7/2o3Jml5SYk/TvGqwFJ/bN7x4byOro= github.com/hashicorp/go-uuid v1.0.1/go.mod h1:6SBZvOh/SIDV7/2o3Jml5SYk/TvGqwFJ/bN7x4byOro= -github.com/hashicorp/go-version v1.1.0 h1:bPIoEKD27tNdebFGGxxYwcL4nepeY4j1QP23PFRGzg0= github.com/hashicorp/go-version v1.1.0/go.mod h1:fltr4n8CU8Ke44wwGCBoEymUuxUHl09ZGVZPK5anwXA= -github.com/hashicorp/go-version v1.2.0 h1:3vNe/fWF5CBgRIguda1meWhsZHy3m8gCJ5wx+dIzX/E= github.com/hashicorp/go-version v1.2.0/go.mod h1:fltr4n8CU8Ke44wwGCBoEymUuxUHl09ZGVZPK5anwXA= github.com/hashicorp/go-version v1.2.1 h1:zEfKbn2+PDgroKdiOzqiE8rsmLqU2uwi5PB5pBJ3TkI= github.com/hashicorp/go-version v1.2.1/go.mod h1:fltr4n8CU8Ke44wwGCBoEymUuxUHl09ZGVZPK5anwXA= github.com/hashicorp/go.net v0.0.1/go.mod h1:hjKkEWcCURg++eb33jQU7oqQcI9XDCnUzHA0oac0k90= github.com/hashicorp/golang-lru v0.0.0-20180201235237-0fb14efe8c47/go.mod h1:/m3WP610KZHVQ1SGc6re/UDhFvYD7pJ4Ao+sR/qLZy8= -github.com/hashicorp/golang-lru v0.5.0 h1:CL2msUPvZTLb5O648aiLNJw3hnBxN2+1Jq8rCOH9wdo= github.com/hashicorp/golang-lru v0.5.0/go.mod h1:/m3WP610KZHVQ1SGc6re/UDhFvYD7pJ4Ao+sR/qLZy8= -github.com/hashicorp/golang-lru v0.5.1 h1:0hERBMJE1eitiLkihrMvRVBYAkpHzc/J3QdDN+dAcgU= github.com/hashicorp/golang-lru v0.5.1/go.mod h1:/m3WP610KZHVQ1SGc6re/UDhFvYD7pJ4Ao+sR/qLZy8= github.com/hashicorp/golang-lru v0.5.3 h1:YPkqC67at8FYaadspW/6uE0COsBxS2656RLEr8Bppgk= github.com/hashicorp/golang-lru v0.5.3/go.mod h1:iADmTwqILo4mZ8BN3D2Q6+9jd8WM5uGBxy+E8yxSoD4= @@ -662,9 +594,7 @@ github.com/hashicorp/logutils v1.0.0/go.mod h1:QIAnNjmIWmVIIkWDTG1z5v++HQmx9WQRO github.com/hashicorp/mdns v1.0.0/go.mod h1:tL+uN++7HEJ6SQLQ2/p+z2pH24WQKWjBPkE0mNTz8vQ= github.com/hashicorp/memberlist v0.1.3/go.mod h1:ajVTdAv/9Im8oMAAj5G31PhhMCZJV2pPBoIllUwCN7I= github.com/hashicorp/serf v0.8.2/go.mod h1:6hOLApaqBFA1NXqRQAsxw9QxuDEvNxSQRwA/JwenrHc= -github.com/heketi/heketi v9.0.1-0.20190917153846-c2e2a4ab7ab9+incompatible h1:ysqc8k973k1lLJ4BOOHAkx14K2nt4cLjsIm+hwWDZDE= github.com/heketi/heketi v9.0.1-0.20190917153846-c2e2a4ab7ab9+incompatible/go.mod h1:bB9ly3RchcQqsQ9CpyaQwvva7RS5ytVoSoholZQON6o= -github.com/heketi/tests v0.0.0-20151005000721-f3775cbcefd6 h1:oJ/NLadJn5HoxvonA6VxG31lg0d6XOURNA09BTtM4fY= github.com/heketi/tests v0.0.0-20151005000721-f3775cbcefd6/go.mod h1:xGMAM8JLi7UkZt1i4FQeQy0R2T8GLUwQhOP5M1gBhy4= github.com/hooklift/assert v0.0.0-20170704181755-9d1defd6d214 h1:WgfvpuKg42WVLkxNwzfFraXkTXPK36bMqXvMFN67clI= github.com/hooklift/assert v0.0.0-20170704181755-9d1defd6d214/go.mod h1:kj6hFWqfwSjFjLnYW5PK1DoxZ4O0uapwHRmd9jhln4E= @@ -673,9 +603,7 @@ github.com/hooklift/iso9660 v0.0.0-20170318115843-1cf07e5970d8/go.mod h1:sOC47ru github.com/hpcloud/tail v1.0.0 h1:nfCOvKYfkgYP8hkirhJocXT2+zOD8yUNjXaWfTlyFKI= github.com/hpcloud/tail v1.0.0/go.mod h1:ab1qPbhIpdTxEkNHXyeSf5vhxWSCs/tWer42PpOxQnU= github.com/ianlancetaylor/demangle v0.0.0-20181102032728-5e5cf60278f6/go.mod h1:aSSvb/t6k1mPoxDqO4vJh6VOCGPwU4O0C2/Eqndh1Sc= -github.com/imdario/mergo v0.3.5 h1:JboBksRwiiAJWvIYJVo46AfV+IAIKZpfrSzVKj42R4Q= github.com/imdario/mergo v0.3.5/go.mod h1:2EnlNZ0deacrJVfApfmtdGgDfMuh/nq6Ok1EcJh5FfA= -github.com/imdario/mergo v0.3.8 h1:CGgOkSJeqMRmt0D9XLWExdT4m4F1vd3FV3VPt+0VxkQ= github.com/imdario/mergo v0.3.8/go.mod h1:2EnlNZ0deacrJVfApfmtdGgDfMuh/nq6Ok1EcJh5FfA= github.com/imdario/mergo v0.3.9 h1:UauaLniWCFHWd+Jp9oCEkTBj8VO/9DKg3PV3VCNMDIg= github.com/imdario/mergo v0.3.9/go.mod h1:2EnlNZ0deacrJVfApfmtdGgDfMuh/nq6Ok1EcJh5FfA= @@ -689,9 +617,7 @@ github.com/jimstudt/http-authentication v0.0.0-20140401203705-3eca13d6893a/go.mo github.com/jingyugao/rowserrcheck v0.0.0-20191204022205-72ab7603b68a/go.mod h1:xRskid8CManxVta/ALEhJha/pweKBaVG6fWgc0yH25s= github.com/jirfag/go-printf-func-name v0.0.0-20191110105641-45db9963cdd3/go.mod h1:HEWGJkRDzjJY2sqdDwxccsGicWEf9BQOZsq2tV+xzM0= github.com/jirfag/go-printf-func-name v0.0.0-20200119135958-7558a9eaa5af/go.mod h1:HEWGJkRDzjJY2sqdDwxccsGicWEf9BQOZsq2tV+xzM0= -github.com/jmespath/go-jmespath v0.0.0-20160202185014-0b12d6b521d8 h1:12VvqtR6Aowv3l/EQUlocDHW2Cp4G9WJVH7uyH8QFJE= github.com/jmespath/go-jmespath v0.0.0-20160202185014-0b12d6b521d8/go.mod h1:Nht3zPeWKUH0NzdCt2Blrr5ys8VGpn0CEB0cQHVjt7k= -github.com/jmespath/go-jmespath v0.0.0-20180206201540-c2b33e8439af h1:pmfjZENx5imkbgOkpRUYLnmbU7UEFbjtDA2hxJ1ichM= github.com/jmespath/go-jmespath v0.0.0-20180206201540-c2b33e8439af/go.mod h1:Nht3zPeWKUH0NzdCt2Blrr5ys8VGpn0CEB0cQHVjt7k= github.com/jmespath/go-jmespath v0.3.0 h1:OS12ieG61fsCg5+qLJ+SsW9NicxNkg3b25OyT2yCeUc= github.com/jmespath/go-jmespath v0.3.0/go.mod h1:9QtRXoHjLGCJ5IBSaohpXITPlowMeeYCZ7fLUTSywik= @@ -700,14 +626,11 @@ github.com/joefitzgerald/rainbow-reporter v0.1.0/go.mod h1:481CNgqmVHQZzdIbN52Cu github.com/johanneswuerbach/nfsexports v0.0.0-20200318065542-c48c3734757f h1:tL0xH80QVHQOde6Qqdohv6PewABH8l8N9pywZtuojJ0= github.com/johanneswuerbach/nfsexports v0.0.0-20200318065542-c48c3734757f/go.mod h1:+c1/kUpg2zlkoWqTOvzDs36Wpbm3Gd1nlmtXAEB0WGU= github.com/joho/godotenv v1.3.0/go.mod h1:7hK45KPybAkOC6peb+G5yklZfMxEjkZhHbwpqxOKXbg= -github.com/jonboulle/clockwork v0.1.0 h1:VKV+ZcuP6l3yW9doeqz6ziZGgcynBVQO+obU0+0hcPo= github.com/jonboulle/clockwork v0.1.0/go.mod h1:Ii8DK3G1RaLaWxj9trq07+26W01tbo22gdxWY5EU2bo= github.com/jpillora/backoff v0.0.0-20180909062703-3050d21c67d7/go.mod h1:2iMrUgbbvHEiQClaW2NsSzMyGHqN+rDFqY705q49KG0= github.com/json-iterator/go v0.0.0-20180612202835-f2b4162afba3/go.mod h1:+SdeFBvtyEkXs7REEP0seUULqWtbJapLOCVDaaPEHmU= -github.com/json-iterator/go v1.1.6 h1:MrUvLMLTMxbqFJ9kzlvat/rYZqZnW3u4wkLzWTaFwKs= 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 h1:QiWkFLKq0T7mpzwOTu6BzNDbfTE8OLrYhVKYMLF46Ok= 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= @@ -745,20 +668,16 @@ github.com/klauspost/compress v1.4.0/go.mod h1:RyIbtBH6LamlWaDj8nUwkbUhJ87Yi3uG0 github.com/klauspost/compress v1.4.1/go.mod h1:RyIbtBH6LamlWaDj8nUwkbUhJ87Yi3uG0guNDohfE1A= github.com/klauspost/cpuid v0.0.0-20180405133222-e7e905edc00e/go.mod h1:Pj4uuM528wm8OyEC2QMXAi2YiTZ96dNQPGgoMS4s3ek= github.com/klauspost/cpuid v1.2.0/go.mod h1:Pj4uuM528wm8OyEC2QMXAi2YiTZ96dNQPGgoMS4s3ek= -github.com/konsorten/go-windows-terminal-sequences v1.0.1 h1:mweAR1A6xJ3oS2pRaGiHgQ4OO8tzTaLawm8vnODuwDk= github.com/konsorten/go-windows-terminal-sequences v1.0.1/go.mod h1:T0+1ngSBFLxvqU3pZ+m/2kptfBszLMUkC4ZK/EgS/cQ= github.com/konsorten/go-windows-terminal-sequences v1.0.3 h1:CE8S1cTafDpPvMhIxNJKvHsGVBgn1xWYf1NbHQhywc8= github.com/konsorten/go-windows-terminal-sequences v1.0.3/go.mod h1:T0+1ngSBFLxvqU3pZ+m/2kptfBszLMUkC4ZK/EgS/cQ= github.com/kr/logfmt v0.0.0-20140226030751-b84e30acd515/go.mod h1:+0opPa2QZZtGFBFZlji/RkVcI2GknAs/DXo4wKdlNEc= -github.com/kr/pretty v0.1.0 h1:L/CwN0zerZDmRFUapSPitk6f+Q3+0za1rQkzVuMiMFI= github.com/kr/pretty v0.1.0/go.mod h1:dAy3ld7l9f0ibDNOQOHHMYYIIbhfbHSm3C4ZsoJORNo= -github.com/kr/pretty v0.2.0 h1:s5hAObm+yFO5uHYt5dYjxi2rXrsnmRpJx4OYvIWUaQs= github.com/kr/pretty v0.2.0/go.mod h1:ipq/a2n7PKx3OHsz4KJII5eveXtPO4qwEXGdVfWzfnI= github.com/kr/pty v1.1.1/go.mod h1:pFQYn66WHrOpPYNljwOMqo10TkYh1fy3cYio2l3bCsQ= github.com/kr/pty v1.1.3/go.mod h1:pFQYn66WHrOpPYNljwOMqo10TkYh1fy3cYio2l3bCsQ= github.com/kr/pty v1.1.5/go.mod h1:9r2w37qlBe7rQ6e1fg1S/9xpWHSnaqNdHD3WcMdbPDA= github.com/kr/pty v1.1.8/go.mod h1:O1sed60cT9XZ5uDucP5qwvh+TE3NnUj51EiZO/lmSfw= -github.com/kr/text v0.1.0 h1:45sCR5RtlFHMR4UwH9sdQ5TC8v0qDQCHnXt+kaKSTVE= github.com/kr/text v0.1.0/go.mod h1:4Jbv+DJW3UT/LiOwJeYQe1efqtUx/iVham/4vfdArNI= github.com/kr/text v0.2.0 h1:5Nx0Ya0ZqY2ygV366QzturHI13Jq95ApcVaJBhpS+AY= github.com/kr/text v0.2.0/go.mod h1:eLer722TekiGuMkidMxC/pM04lWEeraHUUmBw8l2grE= @@ -769,11 +688,9 @@ github.com/lib/pq v1.2.0/go.mod h1:5WUZQaWbwv1U+lTReE5YruASi9Al49XbQIvNi/34Woo= github.com/libopenstorage/openstorage v1.0.0/go.mod h1:Sp1sIObHjat1BeXhfMqLZ14wnOzEhNx2YQedreMcUyc= github.com/libvirt/libvirt-go v3.4.0+incompatible h1:Cpyalgj1x8JIeTlL6SDYZBo7j8nY3+5XHqmi8DaunCk= github.com/libvirt/libvirt-go v3.4.0+incompatible/go.mod h1:34zsnB4iGeOv7Byj6qotuW8Ya4v4Tr43ttjz/F0wjLE= -github.com/liggitt/tabwriter v0.0.0-20181228230101-89fcab3d43de h1:9TO3cAIGXtEhnIaL+V+BEER86oLrvS+kWobKpbJuye0= github.com/liggitt/tabwriter v0.0.0-20181228230101-89fcab3d43de/go.mod h1:zAbeS9B/r2mtpb6U+EI2rYA5OAXxsYw6wTamcNW+zcE= github.com/lightstep/tracecontext.go v0.0.0-20181129014701-1757c391b1ac h1:+2b6iGRJe3hvV/yVXrd41yVEjxuFHxasJqDhkIjS4gk= github.com/lightstep/tracecontext.go v0.0.0-20181129014701-1757c391b1ac/go.mod h1:Frd2bnT3w5FB5q49ENTfVlztJES+1k/7lyWX2+9gq/M= -github.com/lithammer/dedent v1.1.0 h1:VNzHMVCBNG1j0fh3OrsFRkVUwStdDArbgBWoPAffktY= github.com/lithammer/dedent v1.1.0/go.mod h1:jrXYCQtgg0nJiN+StA2KgR7w6CiQNv9Fd/Z9BP0jIOc= github.com/logrusorgru/aurora v0.0.0-20181002194514-a7b3b318ed4e/go.mod h1:7rIyQOR62GCctdiQpZ/zOJlFyk6y+94wXzv6RNZgaR4= github.com/lpabon/godbc v0.1.1/go.mod h1:Jo9QV0cf3U6jZABgiJ2skINAXb9j8m51r07g4KI92ZA= @@ -786,7 +703,6 @@ github.com/machine-drivers/docker-machine-driver-vmware v0.1.1/go.mod h1:ej014C8 github.com/machine-drivers/machine v0.7.1-0.20200810185219-7d42fed1b770 h1:jc5SzpD28ZqDb+PoA4FxOwkl+slv593qJjrMVM35JFQ= github.com/machine-drivers/machine v0.7.1-0.20200810185219-7d42fed1b770/go.mod h1:79Uwa2hGd5S39LDJt58s8JZcIhGEK6pkq9bsuTbFWbk= github.com/magiconair/properties v1.7.6/go.mod h1:PppfXfuXeibc/6YijjN8zIbojt8czPbwD3XqdrwzmxQ= -github.com/magiconair/properties v1.8.0 h1:LLgXmsheXeRoUOBOjtwPQCWIYqM/LU1ayDtDePerRcY= github.com/magiconair/properties v1.8.0/go.mod h1:PppfXfuXeibc/6YijjN8zIbojt8czPbwD3XqdrwzmxQ= github.com/magiconair/properties v1.8.1 h1:ZC2Vc7/ZFkGmsVC9KvOjumD+G5lXy2RtTKyzRKO2BQ4= github.com/magiconair/properties v1.8.1/go.mod h1:PppfXfuXeibc/6YijjN8zIbojt8czPbwD3XqdrwzmxQ= @@ -795,7 +711,6 @@ github.com/mailru/easyjson v0.0.0-20180823135443-60711f1a8329/go.mod h1:C1wdFJiN 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/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/maratori/testpackage v1.0.1/go.mod h1:ddKdw+XG0Phzhx8BFDTKgpWP4i7MpApTE5fXSKAqwDU= github.com/marten-seemann/qtls v0.2.3/go.mod h1:xzjG7avBwGGbdZ8dTGxlBnLArsVKLvwmjgmPuiQEcYk= @@ -803,7 +718,6 @@ github.com/maruel/panicparse v1.5.0/go.mod h1:aOutY/MUjdj80R0AEVI9qE2zHqig+67t2f github.com/matoous/godox v0.0.0-20190911065817-5d6d842e92eb/go.mod h1:1BELzlh859Sh1c6+90blK8lbYy0kwQf1bYlBhBysy1s= 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 h1:/bC9yWikZXAL9uJdulbSfyVNIR3n3trXl+v8+1sx8mU= github.com/mattn/go-colorable v0.1.2/go.mod h1:U0ppj6V5qS13XJ6of8GYAs25YV2eR4EVcfRqFIhoBtE= github.com/mattn/go-colorable v0.1.4/go.mod h1:U0ppj6V5qS13XJ6of8GYAs25YV2eR4EVcfRqFIhoBtE= github.com/mattn/go-colorable v0.1.6 h1:6Su7aK7lXmJ/U79bYtBjLNaha4Fs1Rg9plHpcH+vvnE= @@ -814,19 +728,15 @@ github.com/mattn/go-ieproxy v0.0.1/go.mod h1:pYabZ6IHcRpFh7vIaLfK7rdcWgFEb3SFJ6/ 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.8 h1:HLtExJ+uU2HOZ+wI0Tt5DtUDrx8yhUqDcp7fYERX4CE= github.com/mattn/go-isatty v0.0.8/go.mod h1:Iq45c/XA43vh69/j3iqttzPXn0bhXyGjM0Hdxcsrc5s= -github.com/mattn/go-isatty v0.0.9 h1:d5US/mDsogSGW37IV293h//ZFaeajb69h+EHFsv2xGg= github.com/mattn/go-isatty v0.0.9/go.mod h1:YNRxwqDuOph6SZLI9vUUz6OYw3QyUt7WiY2yME+cCiQ= 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 h1:2BvfKmzob6Bmd4YsL0zygOqfdFnK7GR4QL06Do4/p7Y= github.com/mattn/go-runewidth v0.0.4/go.mod h1:LwmH8dsx7+W8Uxz3IHJYH5QSwggIsqBzpuz5H//U1FU= github.com/mattn/go-runewidth v0.0.7 h1:Ei8KR0497xHyKJPAv59M1dkC+rOZCMBJ+t3fZ+twI54= github.com/mattn/go-runewidth v0.0.7/go.mod h1:H031xJmbD/WCDINGzjvQ9THkh0rPKHF+m2gUSrubnMI= -github.com/mattn/go-shellwords v1.0.5 h1:JhhFTIOslh5ZsPrpa3Wdg8bF0WI3b44EMblmU9wIsXc= github.com/mattn/go-shellwords v1.0.5/go.mod h1:3xCvwCdWdlDJUrvuMn7Wuy9eWs4pE8vqg+NOMyg4B2o= github.com/mattn/go-shellwords v1.0.10/go.mod h1:EZzvwXDESEeg03EKmM+RmDnNOPKG4lLtQsUlTZDWQ8Y= github.com/mattn/go-sqlite3 v1.9.0/go.mod h1:FPy6KqzDD04eiIsT53CuJW3U88zkxoIYsOqkbpncsNc= @@ -834,14 +744,12 @@ github.com/mattn/go-zglob v0.0.1/go.mod h1:9fxibJccNxU2cnpIKLRRFA7zX7qhkJIQWBb44 github.com/mattn/goveralls v0.0.2/go.mod h1:8d1ZMHsd7fW6IRPKQh46F2WRpyib5/X4FOpevwGNQEw= 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= -github.com/maxbrunsfeld/counterfeiter/v6 v6.2.2 h1:g+4J5sZg6osfvEfkRZxJ1em0VT95/UOZgi/l7zi1/oE= github.com/maxbrunsfeld/counterfeiter/v6 v6.2.2/go.mod h1:eD9eIE7cdwcMi9rYluz88Jz2VyhSmden33/aXg4oVIY= github.com/mesos/mesos-go v0.0.9/go.mod h1:kPYCMQ9gsOXVAle1OsoY4I1+9kPu8GHkf88aV59fDr4= github.com/mgutz/ansi v0.0.0-20170206155736-9520e82c474b/go.mod h1:01TrycV0kFyexm33Z7vhZRXopbI8J3TDReVlkTgMUxE= github.com/mholt/certmagic v0.6.2-0.20190624175158-6a42ef9fe8c2/go.mod h1:g4cOPxcjV0oFq3qwpjSA30LReKD8AoIfwAY9VvG35NY= github.com/miekg/dns v1.0.14/go.mod h1:W1PPwlIAgtquWBMBEV9nkV9Cazfe8ScdGz/Lj7v3Nrg= github.com/miekg/dns v1.1.3/go.mod h1:W1PPwlIAgtquWBMBEV9nkV9Cazfe8ScdGz/Lj7v3Nrg= -github.com/miekg/dns v1.1.4 h1:rCMZsU2ScVSYcAsOXgmC6+AKOK+6pmQTOcw03nfwYV0= github.com/miekg/dns v1.1.4/go.mod h1:W1PPwlIAgtquWBMBEV9nkV9Cazfe8ScdGz/Lj7v3Nrg= github.com/miekg/dns v1.1.27 h1:aEH/kqUzUxGJ/UHcEKdJY+ugH6WEzsEBBSPa8zuy1aM= github.com/miekg/dns v1.1.27/go.mod h1:KNUDUusw/aVsxyTYZM1oqvCicbwhgbNgztCETuNZ7xM= @@ -851,7 +759,6 @@ github.com/mitchellh/cli v1.0.0/go.mod h1:hNIlj7HEI86fIcpObd7a0FcrxTWetlwJDGcceT github.com/mitchellh/go-homedir v1.0.0/go.mod h1:SfyaCUpYCn1Vlf4IUYiD9fPX4A5wJrkLzIz1N1q0pr0= github.com/mitchellh/go-homedir v1.1.0 h1:lukF9ziXFxDFPkA1vsr5zpc1XuPDn/wFntq5mG+4E0Y= github.com/mitchellh/go-homedir v1.1.0/go.mod h1:SfyaCUpYCn1Vlf4IUYiD9fPX4A5wJrkLzIz1N1q0pr0= -github.com/mitchellh/go-ps v0.0.0-20170309133038-4fdf99ab2936 h1:kw1v0NlnN+GZcU8Ma8CLF2Zzgjfx95gs3/GN3vYAPpo= github.com/mitchellh/go-ps v0.0.0-20170309133038-4fdf99ab2936/go.mod h1:r1VsdOzOPt1ZSrGZWFoNhsAedKnEd6r9Np1+5blZCWk= github.com/mitchellh/go-ps v0.0.0-20190716172923-621e5597135b h1:9+ke9YJ9KGWw5ANXK6ozjoK47uI3uNbXv4YVINBnGm8= github.com/mitchellh/go-ps v0.0.0-20190716172923-621e5597135b/go.mod h1:r1VsdOzOPt1ZSrGZWFoNhsAedKnEd6r9Np1+5blZCWk= @@ -863,7 +770,6 @@ github.com/mitchellh/gox v0.4.0/go.mod h1:Sd9lOJ0+aimLBi73mGofS1ycjY8lL3uZM3JPS4 github.com/mitchellh/iochan v1.0.0/go.mod h1:JwYml1nuB7xOzsp52dPpHFffvOCDupsG0QubkSMEySY= github.com/mitchellh/mapstructure v0.0.0-20160808181253-ca63d7c062ee/go.mod h1:FVVH3fgwuzCH5S8UJGiWEs2h04kUh9fWfEaFds41c1Y= github.com/mitchellh/mapstructure v0.0.0-20180220230111-00c29f56e238/go.mod h1:FVVH3fgwuzCH5S8UJGiWEs2h04kUh9fWfEaFds41c1Y= -github.com/mitchellh/mapstructure v1.1.2 h1:fmNYVwqnSfB9mZU6OS2O6GsXM+wcskZDuKQzvN1EDeE= github.com/mitchellh/mapstructure v1.1.2/go.mod h1:FVVH3fgwuzCH5S8UJGiWEs2h04kUh9fWfEaFds41c1Y= github.com/mitchellh/mapstructure v1.3.1 h1:cCBH2gTD2K0OtLlv/Y5H01VQCqmlDxz30kS5Y5bqfLA= github.com/mitchellh/mapstructure v1.3.1/go.mod h1:bFUtVrKA4DC2yAKiSyO/QUcy7e+RRV2QTWOzhPopBRo= @@ -877,18 +783,15 @@ github.com/modern-go/reflect2 v0.0.0-20180701023420-4b7aa43c6742/go.mod h1:bx2lN 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/mohae/deepcopy v0.0.0-20170603005431-491d3605edfb/go.mod h1:TaXosZuwdSHYgviHp1DAtfrULt5eUgsSMsZf+YrPgl8= -github.com/morikuni/aec v1.0.0 h1:nP9CBfwrvYnBRgY6qfDQkygYDmYwOilePFkwzv4dU8A= github.com/morikuni/aec v1.0.0/go.mod h1:BbKIizmSmc5MMPqRYbxO4ZU0S0+P200+tUnFx7PXmsc= github.com/mozilla/tls-observatory v0.0.0-20180409132520-8791a200eb40/go.mod h1:SrKMQvPiws7F7iqYp8/TX+IhxCYhzr6N/1yb8cwHsGk= github.com/mozilla/tls-observatory v0.0.0-20190404164649-a3c1b6cfecfd/go.mod h1:SrKMQvPiws7F7iqYp8/TX+IhxCYhzr6N/1yb8cwHsGk= github.com/mozilla/tls-observatory v0.0.0-20200317151703-4fa42e1c2dee/go.mod h1:SrKMQvPiws7F7iqYp8/TX+IhxCYhzr6N/1yb8cwHsGk= -github.com/mrunalp/fileutils v0.0.0-20171103030105-7d4729fb3618 h1:7InQ7/zrOh6SlFjaXFubv0xX0HsuC9qJsdqm7bNQpYM= github.com/mrunalp/fileutils v0.0.0-20171103030105-7d4729fb3618/go.mod h1:x8F1gnqOkIEiO4rqoeEEEqQbo7HjGMTvyoq3gej4iT0= github.com/munnerz/goautoneg v0.0.0-20120707110453-a547fc61f48d/go.mod h1:+n7T8mK8HuQTcFwEeznm/DIxMOiR9yIdICNftLE1DvQ= github.com/munnerz/goautoneg v0.0.0-20191010083416-a7dc8b61c822/go.mod h1:+n7T8mK8HuQTcFwEeznm/DIxMOiR9yIdICNftLE1DvQ= github.com/mvdan/xurls v1.1.0/go.mod h1:tQlNn3BED8bE/15hnSL2HLkDeLWpNPAwtw7wkEq44oU= 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 h1:y5//uYreIhSUg3J1GEMiLbxo1LJaP8RfCpH6pymGZus= github.com/mxk/go-flowrate v0.0.0-20140419014527-cca7078d478f/go.mod h1:ZdcZmHo+o7JKHSa8/e818NopupXU1YMK5fe1lsApnBw= github.com/nakabonne/nestif v0.3.0/go.mod h1:dI314BppzXjJ4HsCnbo7XzrJHPszZsjnk5wEBSYHI2c= github.com/naoina/go-stringutil v0.1.0/go.mod h1:XJ2SJL9jCtBh+P9q5btrd/Ylo8XwT/h1USek5+NqSA0= @@ -899,15 +802,12 @@ github.com/nbutton23/zxcvbn-go v0.0.0-20180912185939-ae427f1e4c1d/go.mod h1:o96d github.com/niemeyer/pretty v0.0.0-20200227124842-a10e7caefd8e h1:fD57ERR4JtEqsWbfPhv4DMiApHyliiK5xCTNVSPiaAs= github.com/niemeyer/pretty v0.0.0-20200227124842-a10e7caefd8e/go.mod h1:zD1mROLANZcx1PVRCS0qkT7pwLkGfwJo4zjcN/Tysno= github.com/oklog/ulid v1.3.1/go.mod h1:CirwcVhetQ6Lv90oh/F+FBtV6XMibvdAFo93nm5qn4U= -github.com/olekukonko/tablewriter v0.0.0-20170122224234-a0225b3f23b5 h1:58+kh9C6jJVXYjt8IE48G2eWl6BjwU5Gj0gqY84fy78= github.com/olekukonko/tablewriter v0.0.0-20170122224234-a0225b3f23b5/go.mod h1:vsDQFd/mU46D+Z4whnwzcISnGGzXWMclvtLoiIKAKIo= github.com/olekukonko/tablewriter v0.0.4 h1:vHD/YYe1Wolo78koG299f7V/VAS08c6IpCLn+Ejf/w8= github.com/olekukonko/tablewriter v0.0.4/go.mod h1:zq6QwlOf5SlnkVbMSr5EoBv3636FWnp+qbPhuoO21uA= 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.8.0 h1:VkHVNpR4iVnU8XQR6DBm8BqYjN7CRzw+xKUbVVbbW9w= github.com/onsi/ginkgo v1.8.0/go.mod h1:lLunBs/Ym6LB5Z9jYTR76FiuTmxDTDusOGeTQH+WWjE= -github.com/onsi/ginkgo v1.10.1 h1:q/mM8GF/n0shIN8SaAZ0V+jnLPzen6WIVZdiwrRlMlo= github.com/onsi/ginkgo v1.10.1/go.mod h1:lLunBs/Ym6LB5Z9jYTR76FiuTmxDTDusOGeTQH+WWjE= github.com/onsi/ginkgo v1.10.2/go.mod h1:lLunBs/Ym6LB5Z9jYTR76FiuTmxDTDusOGeTQH+WWjE= github.com/onsi/ginkgo v1.11.0/go.mod h1:lLunBs/Ym6LB5Z9jYTR76FiuTmxDTDusOGeTQH+WWjE= @@ -916,24 +816,21 @@ github.com/onsi/ginkgo v1.12.0/go.mod h1:oUhWkIvk5aDxtKvDDuw8gItl8pKl42LzjC9KZE0 github.com/onsi/gomega v0.0.0-20170829124025-dcabb60a477c/go.mod h1:C1qb7wdrVGGVU+Z6iS04AVkA3Q65CEZX59MT0QO5uiA= github.com/onsi/gomega v1.4.2/go.mod h1:ex+gbHU/CVuBBDIJjb2X0qEXbFg53c61hWP/1CpauHY= github.com/onsi/gomega v1.4.3/go.mod h1:ex+gbHU/CVuBBDIJjb2X0qEXbFg53c61hWP/1CpauHY= -github.com/onsi/gomega v1.5.0 h1:izbySO9zDPmjJ8rDjLvkA2zJHIo+HkYXHnf7eN7SSyo= github.com/onsi/gomega v1.5.0/go.mod h1:ex+gbHU/CVuBBDIJjb2X0qEXbFg53c61hWP/1CpauHY= -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/onsi/gomega v1.7.1 h1:K0jcRCwNQM3vFGh1ppMtDh/+7ApJrjldlX8fA0jDTLQ= github.com/onsi/gomega v1.7.1/go.mod h1:XdKZgCCFLUoM/7CFJVPcG8C1xQ1AJ0vpAezJrB7JYyY= github.com/onsi/gomega v1.8.1/go.mod h1:Ho0h+IUsWyvy1OpqCwxlQ/21gkhVunqlU8fDGcoTdcA= github.com/onsi/gomega v1.9.0 h1:R1uwffexN6Pr340GtYRIdZmAiN4J+iw6WG4wog1DUXg= github.com/onsi/gomega v1.9.0/go.mod h1:Ho0h+IUsWyvy1OpqCwxlQ/21gkhVunqlU8fDGcoTdcA= github.com/op/go-logging v0.0.0-20160315200505-970db520ece7/go.mod h1:HzydrMdWErDVzsI23lYNej1Htcns9BCg93Dk0bBINWk= -github.com/opencontainers/go-digest v1.0.0-rc1 h1:WzifXhOVOEOuFYOJAW6aQqW0TooG2iki3E3Ii+WN7gQ= github.com/opencontainers/go-digest v1.0.0-rc1/go.mod h1:cMLVZDEM3+U2I4VmLI6N8jQYUd2OVphdqWwCJHrFt2s= +github.com/opencontainers/go-digest v1.0.0 h1:apOUWs51W5PlhuyGyz9FCeeBIOUDA/6nW8Oi/yOhh5U= +github.com/opencontainers/go-digest v1.0.0/go.mod h1:0JzlMkj0TRzQZfJkVvzbP0HBR3IKzErnv2BNG4W4MAM= github.com/opencontainers/image-spec v1.0.1 h1:JMemWkRwHx4Zj+fVxWoMCFm/8sYGGrUVojFA6h/TRcI= github.com/opencontainers/image-spec v1.0.1/go.mod h1:BtxoFyWECRxE4U/7sNtV5W15zMzWCbyJoFRP3s7yZA0= +github.com/opencontainers/runc v1.0.0-rc10 h1:AbmCEuSZXVflng0/cboQkpdEOeBsPMjz6tmq4Pv8MZw= github.com/opencontainers/runc v1.0.0-rc10/go.mod h1:qT5XzbpPznkRYVz/mWwUaVBUv2rmF59PVA73FjuZG0U= -github.com/opencontainers/runtime-spec v1.0.0 h1:O6L965K88AilqnxeYPks/75HLpp4IG+FjeSCI3cVdRg= github.com/opencontainers/runtime-spec v1.0.0/go.mod h1:jwyrGlmzljRJv/Fgzds9SsS/C5hL+LL3ko9hs6T5lQ0= -github.com/opencontainers/selinux v1.3.1-0.20190929122143-5215b1806f52 h1:B8hYj3NxHmjsC3T+tnlZ1UhInqUgnyF1zlGPmzNg2Qk= github.com/opencontainers/selinux v1.3.1-0.20190929122143-5215b1806f52/go.mod h1:+BLncwf63G4dgOzykXAxcmnFlUaOlkDdmw/CqsW6pjs= github.com/otiai10/copy v1.0.2 h1:DDNipYy6RkIkjMwy+AWzgKiNTyj2RUI9yEMeETEpVyc= github.com/otiai10/copy v1.0.2/go.mod h1:c7RpqBkwMom4bYTSkLSym4VSJz/XtncWRAj/J4PEIMY= @@ -945,11 +842,9 @@ github.com/pascaldekloe/goe v0.0.0-20180627143212-57f6aae5913c/go.mod h1:lzWF7FI 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.1.0/go.mod h1:5z9KED0ma1S8pY6P1sdut58dfprrGBbd/94hg7ilaic= -github.com/pelletier/go-toml v1.2.0 h1:T5zMGML61Wp+FlcbWjRDT7yAxhJNAiPPLOFECq181zc= github.com/pelletier/go-toml v1.2.0/go.mod h1:5z9KED0ma1S8pY6P1sdut58dfprrGBbd/94hg7ilaic= github.com/pelletier/go-toml v1.8.0 h1:Keo9qb7iRJs2voHvunFtuuYFsbWeOBh8/P9v/kVMFtw= github.com/pelletier/go-toml v1.8.0/go.mod h1:D6yutnOGMveHEPV7VQOuvI/gXY61bv+9bAOTRnLElKs= -github.com/peterbourgon/diskv v2.0.1+incompatible h1:UBdAOUP5p4RWqPBg048CAvpKN+vxiaj6gdUUzhl4XmI= github.com/peterbourgon/diskv v2.0.1+incompatible/go.mod h1:uqqh8zWWbv1HBMNONnaR/tNboyR3/BZd58JJSHlUSCU= github.com/phayes/checkstyle v0.0.0-20170904204023-bfd46e6a821d/go.mod h1:3OzsM7FXDQlpCiw2j81fOmAwQLnZnLGXVKUzeKQXIAw= github.com/phayes/freeport v0.0.0-20180830031419-95f893ade6f2 h1:JhzVVoYvbOACxoUmOs6V/G4D5nPVUW73rKvXxP4XUJc= @@ -957,7 +852,6 @@ github.com/phayes/freeport v0.0.0-20180830031419-95f893ade6f2/go.mod h1:iIss55rK github.com/pkg/browser v0.0.0-20160118053552-9302be274faa h1:od00Tr1U7+cLVtc+RNFmR53spHUF98Ziu33S8UIQnt0= github.com/pkg/browser v0.0.0-20160118053552-9302be274faa/go.mod h1:4OwLy04Bl9Ef3GJJCoec+30X3LQs/0/m4HFRt/2LUSA= github.com/pkg/errors v0.8.0/go.mod h1:bwawxfHBFNV+L2hUp1rHADufV3IMtnDRdf1r5NINEl0= -github.com/pkg/errors v0.8.1 h1:iURUrRGxPUNPdy5/HRSm+Yj6okJ6UtLINN0Q9M4+h3I= github.com/pkg/errors v0.8.1/go.mod h1:bwawxfHBFNV+L2hUp1rHADufV3IMtnDRdf1r5NINEl0= github.com/pkg/errors v0.9.1 h1:FEBLx1zS214owpjy7qsBeixbURkuhQAwrK5UwLGTwt4= github.com/pkg/errors v0.9.1/go.mod h1:bwawxfHBFNV+L2hUp1rHADufV3IMtnDRdf1r5NINEl0= @@ -971,27 +865,21 @@ github.com/pquerna/cachecontrol v0.0.0-20171018203845-0dec1b30a021/go.mod h1:prY github.com/pquerna/ffjson v0.0.0-20180717144149-af8b230fcd20/go.mod h1:YARuvh7BUWHNhzDq2OM5tzR2RiCcN2D7sapiKyCel/M= github.com/prometheus/client_golang v0.9.1/go.mod h1:7SWBe2y4D6OKWSNQJUaRYU/AaXPKyh/dDVn+NZz0KFw= github.com/prometheus/client_golang v0.9.3/go.mod h1:/TN21ttK/J9q6uSwhBd54HahCDft0ttaMvbicHlPoso= -github.com/prometheus/client_golang v1.0.0 h1:vrDKnkGzuGvhNAL56c7DBz29ZL+KxnoR0x7enabFceM= github.com/prometheus/client_golang v1.0.0/go.mod h1:db9x61etRT2tGnBNRi70OPL5FsnadC4Ky3P0J6CfImo= github.com/prometheus/client_golang v1.4.1 h1:FFSuS004yOQEtDdTq+TAOLP5xUq63KqAFYyOi8zA+Y8= github.com/prometheus/client_golang v1.4.1/go.mod h1:e9GMxYsXl05ICDXkRhurwBS4Q3OK1iX/F2sw+iXX5zU= -github.com/prometheus/client_model v0.0.0-20180712105110-5c3871d89910 h1:idejC8f05m9MGOsuEi1ATq9shN03HrxNkD/luQvxCv8= github.com/prometheus/client_model v0.0.0-20180712105110-5c3871d89910/go.mod h1:MbSGuTsp3dbXC40dX6PRTWyKYBIrTGTE9sqQNg2J8bo= -github.com/prometheus/client_model v0.0.0-20190129233127-fd36f4220a90 h1:S/YWwWx/RA8rT8tKFRuGUZhuA90OyIBpPCXkcbwU8DE= github.com/prometheus/client_model v0.0.0-20190129233127-fd36f4220a90/go.mod h1:xMI15A0UPsDsEKsMN9yxemIoYk6Tm2C1GtYGdfGttqA= -github.com/prometheus/client_model v0.0.0-20190812154241-14fe0d1b01d4 h1:gQz4mCbXsO+nc9n1hCxHcGA3Zx3Eo+UHZoInFGUIXNM= github.com/prometheus/client_model v0.0.0-20190812154241-14fe0d1b01d4/go.mod h1:xMI15A0UPsDsEKsMN9yxemIoYk6Tm2C1GtYGdfGttqA= github.com/prometheus/client_model v0.2.0 h1:uq5h0d+GuxiXLJLNABMgp2qUWDPiLvgCzz2dUR+/W/M= github.com/prometheus/client_model v0.2.0/go.mod h1:xMI15A0UPsDsEKsMN9yxemIoYk6Tm2C1GtYGdfGttqA= github.com/prometheus/common v0.0.0-20181113130724-41aa239b4cce/go.mod h1:daVV7qP5qjZbuso7PdcryaAu0sAZbrN9i7WWcTMWvro= github.com/prometheus/common v0.4.0/go.mod h1:TNfzLD0ON7rHzMJeJkieUDPYmFC7Snx/y86RQel1bk4= -github.com/prometheus/common v0.4.1 h1:K0MGApIoQvMw27RTdJkPbr3JZ7DNbtxQNyi5STVM6Kw= github.com/prometheus/common v0.4.1/go.mod h1:TNfzLD0ON7rHzMJeJkieUDPYmFC7Snx/y86RQel1bk4= github.com/prometheus/common v0.9.1 h1:KOMtN28tlbam3/7ZKEYKHhKoJZYYj3gMH4uc62x7X7U= github.com/prometheus/common v0.9.1/go.mod h1:yhUN8i9wzaXS3w1O07YhxHEBxD+W35wd8bs7vj7HSQ4= github.com/prometheus/procfs v0.0.0-20181005140218-185b4288413d/go.mod h1:c3At6R/oaqEKCNdg8wHV1ftS6bRYblBhIjjI8uT2IGk= github.com/prometheus/procfs v0.0.0-20190507164030-5867b95ac084/go.mod h1:TjEm7ze935MbeOT/UhFTIMYKhuLP4wbCsTZCD3I8kEA= -github.com/prometheus/procfs v0.0.2 h1:6LJUbpNm42llc4HRCuvApCSWB/WfhuNo9K98Q9sNGfs= github.com/prometheus/procfs v0.0.2/go.mod h1:TjEm7ze935MbeOT/UhFTIMYKhuLP4wbCsTZCD3I8kEA= github.com/prometheus/procfs v0.0.8 h1:+fpWZdT24pJBiqJdAwYBjPSk+5YmQzYNPYzQsdzLkt8= github.com/prometheus/procfs v0.0.8/go.mod h1:7Qr8sr6344vo1JqZ6HhLceV9o3AJ1Ff+GxbHq6oeK9A= @@ -1009,7 +897,6 @@ github.com/rogpeppe/go-internal v1.3.0/go.mod h1:M8bDsm7K2OlrFYOpmOWEs/qY81heoFR github.com/rogpeppe/go-internal v1.5.2/go.mod h1:xXDCJY+GAPziupqXw64V24skbSoqbTEfhy4qGm1nDQc= github.com/rubiojr/go-vhd v0.0.0-20160810183302-0bfd3b39853c/go.mod h1:DM5xW0nvfNNm2uytzsvhI3OnX8uzaRAg8UX/CnDqbto= github.com/russross/blackfriday v0.0.0-20170610170232-067529f716f4/go.mod h1:JO/DiYxRf+HjHt06OyowR9PTA263kcR/rfWxYHBV53g= -github.com/russross/blackfriday v1.5.2 h1:HyvC0ARfnZBqnXwABFeSZHpKvJHJJfPz81GNueLj0oo= github.com/russross/blackfriday v1.5.2/go.mod h1:JO/DiYxRf+HjHt06OyowR9PTA263kcR/rfWxYHBV53g= github.com/russross/blackfriday v1.5.3-0.20200218234912-41c5fccfd6f6 h1:tlXG832s5pa9x9Gs3Rp2rTvEqjiDEuETUOSfBEiTcns= github.com/russross/blackfriday v1.5.3-0.20200218234912-41c5fccfd6f6/go.mod h1:JO/DiYxRf+HjHt06OyowR9PTA263kcR/rfWxYHBV53g= @@ -1025,18 +912,16 @@ github.com/sayboras/dockerclient v1.0.0 h1:awHcxOzTP07Gl1SJAhkTCTagyJwgA6f/Az/Z4 github.com/sayboras/dockerclient v1.0.0/go.mod h1:mUmEoqt0b+uQg57s006FsvL4mybi+N5wINLDBGtaPTY= github.com/sclevine/spec v1.2.0/go.mod h1:W4J29eT/Kzv7/b9IWLB055Z+qvVC9vt0Arko24q7p+U= github.com/sean-/seed v0.0.0-20170313163322-e2103e2c3529/go.mod h1:DxrIzT+xaE7yg65j358z/aeFdxmN0P9QXhEzd20vsDc= -github.com/seccomp/libseccomp-golang v0.9.1 h1:NJjM5DNFOs0s3kYE1WUOr6G8V97sdt46rlXTMfXGWBo= github.com/seccomp/libseccomp-golang v0.9.1/go.mod h1:GbW5+tmTXfcxTToHLXlScSlAvWlF4P2Ca7zGrPiEpWo= github.com/securego/gosec v0.0.0-20200103095621-79fbf3af8d83/go.mod h1:vvbZ2Ae7AzSq3/kywjUDxSNq2SJ27RxCz2un0H3ePqE= github.com/securego/gosec v0.0.0-20200401082031-e946c8c39989/go.mod h1:i9l/TNj+yDFh9SZXUTvspXTjbFXgZGP/UvhU1S65A4A= github.com/securego/gosec/v2 v2.3.0/go.mod h1:UzeVyUXbxukhLeHKV3VVqo7HdoQR9MrRfFmZYotn8ME= -github.com/sergi/go-diff v1.0.0 h1:Kpca3qRNrduNnOQeazBd0ysaKrUJiIuISHxogkT9RPQ= github.com/sergi/go-diff v1.0.0/go.mod h1:0CfEIISq7TuYL3j771MWULgwwjU+GofnZX9QAmXWZgo= github.com/shirou/gopsutil v0.0.0-20180427012116-c95755e4bcd7/go.mod h1:5b4v6he4MtMOwMlS0TUMTu2PcXUg8+E1lC7eC3UO/RA= +github.com/shirou/gopsutil v0.0.0-20190901111213-e4ec7b275ada h1:WokF3GuxBeL+n4Lk4Fa8v9mbdjlrl7bHuneF4N1bk2I= github.com/shirou/gopsutil v0.0.0-20190901111213-e4ec7b275ada/go.mod h1:WWnYX4lzhCH5h/3YBfyVA3VbLYjlMZZAQcW9ojMexNc= -github.com/shirou/gopsutil v2.18.12+incompatible h1:1eaJvGomDnH74/5cF4CTmTbLHAriGFsTZppLXDX93OM= -github.com/shirou/gopsutil v2.18.12+incompatible/go.mod h1:5b4v6he4MtMOwMlS0TUMTu2PcXUg8+E1lC7eC3UO/RA= -github.com/shirou/w32 v0.0.0-20160930032740-bb4de0191aa4 h1:udFKJ0aHUL60LboW/A+DfgoHVedieIzIXE8uylPue0U= +github.com/shirou/gopsutil/v3 v3.20.12 h1:abpcjSQRHdb3thCge/UyJty9CnvvmUHljTSrjtFU+Og= +github.com/shirou/gopsutil/v3 v3.20.12/go.mod h1:igHnfak0qnw1biGeI2qKQvu0ZkwvEkUcCLlYhZzdr/4= github.com/shirou/w32 v0.0.0-20160930032740-bb4de0191aa4/go.mod h1:qsXQc7+bwAM3Q1u/4XEfrquwF8Lw7D7y5cD8CuHnfIc= github.com/shurcooL/go v0.0.0-20180423040247-9e1955d9fb6e/go.mod h1:TDJrrUr11Vxrven61rcy3hJMUqaf/CLWYhHNPmT14Lk= github.com/shurcooL/go-goon v0.0.0-20170922171312-37c2f522c041/go.mod h1:N5mDOmsrJOB+vfqUK+7DmDyjhSLIIBnXo9lvZJj3MWQ= @@ -1046,11 +931,9 @@ github.com/sirupsen/logrus v1.0.5/go.mod h1:pMByvHTf9Beacp5x1UXfOR9xyW/9antXMhjM github.com/sirupsen/logrus v1.0.6/go.mod h1:pMByvHTf9Beacp5x1UXfOR9xyW/9antXMhjMPG0dEzc= github.com/sirupsen/logrus v1.2.0/go.mod h1:LxeOpSwHxABJmUn/MG1IvRgCAasNZTLOkJPxbbu5VWo= github.com/sirupsen/logrus v1.4.1/go.mod h1:ni0Sbl8bgC9z8RoU9G6nDWqqs/fq4eDPysMBDgk/93Q= -github.com/sirupsen/logrus v1.4.2 h1:SPIRibHv4MatM3XXNO2BJeFLZwZ2LvZgfQ5+UNI2im4= github.com/sirupsen/logrus v1.4.2/go.mod h1:tLMulIdttU9McNUspp0xgXVQah82FyeX6MwdIuYE2rE= github.com/sirupsen/logrus v1.6.0 h1:UBcNElsrwanuuMsnGSlYmtmgbb23qDR5dG+6X6Oo89I= github.com/sirupsen/logrus v1.6.0/go.mod h1:7uNnSEd1DgxDLC74fIahvMZmmYsHGZGEOFrfsX/uA88= -github.com/smartystreets/assertions v0.0.0-20180927180507-b2de0cb4f26d h1:zE9ykElWQ6/NYmHa3jpm/yHnI4xSofP+UP6SpjHcSeM= github.com/smartystreets/assertions v0.0.0-20180927180507-b2de0cb4f26d/go.mod h1:OnSkiWE9lh6wB0YB77sQom3nweQdgAjqCqsofrRNTgc= github.com/smartystreets/assertions v1.0.0 h1:UVQPSSmc3qtTi+zPPkCXvZX9VvW/xT/NsRvKfwY81a8= github.com/smartystreets/assertions v1.0.0/go.mod h1:kHHU4qYBaI3q23Pp3VPrmWhuIUrLW/7eUrw0BU5VaoM= @@ -1063,59 +946,48 @@ github.com/sourcegraph/go-diff v0.5.1/go.mod h1:j2dHj3m8aZgQO8lMTcTnBcXkRRRqi34c github.com/sourcegraph/go-diff v0.5.3/go.mod h1:v9JDtjCE4HHHCZGId75rg8gkKKa98RVjBcBGsVmMmak= github.com/spaolacci/murmur3 v0.0.0-20180118202830-f09979ecbc72/go.mod h1:JwIasOWyU6f++ZhiEuf87xNszmSA2myDM2Kzu9HwQUA= github.com/spf13/afero v1.1.0/go.mod h1:j4pytiNVoe2o6bmDsKpLACNPDBIoEAkihy7loJ1B0CQ= -github.com/spf13/afero v1.1.2 h1:m8/z1t7/fwjysjQRYbP0RD+bUIF/8tJwPdEZsI83ACI= github.com/spf13/afero v1.1.2/go.mod h1:j4pytiNVoe2o6bmDsKpLACNPDBIoEAkihy7loJ1B0CQ= github.com/spf13/afero v1.2.2 h1:5jhuqJyZCZf2JRofRvN/nIFgIWNzPa3/Vz8mYylgbWc= github.com/spf13/afero v1.2.2/go.mod h1:9ZxEEn6pIJ8Rxe320qSDBk6AsU0r9pR7Q4OcevTdifk= github.com/spf13/cast v1.2.0/go.mod h1:r2rcYCSwa1IExKTDiTfzaxqT2FNHs8hODu4LnUfgKEg= -github.com/spf13/cast v1.3.0 h1:oget//CVOEoFewqQxwr0Ej5yjygnqGkvggSE/gB35Q8= github.com/spf13/cast v1.3.0/go.mod h1:Qx5cxh0v+4UWYiBimWS+eyWzqEqokIECu5etghLkUJE= github.com/spf13/cast v1.3.1 h1:nFm6S0SMdyzrzcmThSipiEubIDy8WEXKNZ0UOgiRpng= github.com/spf13/cast v1.3.1/go.mod h1:Qx5cxh0v+4UWYiBimWS+eyWzqEqokIECu5etghLkUJE= +github.com/spf13/cobra v0.0.2-0.20171109065643-2da4a54c5cee/go.mod h1:1l0Ry5zgKvJasoi3XT1TypsSe7PqH0Sj9dhYf7v3XqQ= github.com/spf13/cobra v0.0.2/go.mod h1:1l0Ry5zgKvJasoi3XT1TypsSe7PqH0Sj9dhYf7v3XqQ= 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/cobra v1.0.0 h1:6m/oheQuQ13N9ks4hubMG6BnvwOeaJrqSPLahSnczz8= github.com/spf13/cobra v1.0.0/go.mod h1:/6GTrnGXV9HjY+aR4k0oJ5tcvakLuG6EuKReYlHNrgE= github.com/spf13/jwalterweatherman v0.0.0-20180109140146-7c0cea34c8ec/go.mod h1:cQK4TGJAtQXfYWX+Ddv3mKDzgVb68N+wFjFa4jdeBTo= -github.com/spf13/jwalterweatherman v1.0.0 h1:XHEdyB+EcvlqZamSM4ZOMGlc93t6AcsBEu9Gc1vn7yk= github.com/spf13/jwalterweatherman v1.0.0/go.mod h1:cQK4TGJAtQXfYWX+Ddv3mKDzgVb68N+wFjFa4jdeBTo= github.com/spf13/jwalterweatherman v1.1.0 h1:ue6voC5bR5F8YxI5S67j9i582FU4Qvo2bmqnqMYADFk= github.com/spf13/jwalterweatherman v1.1.0/go.mod h1:aNWZUN0dPAAO/Ljvb5BEdw96iTZ0EXowPYD95IqWIGo= github.com/spf13/pflag v0.0.0-20170130214245-9ff6c6923cff/go.mod h1:DYY7MBk1bdzusC3SYhjObp+wFpr4gzcvqqNjLnInEg4= +github.com/spf13/pflag v1.0.1-0.20171106142849-4c012f6dcd95/go.mod h1:DYY7MBk1bdzusC3SYhjObp+wFpr4gzcvqqNjLnInEg4= github.com/spf13/pflag v1.0.1/go.mod h1:DYY7MBk1bdzusC3SYhjObp+wFpr4gzcvqqNjLnInEg4= -github.com/spf13/pflag v1.0.3 h1:zPAT6CGy6wXeQ7NtTnaTerfKOsV6V6F8agHXFiazDkg= 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.0.2/go.mod h1:A8kyI5cUJhb8N+3pkfONlcEcZbueH6nhAm0Fq7SrnBM= -github.com/spf13/viper v1.3.2 h1:VUFqw5KcqRf7i70GOzW7N+Q7+gxVBkSSqiXB12+JQ4M= github.com/spf13/viper v1.3.2/go.mod h1:ZiWeW+zYFKm7srdB9IoDzzZXaJaI5eL9QjNiN/DMA2s= github.com/spf13/viper v1.4.0/go.mod h1:PTJ7Z/lr49W6bUbkmS1V3by4uWynFiR9p7+dSq/yZzE= -github.com/spf13/viper v1.6.1 h1:VPZzIkznI1YhVMRi6vNFLHSwhnhReBfgTxIPccpfdZk= github.com/spf13/viper v1.6.1/go.mod h1:t3iDnF5Jlj76alVNuyFBk5oUMCvsrkbvZK0WQdfDi5k= github.com/spf13/viper v1.7.0 h1:xVKxvI7ouOI5I+U9s2eeiUfMaWBVoXA3AWskkrqK0VM= github.com/spf13/viper v1.7.0/go.mod h1:8WkrPz2fc9jxqZNCJI/76HCieCp4Q8HaLFoCha5qpdg= github.com/storageos/go-api v0.0.0-20180912212459-343b3eff91fc/go.mod h1:ZrLn+e0ZuF3Y65PNF6dIwbJPZqfmtCXxFm9ckv0agOY= 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 v0.0.0-20151208002404-e3a8ff8ce365/go.mod h1:a8OnRcib4nhh0OaRAV+Yts87kKdq0PP7pXfy6kDkUVs= -github.com/stretchr/testify v1.2.2 h1:bSDNvY7ZPG5RlJ8otE/7V6gMiyenm9RtJ7IUVIAoJ1w= github.com/stretchr/testify v1.2.2/go.mod h1:a8OnRcib4nhh0OaRAV+Yts87kKdq0PP7pXfy6kDkUVs= -github.com/stretchr/testify v1.3.0 h1:TivCn/peBQ7UY8ooIcPgZFpTNSz0Q2U6UrFlUfqbe0Q= github.com/stretchr/testify v1.3.0/go.mod h1:M5WIy9Dh21IEIfnGCwXGc5bZfKNJtfHm1UVUgZn+9EI= -github.com/stretchr/testify v1.4.0 h1:2E4SXV/wtOkTonXsotYi4li6zVWxYlZuYNCXe9XRJyk= github.com/stretchr/testify v1.4.0/go.mod h1:j7eGeouHqKxXV5pUuKE4zz7dFj8WfuZ+81PSLYec5m4= -github.com/stretchr/testify v1.5.1 h1:nOGnQDM7FYENwehXlg/kFVnos3rEvtKTjRvOWSzb6H4= github.com/stretchr/testify v1.5.1/go.mod h1:5W2xD1RspED5o8YsWQXVCued0rvSQ+mT+I5cxcmMvtA= github.com/stretchr/testify v1.6.1 h1:hDPOHmpOpP40lSULcqw7IrRb/u7w6RpDC9399XyoNd0= github.com/stretchr/testify v1.6.1/go.mod h1:6Fq8oRcR53rry900zMqJjRRixrwX3KX962/h/Wwjteg= github.com/subosito/gotenv v1.2.0 h1:Slr1R9HxAlEKefgq5jn9U+DnETlIUa6HfgEzj0g5d7s= github.com/subosito/gotenv v1.2.0/go.mod h1:N0PQaV/YGNqwC0u51sEeR/aUtSLEXKX9iv69rRypqCw= -github.com/syndtr/gocapability v0.0.0-20180916011248-d98352740cb2 h1:b6uOv7YOFK0TYG7HtkIgExQo+2RdLuwRft63jn2HWj8= github.com/syndtr/gocapability v0.0.0-20180916011248-d98352740cb2/go.mod h1:hkRG7XYTFWNJGYcbNJQlaLq0fg1yr4J4t/NcTQtrfww= github.com/tarm/serial v0.0.0-20180830185346-98f6abe2eb07/go.mod h1:kDXzergiv9cbyO7IOYJZWg1U88JhDg3PB6klq9Hg2pA= github.com/tdakkota/asciicheck v0.0.0-20200416190851-d7f85be797a2/go.mod h1:yHp0ai0Z9gUljN3o0xMhYJnH/IcvkdTBOX2fmJ93JEM= @@ -1137,7 +1009,6 @@ github.com/tommy-muehle/go-mnd v1.1.1/go.mod h1:dSUh0FtTP8VhvkL1S+gUR1OKd9ZnSaoz github.com/tommy-muehle/go-mnd v1.3.1-0.20200224220436-e6f9a994e8fa/go.mod h1:dSUh0FtTP8VhvkL1S+gUR1OKd9ZnSaozuI6r3m6wOig= github.com/ugorji/go v1.1.4/go.mod h1:uQMGLiO92mf5W77hV/PUCpI3pbzQx3CRekS0kk+RGrc= github.com/ugorji/go/codec v0.0.0-20181204163529-d75b2dcb6bc8/go.mod h1:VFNgLljTbGfSG7qAOspJ7OScBnGdDN/yBr0sguwnwf0= -github.com/ulikunitz/xz v0.5.5 h1:pFrO0lVpTBXLpYw+pnLj6TbvHuyjXMfjGeCwSqCVwok= github.com/ulikunitz/xz v0.5.5/go.mod h1:2bypXElzHzzJZwzH67Y6wb67pO62Rzfn7BSiF4ABRW8= github.com/ulikunitz/xz v0.5.6/go.mod h1:2bypXElzHzzJZwzH67Y6wb67pO62Rzfn7BSiF4ABRW8= github.com/ulikunitz/xz v0.5.7 h1:YvTNdFzX6+W5m9msiYg/zpkSURPPtOlzbqYjrFn7Yt4= @@ -1145,7 +1016,6 @@ github.com/ulikunitz/xz v0.5.7/go.mod h1:nbz6k7qbPmH4IRqmfOplQw/tblSgqTqBwxkY0oW github.com/ultraware/funlen v0.0.1/go.mod h1:Dp4UiAus7Wdb9KUZsYWZEWiRzGuM2kXM1lPbfaF6xhA= github.com/ultraware/funlen v0.0.2/go.mod h1:Dp4UiAus7Wdb9KUZsYWZEWiRzGuM2kXM1lPbfaF6xhA= github.com/ultraware/whitespace v0.0.4/go.mod h1:aVMh/gQve5Maj9hQ/hg+F75lr/X5A89uZnzAmWSineA= -github.com/urfave/cli v1.20.0 h1:fDqGv3UG/4jbVl/QkFwEdddtEDjh/5Ov6X+0B/3bPaw= github.com/urfave/cli v1.20.0/go.mod h1:70zkFmudgCuE/ngEzBv17Jvp/497gISqfk5gWijbERA= github.com/urfave/cli v1.22.4/go.mod h1:Gos4lmkARVdJ6EkW0WaNv/tZAAMe9V7XWyB60NtXRu0= github.com/urfave/negroni v1.0.0/go.mod h1:Meg73S6kFm/4PpbYdq35yYWoCZ9mS/YSx+lKnmiohz4= @@ -1158,9 +1028,7 @@ github.com/valyala/quicktemplate v1.2.0/go.mod h1:EH+4AkTd43SvgIbQHYu59/cJyxDoOV github.com/valyala/tcplisten v0.0.0-20161114210144-ceec8f93295a/go.mod h1:v3UYOV9WzVtRmSR+PDvWpU/qWl4Wa5LApYYX4ZtKbio= github.com/vdemeester/k8s-pkg-credentialprovider v1.17.4/go.mod h1:inCTmtUdr5KJbreVojo06krnTgaeAz/Z7lynpPk/Q2c= github.com/vektah/gqlparser v1.1.2/go.mod h1:1ycwN7Ij5njmMkPPAOaRFY4rET2Enx7IkVv3vaXspKw= -github.com/vishvananda/netlink v1.0.0 h1:bqNY2lgheFIu1meHUFSH3d7vG93AFyqg3oGbJCOJgSM= github.com/vishvananda/netlink v1.0.0/go.mod h1:+SR5DhBJrl6ZM7CoCKvpw5BKroDKQ+PJqOg65H/2ktk= -github.com/vishvananda/netns v0.0.0-20171111001504-be1fbeda1936 h1:J9gO8RJCAFlln1jsvRba/CWVUnMHwObklfxxjErl1uk= github.com/vishvananda/netns v0.0.0-20171111001504-be1fbeda1936/go.mod h1:ZjcWmFBXmLKZu9Nxj3WKYEafiSqer2rnvPr0en9UNpI= github.com/vmware/govmomi v0.20.3/go.mod h1:URlwyTFZX72RmxtxuaFL2Uj3fD1JTvZdx59bHWk6aFU= github.com/xanzy/go-gitlab v0.31.0/go.mod h1:sPLojNBn68fMUWSxIJtdVVIP8uSBYqesTfDUseX11Ug= @@ -1181,19 +1049,15 @@ github.com/yuin/goldmark v1.1.32/go.mod h1:3hX8gzYuyVAZsxl0MRgGTJEmQBFcNTphYh9de github.com/zchee/go-vmnet v0.0.0-20161021174912-97ebf9174097 h1:Ucx5I1l1+TWXvqFmBigYu4Ub4MLvUuUU/whjoUvV95I= github.com/zchee/go-vmnet v0.0.0-20161021174912-97ebf9174097/go.mod h1:lFZSWRIpCfE/pt91hHBBpV6+x87YlCjsp+aIR2qCPPU= go.etcd.io/bbolt v1.3.2/go.mod h1:IbVyRI1SCnLcuJnV2u8VeU0CEYM7e686BmAb1XKL+uU= -go.etcd.io/bbolt v1.3.3 h1:MUGmc65QhB3pIlaQ5bB4LwqSj6GIonVJXpZiaKNyaKk= 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/go.mod h1:u7ryQJ+DOzQmeO7zB6MHyr8jkEQvC8vH7qLUO4lqsUM= go.opencensus.io v0.15.0/go.mod h1:UffZAU+4sDEINUGP/B7UfBBkq4fqLu9zXAX7ke6CHW0= go.opencensus.io v0.21.0/go.mod h1:mSImk1erAIZhrmZN+AvHh14ztQfjbGwt4TtuofqLduU= -go.opencensus.io v0.22.0 h1:C9hSCOW830chIVkdja34wa6Ky+IzWllkUinR+BtRZd4= 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.opencensus.io v0.22.4 h1:LYy1Hy3MJdrCdMwwzxA/dRok4ejH+RwNGbuoD9fCjto= go.opencensus.io v0.22.4/go.mod h1:yxeiOL68Rb0Xd1ddK5vPZ/oVn4vY4Ynel7k9FzqtOIw= @@ -1228,14 +1092,11 @@ golang.org/x/crypto v0.0.0-20190510104115-cbcb75029529/go.mod h1:yigFU9vqHzYiE8U 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-20190820162420-60c769a6c586 h1:7KByu05hhLed2MO29w7p1XfZvZ13m8mub3shuVftRs0= golang.org/x/crypto v0.0.0-20190820162420-60c769a6c586/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI= golang.org/x/crypto v0.0.0-20191002192127-34f69633bfdc/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI= golang.org/x/crypto v0.0.0-20191011191535-87dc89f01550/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI= -golang.org/x/crypto v0.0.0-20191206172530-e9b2fee46413 h1:ULYEB3JvPRE/IfO+9uO7vKV/xzVTO7XPAwm8xbf4w2g= golang.org/x/crypto v0.0.0-20191206172530-e9b2fee46413/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/go.mod h1:LzIPMQfyMNhhGPhUkYOs5KpL4U8rLKemX1yGLhDgUto= golang.org/x/crypto v0.0.0-20200820211705-5c72a883971a h1:vclmkQCjlDX5OydZ9wv8rBCcS0QyQY66Mpf/7BZbInM= @@ -1273,7 +1134,6 @@ golang.org/x/mobile v0.0.0-20190312151609-d3739f865fa6/go.mod h1:z+o9i4GpDbdi3rU golang.org/x/mobile v0.0.0-20190719004257-d2bd2a29d028/go.mod h1:E/iHnbuqvinMTCcRqshq8CkpyQDoeVncDDYHnLhea+o= golang.org/x/mod v0.0.0-20190513183733-4bf6d317e70e/go.mod h1:mXi4GBBbnImb6dmsKGUJ2LatrhH/nqhxcFungHvyanc= golang.org/x/mod v0.1.0/go.mod h1:0QHyrYULN0/3qlju5TqG8bIK38QM8yzMo5ekMj3DlcY= -golang.org/x/mod v0.1.1-0.20191105210325-c90efee705ee h1:WG0RUwxtNT4qqaXX3DPA8zHFNm/D9xaBpxzHt1WcA/E= golang.org/x/mod v0.1.1-0.20191105210325-c90efee705ee/go.mod h1:QqPTAvyqsEbceGzBzNggFXnrqF1CaUcvgkdR5Ot7KZg= golang.org/x/mod v0.1.1-0.20191107180719-034126e5016b/go.mod h1:QqPTAvyqsEbceGzBzNggFXnrqF1CaUcvgkdR5Ot7KZg= golang.org/x/mod v0.2.0/go.mod h1:s0Qsj1ACt9ePp/hMypM3fl4fZqREWJwdYDEqhRiZZUA= @@ -1298,7 +1158,6 @@ golang.org/x/net v0.0.0-20190213061140-3a22650c66bd/go.mod h1:mL1N/T3taQHkDXs73r 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-20190328230028-74de082e2cca/go.mod h1:t9HGtf8HONx5eT2rtn7q6eTqICYqUVnKs3thJo3Qplg= -golang.org/x/net v0.0.0-20190404232315-eb5bcb51f2a3 h1:0GoQqolDA55aaLxZyTzK/Y2ePZzZTUrRacwib7cNsYQ= 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-20190502183928-7f726cade0ab/go.mod h1:t9HGtf8HONx5eT2rtn7q6eTqICYqUVnKs3thJo3Qplg= @@ -1307,14 +1166,12 @@ golang.org/x/net v0.0.0-20190522155817-f3200d17e092/go.mod h1:HSz+uSET+XFnRR8LxR golang.org/x/net v0.0.0-20190603091049-60506f45cf65/go.mod h1:HSz+uSET+XFnRR8LxR5pz3Of3rY3CfYBVs4xY44aLks= golang.org/x/net v0.0.0-20190613194153-d28f0bde5980/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= golang.org/x/net v0.0.0-20190619014844-b5b0513f8c1b/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= -golang.org/x/net v0.0.0-20190620200207-3b0461eec859 h1:R/3boaszxrf1GEUWTVDzSKVwLmSJpwZ1yqXm8j0v2QI= golang.org/x/net v0.0.0-20190620200207-3b0461eec859/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= golang.org/x/net v0.0.0-20190628185345-da137c7871d7/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-20190923162816-aa69164e4478/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= -golang.org/x/net v0.0.0-20191004110552-13f9640d40b9 h1:rjwSpXsdiK0dV8/Naq3kAw9ymfAeJIyd0upUIElB+lI= 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/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= @@ -1322,13 +1179,11 @@ golang.org/x/net v0.0.0-20200114155413-6afb5195e5aa/go.mod h1:z5CRVTTTmAJ677TzLL golang.org/x/net v0.0.0-20200202094626-16171245cfb2/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= golang.org/x/net v0.0.0-20200222125558-5a598a2470a0/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= golang.org/x/net v0.0.0-20200226121028-0de0cce0169b/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= -golang.org/x/net v0.0.0-20200301022130-244492dfa37a h1:GuSPYbZzB5/dcLNCwLQLsg3obCJtX9IJhpXkvY7kzk0= golang.org/x/net v0.0.0-20200301022130-244492dfa37a/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= golang.org/x/net v0.0.0-20200324143707-d3edc9973b7e/go.mod h1:qpuaurCH72eLCgpAm/N6yyVIVM9cpaDIP3A8BGJEC5A= golang.org/x/net v0.0.0-20200501053045-e0ff5e5a1de5/go.mod h1:qpuaurCH72eLCgpAm/N6yyVIVM9cpaDIP3A8BGJEC5A= golang.org/x/net v0.0.0-20200506145744-7e3656a0809f/go.mod h1:qpuaurCH72eLCgpAm/N6yyVIVM9cpaDIP3A8BGJEC5A= golang.org/x/net v0.0.0-20200513185701-a91f0712d120/go.mod h1:qpuaurCH72eLCgpAm/N6yyVIVM9cpaDIP3A8BGJEC5A= -golang.org/x/net v0.0.0-20200520182314-0ba52f642ac2 h1:eDrdRpKgkcCqKZQwyZRyeFZgfqt37SL7Kv3tok06cKE= golang.org/x/net v0.0.0-20200520182314-0ba52f642ac2/go.mod h1:qpuaurCH72eLCgpAm/N6yyVIVM9cpaDIP3A8BGJEC5A= golang.org/x/net v0.0.0-20200602114024-627f9648deb9/go.mod h1:qpuaurCH72eLCgpAm/N6yyVIVM9cpaDIP3A8BGJEC5A= golang.org/x/net v0.0.0-20200625001655-4c5254603344/go.mod h1:/O7V0waA8r7cgGh81Ro3o1hOxt32SMVPicZroKQ2sZA= @@ -1337,9 +1192,7 @@ golang.org/x/net v0.0.0-20200707034311-ab3426394381/go.mod h1:/O7V0waA8r7cgGh81R golang.org/x/oauth2 v0.0.0-20180821212333-d2e6202438be/go.mod h1:N/0e6XlmueqKjAGxoOufVs8QHGRruUQn6yWY3a++T0U= golang.org/x/oauth2 v0.0.0-20181106182150-f42d05182288/go.mod h1:N/0e6XlmueqKjAGxoOufVs8QHGRruUQn6yWY3a++T0U= golang.org/x/oauth2 v0.0.0-20190226205417-e64efc72b421/go.mod h1:gOpvHmFTYa4IltrdGE7lF6nIHvwfUNPOp7c8zoXwtLw= -golang.org/x/oauth2 v0.0.0-20190402181905-9f3314589c9a h1:tImsplftrFpALCYumobsd0K86vlAs/eXGFms2txfJfA= golang.org/x/oauth2 v0.0.0-20190402181905-9f3314589c9a/go.mod h1:gOpvHmFTYa4IltrdGE7lF6nIHvwfUNPOp7c8zoXwtLw= -golang.org/x/oauth2 v0.0.0-20190604053449-0f29369cfe45 h1:SVwTIAaPC2U/AvvLNZ2a7OVsmBpC8L5BlwK1whH3hm0= golang.org/x/oauth2 v0.0.0-20190604053449-0f29369cfe45/go.mod h1:gOpvHmFTYa4IltrdGE7lF6nIHvwfUNPOp7c8zoXwtLw= golang.org/x/oauth2 v0.0.0-20191202225959-858c2ad4c8b6/go.mod h1:gOpvHmFTYa4IltrdGE7lF6nIHvwfUNPOp7c8zoXwtLw= golang.org/x/oauth2 v0.0.0-20200107190931-bf48bf16ab8d h1:TzXSXBo42m9gQenoE3b9BGiEpg5IG2JkU5FkPIawgtw= @@ -1349,11 +1202,8 @@ golang.org/x/sync v0.0.0-20180314180146-1d60e4601c6f/go.mod h1:RxMgew5VJxzue5/jJ golang.org/x/sync v0.0.0-20181108010431-42b317875d0f/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sync v0.0.0-20181221193216-37e7f081c4d4/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sync v0.0.0-20190227155943-e225da77a7e6/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= -golang.org/x/sync v0.0.0-20190423024810-112230192c58 h1:8gQV6CLnAEikrhgkHFbMAEhagSSnXWGV915qUMm9mrU= golang.org/x/sync v0.0.0-20190423024810-112230192c58/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= -golang.org/x/sync v0.0.0-20190911185100-cd5d95a43a6e h1:vcxGaoTs7kV8m5Np9uUNQin4BrLOthgV7252N8V+FwY= 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/sync v0.0.0-20200625203802-6e8e738ad208 h1:qwRHBd0NqMbJxfbotnDhm2ByMI1Shq4Y6oRJo21SGJA= golang.org/x/sync v0.0.0-20200625203802-6e8e738ad208/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= @@ -1387,7 +1237,6 @@ golang.org/x/sys v0.0.0-20190624142023-c5567b49c5d0/go.mod h1:h1NjWce9XRLGQEsW7w golang.org/x/sys v0.0.0-20190626221950-04f50cda93cb/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20190726091711-fc99dfbffb4e/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20190813064441-fde4db37ae7a/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20190826190057-c7b8b68b1456 h1:ng0gs1AKnRRuEMZoTLLlbOd+C17zUDepwGQBb/n+JVg= golang.org/x/sys v0.0.0-20190826190057-c7b8b68b1456/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20190916202348-b4ddaad3f8a3/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20190922100055-0a153f010e69/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= @@ -1405,7 +1254,6 @@ golang.org/x/sys v0.0.0-20200116001909-b77594299b42/go.mod h1:h1NjWce9XRLGQEsW7w golang.org/x/sys v0.0.0-20200122134326-e047566fdf82/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20200202164722-d101bd2416d5/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20200212091648-12a6c2dcc1e4/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20200223170610-d5e6a3e2c0ae h1:/WDfKMnPU+m5M4xB+6x4kaepxRw6jWvR5iDRdvjHgy8= golang.org/x/sys v0.0.0-20200223170610-d5e6a3e2c0ae/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20200302150141-5c8b2ff67527/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20200323222414-85ca7c5b95cd/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= @@ -1413,21 +1261,20 @@ golang.org/x/sys v0.0.0-20200331124033-c3d80250170d/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/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20200515095857-1151b9dac4a9/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20200523222454-059865788121 h1:rITEj+UZHYC927n8GT97eC3zrpzXdb/voyeOuVKS46o= golang.org/x/sys v0.0.0-20200523222454-059865788121/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20201024232916-9f70ab9862d5/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20201201145000-ef89a241ccb3 h1:kzM6+9dur93BcC2kVlYl34cHU+TYZLanmpSJHVMmL64= +golang.org/x/sys v0.0.0-20201201145000-ef89a241ccb3/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.0.0-20170915090833-1cbadb444a80/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.2 h1:tW2bmiBqwgJj/UpqtC8EpXEZVYOwU0yG4iWbprSVAcs= golang.org/x/text v0.3.2/go.mod h1:bEr9sfX3Q8Zfm5fL9x+3itogRgK3+ptLWKqgva+5dAk= golang.org/x/text v0.3.3 h1:cokOdA+Jmi5PJGXLlLllQSgYigAEfHXJAERHVMaCc2k= golang.org/x/text v0.3.3/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ= golang.org/x/time v0.0.0-20180412165947-fbb02b2291d2/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ= -golang.org/x/time v0.0.0-20181108054448-85acf8d2951c h1:fqgJT0MGcGpPgpWU7VRdRjuArfcOvC4AoJmILihzhDg= 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= golang.org/x/time v0.0.0-20191024005414-555d28b269f0/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ= golang.org/x/time v0.0.0-20200416051211-89c76fbcd5d1 h1:NusfzzA6yGQ+ua51ck7E3omNUX/JuqbFSaRGqU8CcLI= @@ -1505,14 +1352,12 @@ golang.org/x/tools v0.0.0-20200501065659-ab2804fb9c9d/go.mod h1:EkVYQZoAsY45+roY golang.org/x/tools v0.0.0-20200502202811-ed308ab3e770/go.mod h1:EkVYQZoAsY45+roYkvgYkIh4xh/qjgUK9TdY2XT94GE= golang.org/x/tools v0.0.0-20200512131952-2bc93b1c0c88/go.mod h1:EkVYQZoAsY45+roYkvgYkIh4xh/qjgUK9TdY2XT94GE= golang.org/x/tools v0.0.0-20200515010526-7d3b6ebf133d/go.mod h1:EkVYQZoAsY45+roYkvgYkIh4xh/qjgUK9TdY2XT94GE= -golang.org/x/tools v0.0.0-20200527183253-8e7acdbce89d h1:SR+e35rACZFBohNb4Om1ibX6N3iO0FtdbwqGSuD9dBU= golang.org/x/tools v0.0.0-20200527183253-8e7acdbce89d/go.mod h1:EkVYQZoAsY45+roYkvgYkIh4xh/qjgUK9TdY2XT94GE= golang.org/x/tools v0.0.0-20200618134242-20370b0cb4b2/go.mod h1:EkVYQZoAsY45+roYkvgYkIh4xh/qjgUK9TdY2XT94GE= golang.org/x/tools v0.0.0-20200701151220-7cb253f4c4f8/go.mod h1:EkVYQZoAsY45+roYkvgYkIh4xh/qjgUK9TdY2XT94GE= golang.org/x/tools v0.0.0-20200713011307-fd294ab11aed h1:+qzWo37K31KxduIYaBeMqJ8MUOyTayOQKpH9aDPLMSY= golang.org/x/tools v0.0.0-20200713011307-fd294ab11aed/go.mod h1:njjCfa9FT2d7l9Bc6FUM5FLjQPp3cFF28FI3qnDFljA= golang.org/x/xerrors v0.0.0-20190717185122-a985d3407aa7/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= -golang.org/x/xerrors v0.0.0-20191011141410-1b5146add898 h1:/atklqdjdhuosWIl6AIbOeHJjicWYPqR9bpxqxYG2pA= golang.org/x/xerrors v0.0.0-20191011141410-1b5146add898/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= golang.org/x/xerrors v0.0.0-20191204190536-9bdfabe68543 h1:E7g+9GITq07hpfrRu66IVDexMakfv52eLZ2CXBWiKr4= golang.org/x/xerrors v0.0.0-20191204190536-9bdfabe68543/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= @@ -1528,7 +1373,6 @@ google.golang.org/api v0.6.0/go.mod h1:btoxGiFvQNVUZQ8W08zLtrVS08CNpINPEfxXxgJL1 google.golang.org/api v0.6.1-0.20190607001116-5213b8090861/go.mod h1:btoxGiFvQNVUZQ8W08zLtrVS08CNpINPEfxXxgJL1Q4= google.golang.org/api v0.7.0/go.mod h1:WtwebWUNSVBH/HAw79HIFXZNqEvBhG+Ra+ax0hx3E3M= google.golang.org/api v0.8.0/go.mod h1:o4eAsZoiT+ibD93RtjEohWalFOjRDx6CVaqeizhEnKg= -google.golang.org/api v0.9.0 h1:jbyannxz0XFD3zdjgrSUsaJbgpH4eTrkdhRChkHPfO8= google.golang.org/api v0.9.0/go.mod h1:o4eAsZoiT+ibD93RtjEohWalFOjRDx6CVaqeizhEnKg= google.golang.org/api v0.13.0/go.mod h1:iLdEw5Ide6rF15KTC1Kkl0iskquN2gFfn9o9XIsbkAI= google.golang.org/api v0.14.0/go.mod h1:iLdEw5Ide6rF15KTC1Kkl0iskquN2gFfn9o9XIsbkAI= @@ -1539,7 +1383,6 @@ google.golang.org/api v0.19.0/go.mod h1:BwFmGc8tA3vsd7r/7kR8DY7iEEGSU04BFxCo5jP/ google.golang.org/api v0.20.0/go.mod h1:BwFmGc8tA3vsd7r/7kR8DY7iEEGSU04BFxCo5jP/sfE= google.golang.org/api v0.22.0/go.mod h1:BwFmGc8tA3vsd7r/7kR8DY7iEEGSU04BFxCo5jP/sfE= google.golang.org/api v0.24.0/go.mod h1:lIXQywCXRcnZPGlsd8NbLnOjtAoL6em04bJ9+z0MncE= -google.golang.org/api v0.25.0 h1:LodzhlzZEUfhXzNUMIfVlf9Gr6Ua5MMtoFWh7+f47qA= google.golang.org/api v0.25.0/go.mod h1:lIXQywCXRcnZPGlsd8NbLnOjtAoL6em04bJ9+z0MncE= google.golang.org/api v0.28.0/go.mod h1:lIXQywCXRcnZPGlsd8NbLnOjtAoL6em04bJ9+z0MncE= google.golang.org/api v0.29.0 h1:BaiDisFir8O4IJxvAabCGGkQ6yCJegNQqSVoYUNAnbk= @@ -1547,9 +1390,7 @@ google.golang.org/api v0.29.0/go.mod h1:Lcubydp8VUV7KeIHD9z2Bys/sm/vGKnG1UHuDBSr google.golang.org/appengine v1.1.0/go.mod h1:EbEs0AVv82hx2wNQdGPgUI5lhzA/G0D9YwlJXL52JkM= google.golang.org/appengine v1.3.0/go.mod h1:xpcJRLb0r/rnEns0DIKYYv+WjYCduHsrkT7/EB5XEv4= google.golang.org/appengine v1.4.0/go.mod h1:xpcJRLb0r/rnEns0DIKYYv+WjYCduHsrkT7/EB5XEv4= -google.golang.org/appengine v1.5.0 h1:KxkO13IPW4Lslp2bz+KHP2E3gtFlrIGNThxkZQ3g+4c= google.golang.org/appengine v1.5.0/go.mod h1:xpcJRLb0r/rnEns0DIKYYv+WjYCduHsrkT7/EB5XEv4= -google.golang.org/appengine v1.6.1 h1:QzqyMA1tlu6CgqCDUtU9V+ZKhLFT2dkJuANu5QaxI3I= google.golang.org/appengine v1.6.1/go.mod h1:i06prIuMbXzDqacNJfV5OdTW448YApPu5ww/cMBSeb0= google.golang.org/appengine v1.6.5/go.mod h1:8WjMMxjGQR8xUklV/ARdw2HLXBOI7O7uCIDZVag1xfc= google.golang.org/appengine v1.6.6 h1:lMO5rYAqUxkmaj76jAkRUvt5JZgFymx/+Q5Mzfivuhc= @@ -1563,7 +1404,6 @@ google.golang.org/genproto v0.0.0-20190508193815-b515fa19cec8/go.mod h1:VzzqZJRn google.golang.org/genproto v0.0.0-20190530194941-fb225487d101/go.mod h1:z3L6/3dTEVtUr6QSP8miRzeRqwQOioJ9I66odjN4I7s= google.golang.org/genproto v0.0.0-20190620144150-6af8c5fc6601/go.mod h1:z3L6/3dTEVtUr6QSP8miRzeRqwQOioJ9I66odjN4I7s= google.golang.org/genproto v0.0.0-20190801165951-fa694d86fc64/go.mod h1:DMBHOl98Agz4BDEuKkezgsaosCRResVns1a3J2ZsMNc= -google.golang.org/genproto v0.0.0-20190819201941-24fa4b261c55 h1:gSJIx1SDwno+2ElGhA4+qG2zF97qiUzTM+rQ0klBOcE= google.golang.org/genproto v0.0.0-20190819201941-24fa4b261c55/go.mod h1:DMBHOl98Agz4BDEuKkezgsaosCRResVns1a3J2ZsMNc= google.golang.org/genproto v0.0.0-20190911173649-1774047e7e51/go.mod h1:IbNlFCBrqXvoKpeg0TB2l7cyZUmoaFKYIwrEpbDKLA8= google.golang.org/genproto v0.0.0-20191108220845-16a3f7862a1a/go.mod h1:n3cpQtvxv34hfy77yVDNjmbRyujviMdxYliBSkLhpCc= @@ -1583,7 +1423,6 @@ google.golang.org/genproto v0.0.0-20200430143042-b979b6f78d84/go.mod h1:55QSHmfG google.golang.org/genproto v0.0.0-20200511104702-f5ebc3bea380/go.mod h1:55QSHmfGQM9UVYDPBsyGGes0y52j32PQ3BqQfXhyH3c= google.golang.org/genproto v0.0.0-20200515170657-fc4c6c6a6587/go.mod h1:YsZOwe1myG/8QRHRsmBRE1LrgQY60beZKjly0O1fX9U= google.golang.org/genproto v0.0.0-20200526211855-cb27e3aa2013/go.mod h1:NbSheEEYHJ7i3ixzK3sjbqSGDJWnxyFXZblF3eUsNvo= -google.golang.org/genproto v0.0.0-20200527145253-8367513e4ece h1:1YM0uhfumvoDu9sx8+RyWwTI63zoCQvI23IYFRlvte0= google.golang.org/genproto v0.0.0-20200527145253-8367513e4ece/go.mod h1:jDfRM7FcilCzHH/e9qn6dsT145K34l5v+OpcnNgKAAA= google.golang.org/genproto v0.0.0-20200605102947-12044bf5ea91/go.mod h1:jDfRM7FcilCzHH/e9qn6dsT145K34l5v+OpcnNgKAAA= google.golang.org/genproto v0.0.0-20200618031413-b414f8b61790/go.mod h1:jDfRM7FcilCzHH/e9qn6dsT145K34l5v+OpcnNgKAAA= @@ -1593,18 +1432,14 @@ google.golang.org/genproto v0.0.0-20200715011427-11fb19a81f2c/go.mod h1:FWY/as6D google.golang.org/grpc v1.19.0/go.mod h1:mqu4LbDTu4XGKhr4mRzUsmM4RtVoemTSY81AxZiDr8c= google.golang.org/grpc v1.20.1/go.mod h1:10oTOabMzJvdu6/UiuZezV6QK5dSlG84ov/aaiqXj38= google.golang.org/grpc v1.21.0/go.mod h1:oYelfM1adQP15Ek0mdvEgi9Df8B9CZIaU1084ijfRaM= -google.golang.org/grpc v1.21.1 h1:j6XxA85m/6txkUCHvzlV5f+HBNl/1r5cZ2A/3IEFOO8= google.golang.org/grpc v1.21.1/go.mod h1:oYelfM1adQP15Ek0mdvEgi9Df8B9CZIaU1084ijfRaM= google.golang.org/grpc v1.23.0/go.mod h1:Y5yQAOtifL1yxbo5wqy6BxZv8vAUGQwXBOALyacEbxg= -google.golang.org/grpc v1.23.1 h1:q4XQuHFC6I28BKZpo6IYyb3mNO+l7lSOxRuYTCiDfXk= 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 h1:2dTRdpdFEEhJYQD8EMLB61nnrzSCTbG38PhqdhvOltg= google.golang.org/grpc v1.26.0/go.mod h1:qbnxyOmOxrQa7FizSgH+ReBfzJrCY1pSN7KXBS8abTk= google.golang.org/grpc v1.27.0/go.mod h1:qbnxyOmOxrQa7FizSgH+ReBfzJrCY1pSN7KXBS8abTk= google.golang.org/grpc v1.27.1/go.mod h1:qbnxyOmOxrQa7FizSgH+ReBfzJrCY1pSN7KXBS8abTk= google.golang.org/grpc v1.28.0/go.mod h1:rpkK4SK4GF4Ach/+MFLZUBavHOvF2JJB5uozKKal+60= -google.golang.org/grpc v1.29.1 h1:EC2SB8S04d2r73uptxphDSUG+kTKVgjRPF+N3xpxRB4= google.golang.org/grpc v1.29.1/go.mod h1:itym6AZVZYACWQqET3MqgPpjcuV5QH3BxFS3IjizoKk= google.golang.org/grpc v1.30.0/go.mod h1:N36X2cJ7JwdamYAgDz+s+rVMFjt3numwzf/HckM8pak= google.golang.org/grpc v1.32.0 h1:zWTV+LMdc3kaiJMSTOFz2UgSBgx8RNQoTGiZu3fR9S0= @@ -1617,30 +1452,22 @@ google.golang.org/protobuf v1.21.0/go.mod h1:47Nbq4nVaFHyn7ilMalzfO3qCViNmqZ2kzi google.golang.org/protobuf v1.22.0/go.mod h1:EGpADcykh3NcUnDUJcl1+ZksZNG86OlYog2l/sGQquU= google.golang.org/protobuf v1.23.0/go.mod h1:EGpADcykh3NcUnDUJcl1+ZksZNG86OlYog2l/sGQquU= google.golang.org/protobuf v1.23.1-0.20200526195155-81db48ad09cc/go.mod h1:EGpADcykh3NcUnDUJcl1+ZksZNG86OlYog2l/sGQquU= -google.golang.org/protobuf v1.24.0 h1:UhZDfRO8JRQru4/+LlLE0BRKGF8L+PICnvYZmx/fEGA= google.golang.org/protobuf v1.24.0/go.mod h1:r/3tXBNzIEhYS9I1OUVjXDlt8tc493IdKGjtUeSXeh4= google.golang.org/protobuf v1.25.0 h1:Ejskq+SyPohKW+1uil0JJMtmHCgJPJ/qWTxr8qp+R4c= google.golang.org/protobuf v1.25.0/go.mod h1:9JNX74DMeImyA3h4bdi1ymwjUzf21/xIlbajtzgsN7c= -gopkg.in/airbrake/gobrake.v2 v2.0.9 h1:7z2uVWwn7oVeeugY1DtlPAy5H+KYgB1KeKTnqjNatLo= gopkg.in/airbrake/gobrake.v2 v2.0.9/go.mod h1:/h5ZAUhDkGaJfjzjKLSjv6zCL6O0LLBxU4K+aSYdM/U= -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/check.v1 v0.0.0-20161208181325-20d25e280405 h1:yhCVgyC4o1eVCa2tZl7eS0r+SDo693bJlVdllGtEeKM= gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= -gopkg.in/check.v1 v1.0.0-20180628173108-788fd7840127 h1:qIbj1fsPNlZgppZ+VLlY7N33q108Sa+fhmuc+sWQYwY= gopkg.in/check.v1 v1.0.0-20180628173108-788fd7840127/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= -gopkg.in/check.v1 v1.0.0-20190902080502-41f04d3bba15 h1:YR8cESwS4TdDjEe65xsg0ogRM/Nc3DYOhEAlW+xobZo= gopkg.in/check.v1 v1.0.0-20190902080502-41f04d3bba15/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= gopkg.in/check.v1 v1.0.0-20200227125254-8fa46927fb4f h1:BLraFXnmrev5lT+xlilqcH8XK9/i0At2xKjWk4p6zsU= gopkg.in/check.v1 v1.0.0-20200227125254-8fa46927fb4f/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= gopkg.in/cheggaaa/pb.v1 v1.0.25/go.mod h1:V/YB90LKu/1FcN3WVnfiiE5oMCibMjukxqG/qStrOgw= -gopkg.in/cheggaaa/pb.v1 v1.0.27 h1:kJdccidYzt3CaHD1crCFTS1hxyhSi059NhOFUf03YFo= gopkg.in/cheggaaa/pb.v1 v1.0.27/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= gopkg.in/fsnotify.v1 v1.4.7/go.mod h1:Tz8NjZHkW78fSQdbUxIjBTcgA1z1m8ZHf0WmKUhAMys= gopkg.in/gcfg.v1 v1.2.0/go.mod h1:yesOnuUOFQAhST5vPY4nbZsb/huCgGGXlipJsBn0b3o= -gopkg.in/gemnasium/logrus-airbrake-hook.v2 v2.1.2 h1:OAj3g0cR6Dx/R07QgQe8wkA9RNjB2u4i700xBkIT4e0= gopkg.in/gemnasium/logrus-airbrake-hook.v2 v2.1.2/go.mod h1:Xk6kEKp8OKb+X14hQBKWaSkCsqBpgog8nAV2xsGOxlo= gopkg.in/inf.v0 v0.9.1 h1:73M5CoZyi3ZLMOyDlQh031Cx6N9NDJ2Vvfl76EDAgDc= gopkg.in/inf.v0 v0.9.1/go.mod h1:cWUDdTG/fYaXco+Dcufb5Vnc6Gp2YChqWtbxRZE0mXw= @@ -1658,13 +1485,10 @@ gopkg.in/tomb.v1 v1.0.0-20141024135613-dd632973f1e7/go.mod h1:dt/ZhP58zS4L8KSrWD gopkg.in/warnings.v0 v0.1.1/go.mod h1:jksf8JmL6Qr/oQM2OXTHunEvvTAsrWBLb6OOjuVWRNI= gopkg.in/yaml.v2 v2.0.0-20170812160011-eb3733d160e7/go.mod h1:JAlM8MvJe8wmxCU4Bli9HhUf9+ttbYbLASfIpnQbh74= gopkg.in/yaml.v2 v2.2.1/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI= -gopkg.in/yaml.v2 v2.2.2 h1:ZCJp+EgiOT7lHqUV2J862kp8Qj64Jo6az82+3Td9dZw= gopkg.in/yaml.v2 v2.2.2/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI= -gopkg.in/yaml.v2 v2.2.4 h1:/eiJrUcujPVeJ3xlSWaiNi3uSVmDGBK1pDHUHAnao1I= 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/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= gopkg.in/yaml.v2 v2.3.0 h1:clyUAQHOM3G0M3f5vQj7LuJrETvjVot3Z5el9nffUtU= gopkg.in/yaml.v2 v2.3.0/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI= @@ -1684,17 +1508,13 @@ honnef.co/go/tools v0.0.0-20190523083050-ea95bdfd59fc/go.mod h1:rf3lG4BRIbNafJWh honnef.co/go/tools v0.0.1-2019.2.2/go.mod h1:a3bituU0lyd329TUQxRnasdCoJDkEUEAqEt0JzvZhAg= honnef.co/go/tools v0.0.1-2019.2.3/go.mod h1:a3bituU0lyd329TUQxRnasdCoJDkEUEAqEt0JzvZhAg= honnef.co/go/tools v0.0.1-2020.1.3/go.mod h1:X/FiERA/W4tHapMX5mGpAtMSVEeEUOyHaw9vFzvIQ3k= -honnef.co/go/tools v0.0.1-2020.1.4 h1:UoveltGrhghAA7ePc+e+QYDHXrBps2PqFZiHkGR/xK8= honnef.co/go/tools v0.0.1-2020.1.4/go.mod h1:X/FiERA/W4tHapMX5mGpAtMSVEeEUOyHaw9vFzvIQ3k= k8s.io/api v0.17.3 h1:XAm3PZp3wnEdzekNkcmj/9Y1zdmQYJ1I4GKSBBZ8aG0= k8s.io/api v0.17.3/go.mod h1:YZ0OTkuw7ipbe305fMpIdf3GLXZKRigjtZaV5gzC2J0= -k8s.io/apiextensions-apiserver v0.17.3 h1:WDZWkPcbgvchEdDd7ysL21GGPx3UKZQLDZXEkevT6n4= k8s.io/apiextensions-apiserver v0.17.3/go.mod h1:CJbCyMfkKftAd/X/V6OTHYhVn7zXnDdnkUjS1h0GTeY= k8s.io/apimachinery v0.17.3 h1:f+uZV6rm4/tHE7xXgLyToprg6xWairaClGVkm2t8omg= k8s.io/apimachinery v0.17.3/go.mod h1:gxLnyZcGNdZTCLnq3fgzyg2A5BVCHTNDFrw8AmuJ+0g= -k8s.io/apiserver v0.17.3 h1:faZbSuFtJ4dx09vctKZGHms/7bp3qFtbqb10Swswqfs= k8s.io/apiserver v0.17.3/go.mod h1:iJtsPpu1ZpEnHaNawpSV0nYTGBhhX2dUlnn7/QS7QiY= -k8s.io/cli-runtime v0.17.3 h1:0ZlDdJgJBKsu77trRUynNiWsRuAvAVPBNaQfnt/1qtc= k8s.io/cli-runtime v0.17.3/go.mod h1:X7idckYphH4SZflgNpOOViSxetiMj6xI0viMAjM81TA= k8s.io/client-go v0.17.3 h1:deUna1Ksx05XeESH6XGCyONNFfiQmDdqeqUvicvP6nU= k8s.io/client-go v0.17.3/go.mod h1:cLXlTMtWHkuK4tD360KpWz2gG2KtdWEr/OT02i3emRQ= @@ -1704,11 +1524,9 @@ k8s.io/cluster-bootstrap v0.17.3/go.mod h1:ujIYnCKnxY/MecpgPx9WgiYCVCFvici6tVIfI k8s.io/code-generator v0.17.3/go.mod h1:l8BLVwASXQZTo2xamW5mQNFCe1XPiAesVq7Y1t7PiQQ= k8s.io/component-base v0.17.3 h1:hQzTSshY14aLSR6WGIYvmw+w+u6V4d+iDR2iDGMrlUg= k8s.io/component-base v0.17.3/go.mod h1:GeQf4BrgelWm64PXkIXiPh/XS0hnO42d9gx9BtbZRp8= -k8s.io/cri-api v0.17.3 h1:jvjVvBqgZq3WcaPq07n0h5h9eCnIaR4dhKyHSoZG8Y8= k8s.io/cri-api v0.17.3/go.mod h1:X1sbHmuXhwaHs9xxYffLqJogVsnI+f6cPRcgPel7ywM= k8s.io/csi-translation-lib v0.17.3/go.mod h1:FBya8XvGIqDm2/3evLQNxaFXqv/C2UcZa5JgJt6/qqY= k8s.io/gengo v0.0.0-20190128074634-0689ccc1d7d6/go.mod h1:ezvh/TsK7cY6rbqRK0oQQ8IAqLxYwwyPxAX1Pzy0ii0= -k8s.io/gengo v0.0.0-20190822140433-26a664648505 h1:ZY6yclUKVbZ+SdWnkfY+Je5vrMpKOxmGeKRbsXVmqYM= k8s.io/gengo v0.0.0-20190822140433-26a664648505/go.mod h1:ezvh/TsK7cY6rbqRK0oQQ8IAqLxYwwyPxAX1Pzy0ii0= k8s.io/gengo v0.0.0-20200114144118-36b2048a9120/go.mod h1:ezvh/TsK7cY6rbqRK0oQQ8IAqLxYwwyPxAX1Pzy0ii0= k8s.io/heapster v1.2.0-beta.1/go.mod h1:h1uhptVXMwC8xtZBYsPXKVi8fpdlYkTs6k949KozGrM= @@ -1720,26 +1538,21 @@ k8s.io/klog/v2 v2.4.0 h1:7+X0fUguPyrKEC4WjH8iGDg3laWgMo5tMnRTIGTTxGQ= k8s.io/klog/v2 v2.4.0/go.mod h1:Od+F08eJP+W3HUb4pSrPpgp9DGU4GzlpG/TmITuYh/Y= k8s.io/kube-aggregator v0.17.3/go.mod h1:1dMwMFQbmH76RKF0614L7dNenMl3dwnUJuOOyZ3GMXA= k8s.io/kube-controller-manager v0.17.3/go.mod h1:22B/TsgVviuCVuNwUrqgyTi5D4AYjMFaK9c8h1oonkY= -k8s.io/kube-openapi v0.0.0-20191107075043-30be4d16710a h1:UcxjrRMyNx/i/y8G7kPvLyy7rfbeuf1PYyBf973pgyU= k8s.io/kube-openapi v0.0.0-20191107075043-30be4d16710a/go.mod h1:1TqjTSzOxsLGIKfj0lK8EeCP7K1iUG65v09OM0/WG5E= 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/kube-proxy v0.17.3 h1:1sbA5umSKcTkkRo9k0igoEkearZ8bFnzGnzDlbhDkSo= k8s.io/kube-proxy v0.17.3/go.mod h1:ds8R8bUYPWtQlspC47Sff7o5aQhWDsv6jpQJATDuqaQ= k8s.io/kube-scheduler v0.17.3/go.mod h1:36HgrrPqzK+rOLTRtDG//b89KjrAZqFI4PXOpdH351M= k8s.io/kubectl v0.17.3 h1:9HHYj07kuFkM+sMJMOyQX29CKWq4lvKAG1UIPxNPMQ4= k8s.io/kubectl v0.17.3/go.mod h1:NUn4IBY7f7yCMwSop2HCXlw/MVYP4HJBiUmOR3n9w28= -k8s.io/kubelet v0.17.3 h1:e6oo26NusXf6i7Pp6i5tWXT+Z/oQW0XzxiWxa5pBgw0= k8s.io/kubelet v0.17.3/go.mod h1:Nh8owUHZcUXtnDAtmGnip36Nw+X6c4rbmDQlVyIhwMQ= k8s.io/kubernetes v1.18.5 h1:sLbTilDIc02vNzrTORdW2YakzrPCOtmffaUXCwQHsRc= k8s.io/kubernetes v1.18.5/go.mod h1:Efg82S+Ti02A/Mww53bxroc7IgzX2bgPsf6hT8gAs3M= k8s.io/legacy-cloud-providers v0.17.3/go.mod h1:ujZML5v8efVQxiXXTG+nck7SjP8KhMRjUYNIsoSkYI0= -k8s.io/metrics v0.17.3 h1:IqXkNK+5E3vnobFD923Mn1QJEt3fb6+sK0wIjtBzOvw= k8s.io/metrics v0.17.3/go.mod h1:HEJGy1fhHOjHggW9rMDBJBD3YuGroH3Y1pnIRw9FFaI= k8s.io/repo-infra v0.0.1-alpha.1/go.mod h1:wO1t9WaB99V80ljbeENTnayuEEwNZt7gECYh/CEyOJ8= k8s.io/sample-apiserver v0.17.3/go.mod h1:cn/rvFIttGNqy1v88B5ZlDAbyyqDOoF7JHSwPiqNCNQ= k8s.io/system-validators v1.0.4/go.mod h1:HgSgTg4NAGNoYYjKsUyk52gdNi2PVDswQ9Iyn66R7NI= -k8s.io/utils v0.0.0-20191114184206-e782cd3c129f h1:GiPwtSzdP43eI1hpPCbROQCCIgCuiMMNF8YUVLF3vJo= k8s.io/utils v0.0.0-20191114184206-e782cd3c129f/go.mod h1:sZAwmy6armz5eXlNoLmJcl4F1QuKu7sr+mFQ0byX7Ew= k8s.io/utils v0.0.0-20200124190032-861946025e34/go.mod h1:sZAwmy6armz5eXlNoLmJcl4F1QuKu7sr+mFQ0byX7Ew= k8s.io/utils v0.0.0-20200324210504-a9aa75ae1b89 h1:d4vVOjXm687F1iLSP2q3lyPPuyvTUt3aVoBpi2DqRsU= @@ -1759,7 +1572,6 @@ 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/kustomize v2.0.3+incompatible h1:JUufWFNlI44MdtnjUqVnvh29rR37PQFzPbLXqhyOyX0= sigs.k8s.io/kustomize v2.0.3+incompatible/go.mod h1:MkjgH3RdOWrievjo6c9T245dYlB5QeXV4WCbnt/PEpU= sigs.k8s.io/sig-storage-lib-external-provisioner v4.0.0+incompatible h1:qV3eFdgCp7Cp/ORjkJI9VBBEOntT+z385jLqdBtmgHA= sigs.k8s.io/sig-storage-lib-external-provisioner v4.0.0+incompatible/go.mod h1:qhqLyNwJC49PoUalmtzYb4s9fT8HOMBTLbTY1QoVOqI= @@ -1768,11 +1580,9 @@ sigs.k8s.io/sig-storage-lib-external-provisioner/v5 v5.0.0/go.mod h1:PjY3tkpM8bi sigs.k8s.io/structured-merge-diff v0.0.0-20190525122527-15d366b2352e/go.mod h1:wWxsB5ozmmv/SG7nM11ayaAW51xMvak/t1r0CSlcokI= sigs.k8s.io/structured-merge-diff v1.0.1-0.20191108220359-b1b620dd3f06/go.mod h1:/ULNhyfzRopfcjskuui0cTITekDduZ7ycKN3oUT9R18= sigs.k8s.io/structured-merge-diff/v3 v3.0.0-20200116222232-67a7b8c61874/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= sourcegraph.com/sqs/pbtypes v0.0.0-20180604144634-d3ebe8f20ae4/go.mod h1:ketZ/q3QxT9HOBeFhu6RdvsftgpsbFHBF5Cas6cDKZ0= sourcegraph.com/sqs/pbtypes v1.0.0/go.mod h1:3AciMUv4qUuRHRHhOG4TZOB+72GdPVz5k+c648qsFS4= -vbom.ml/util v0.0.0-20160121211510-db5cfe13f5cc h1:MksmcCZQWAQJCTA5T0jgI/0sJ51AVm4Z41MrmfczEoc= vbom.ml/util v0.0.0-20160121211510-db5cfe13f5cc/go.mod h1:so/NYdZXCz+E3ZpW0uAoCj6uzU2+8OWDFv/HxUSs7kI= diff --git a/pkg/minikube/machine/info.go b/pkg/minikube/machine/info.go index d2f3066a7e..bc507d9d0b 100644 --- a/pkg/minikube/machine/info.go +++ b/pkg/minikube/machine/info.go @@ -21,9 +21,9 @@ import ( "os/exec" "github.com/docker/machine/libmachine/provision" - "github.com/shirou/gopsutil/cpu" - "github.com/shirou/gopsutil/disk" - "github.com/shirou/gopsutil/mem" + "github.com/shirou/gopsutil/v3/cpu" + "github.com/shirou/gopsutil/v3/disk" + "github.com/shirou/gopsutil/v3/mem" "k8s.io/klog/v2" "k8s.io/minikube/pkg/minikube/command" "k8s.io/minikube/pkg/minikube/out" diff --git a/pkg/minikube/registry/drvs/docker/docker.go b/pkg/minikube/registry/drvs/docker/docker.go index df2771e804..06964354ae 100644 --- a/pkg/minikube/registry/drvs/docker/docker.go +++ b/pkg/minikube/registry/drvs/docker/docker.go @@ -83,10 +83,10 @@ func configure(cc config.ClusterConfig, n config.Node) (interface{}, error) { } func status() registry.State { - if runtime.GOARCH != "amd64" { - return registry.State{Error: fmt.Errorf("docker driver is not supported on %q systems yet", runtime.GOARCH), Installed: false, Healthy: false, Fix: "Try other drivers", Doc: docURL} - } - + /* if runtime.GOARCH != "amd64" { + return registry.State{Error: fmt.Errorf("docker driver is not supported on %q systems yet", runtime.GOARCH), Installed: false, Healthy: false, Fix: "Try other drivers", Doc: docURL} + } + */ _, err := exec.LookPath(oci.Docker) if err != nil { return registry.State{Error: err, Installed: false, Healthy: false, Fix: "Install Docker", Doc: docURL} diff --git a/test/integration/helpers_test.go b/test/integration/helpers_test.go index c1bbae42c3..74bfdac5ed 100644 --- a/test/integration/helpers_test.go +++ b/test/integration/helpers_test.go @@ -35,7 +35,7 @@ import ( "time" "github.com/docker/machine/libmachine/state" - "github.com/shirou/gopsutil/process" + "github.com/shirou/gopsutil/v3/process" core "k8s.io/api/core/v1" meta "k8s.io/apimachinery/pkg/apis/meta/v1" "k8s.io/apimachinery/pkg/util/wait" From 11ea5b2f1db1e3e26191068685b7052baa2f1428 Mon Sep 17 00:00:00 2001 From: Thomas Stromberg Date: Fri, 8 Jan 2021 16:03:22 -0800 Subject: [PATCH 40/91] Remove debugging code --- deploy/kicbase/entrypoint | 4 ++-- pkg/minikube/registry/drvs/docker/docker.go | 4 ---- 2 files changed, 2 insertions(+), 6 deletions(-) diff --git a/deploy/kicbase/entrypoint b/deploy/kicbase/entrypoint index b8331079bb..0ff55d7802 100755 --- a/deploy/kicbase/entrypoint +++ b/deploy/kicbase/entrypoint @@ -14,7 +14,7 @@ # See the License for the specific language governing permissions and # limitations under the License. -# set -o errexit +set -o errexit set -o nounset set -o pipefail set -x @@ -283,7 +283,7 @@ fix_product_uuid select_iptables enable_network_magic -echo "WE HAVE SUCEEDED" +echo "entrypoint completed: $(uname -a)" # we want the command (expected to be systemd) to be PID1, so exec to it exec "$@" diff --git a/pkg/minikube/registry/drvs/docker/docker.go b/pkg/minikube/registry/drvs/docker/docker.go index 5cbebab962..4bf2ad5c1a 100644 --- a/pkg/minikube/registry/drvs/docker/docker.go +++ b/pkg/minikube/registry/drvs/docker/docker.go @@ -84,10 +84,6 @@ func configure(cc config.ClusterConfig, n config.Node) (interface{}, error) { } func status() registry.State { - /* if runtime.GOARCH != "amd64" { - return registry.State{Error: fmt.Errorf("docker driver is not supported on %q systems yet", runtime.GOARCH), Installed: false, Healthy: false, Fix: "Try other drivers", Doc: docURL} - } - */ _, err := exec.LookPath(oci.Docker) if err != nil { return registry.State{Error: err, Installed: false, Healthy: false, Fix: "Install Docker", Doc: docURL} From b2121eae39c44d52c6d45aea5e866d59b3facb6f Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Anders=20F=20Bj=C3=B6rklund?= Date: Sat, 9 Jan 2021 14:31:58 +0100 Subject: [PATCH 41/91] Rename the generic driver to the ssh driver Now that we have forked the machine driver --- cmd/minikube/cmd/delete.go | 2 +- cmd/minikube/cmd/start.go | 2 +- cmd/minikube/cmd/start_flags.go | 26 +++++++++---------- .../{generic/generic.go => ssh/ssh.go} | 10 +++---- pkg/minikube/cluster/ip.go | 2 +- pkg/minikube/config/types.go | 8 +++--- pkg/minikube/driver/driver.go | 14 +++++----- pkg/minikube/driver/driver_darwin.go | 2 +- pkg/minikube/driver/driver_linux.go | 2 +- pkg/minikube/driver/driver_test.go | 2 +- pkg/minikube/driver/driver_windows.go | 2 +- pkg/minikube/machine/machine.go | 2 +- pkg/minikube/machine/start.go | 12 ++++----- pkg/minikube/registry/drvs/init.go | 2 +- .../drvs/{generic/generic.go => ssh/ssh.go} | 21 ++++++++------- pkg/minikube/style/style.go | 2 +- pkg/minikube/style/style_enum.go | 2 +- site/content/en/docs/commands/start.md | 8 +++--- site/content/en/docs/drivers/generic.md | 22 ---------------- .../{generic_usage.inc => ssh_usage.inc} | 4 +-- site/content/en/docs/drivers/ssh.md | 22 ++++++++++++++++ 21 files changed, 86 insertions(+), 83 deletions(-) rename pkg/drivers/{generic/generic.go => ssh/ssh.go} (96%) rename pkg/minikube/registry/drvs/{generic/generic.go => ssh/ssh.go} (80%) delete mode 100644 site/content/en/docs/drivers/generic.md rename site/content/en/docs/drivers/includes/{generic_usage.inc => ssh_usage.inc} (77%) create mode 100644 site/content/en/docs/drivers/ssh.md diff --git a/cmd/minikube/cmd/delete.go b/cmd/minikube/cmd/delete.go index 846d03d294..b343f307cd 100644 --- a/cmd/minikube/cmd/delete.go +++ b/cmd/minikube/cmd/delete.go @@ -309,7 +309,7 @@ func deleteProfile(profile *config.Profile) error { return DeletionError{Err: delErr, Errtype: MissingProfile} } - if err == nil && (driver.BareMetal(cc.Driver) || driver.IsGeneric(cc.Driver)) { + if err == nil && (driver.BareMetal(cc.Driver) || driver.IsSSH(cc.Driver)) { if err := uninstallKubernetes(api, *cc, cc.Nodes[0], viper.GetString(cmdcfg.Bootstrapper)); err != nil { deletionError, ok := err.(DeletionError) if ok { diff --git a/cmd/minikube/cmd/start.go b/cmd/minikube/cmd/start.go index 8dfe887f52..81d00c24ff 100644 --- a/cmd/minikube/cmd/start.go +++ b/cmd/minikube/cmd/start.go @@ -306,7 +306,7 @@ func provisionWithDriver(cmd *cobra.Command, ds registry.DriverState, existing * os.Exit(0) } - if driver.IsVM(driverName) && !driver.IsGeneric(driverName) { + if driver.IsVM(driverName) && !driver.IsSSH(driverName) { url, err := download.ISO(viper.GetStringSlice(isoURL), cmd.Flags().Changed(isoURL)) if err != nil { return node.Starter{}, errors.Wrap(err, "Failed to cache ISO") diff --git a/cmd/minikube/cmd/start_flags.go b/cmd/minikube/cmd/start_flags.go index 491d760cba..adebc115b7 100644 --- a/cmd/minikube/cmd/start_flags.go +++ b/cmd/minikube/cmd/start_flags.go @@ -110,10 +110,10 @@ const ( network = "network" startNamespace = "namespace" trace = "trace" - genericIPAddress = "generic-ip-address" - genericSSHUser = "generic-ssh-user" - genericSSHKey = "generic-ssh-key" - genericSSHPort = "generic-ssh-port" + sshIPAddress = "ip-address" + sshSSHUser = "ssh-user" + sshSSHKey = "ssh-key" + sshSSHPort = "ssh-port" defaultSSHUser = "root" defaultSSHPort = 22 ) @@ -228,11 +228,11 @@ func initNetworkingFlags() { startCmd.Flags().StringArrayVar(&config.DockerEnv, "docker-env", nil, "Environment variables to pass to the Docker daemon. (format: key=value)") startCmd.Flags().StringArrayVar(&config.DockerOpt, "docker-opt", nil, "Specify arbitrary flags to pass to the Docker daemon. (format: key=value)") - // generic - startCmd.Flags().String(genericIPAddress, "", "IP address (generic driver only)") - startCmd.Flags().String(genericSSHUser, defaultSSHUser, "SSH user (generic driver only)") - startCmd.Flags().String(genericSSHKey, "", "SSH key (generic driver only)") - startCmd.Flags().Int(genericSSHPort, defaultSSHPort, "SSH port (generic driver only)") + // ssh + startCmd.Flags().String(sshIPAddress, "", "IP address (ssh driver only)") + startCmd.Flags().String(sshSSHUser, defaultSSHUser, "SSH user (ssh driver only)") + startCmd.Flags().String(sshSSHKey, "", "SSH key (ssh driver only)") + startCmd.Flags().Int(sshSSHPort, defaultSSHPort, "SSH port (ssh driver only)") } // ClusterFlagValue returns the current cluster name based on flags @@ -347,10 +347,10 @@ func generateClusterConfig(cmd *cobra.Command, existing *config.ClusterConfig, k NatNicType: viper.GetString(natNicType), StartHostTimeout: viper.GetDuration(waitTimeout), ExposedPorts: viper.GetStringSlice(ports), - GenericIPAddress: viper.GetString(genericIPAddress), - GenericSSHUser: viper.GetString(genericSSHUser), - GenericSSHKey: viper.GetString(genericSSHKey), - GenericSSHPort: viper.GetInt(genericSSHPort), + IPAddress: viper.GetString(sshIPAddress), + SSHUser: viper.GetString(sshSSHUser), + SSHKey: viper.GetString(sshSSHKey), + SSHPort: viper.GetInt(sshSSHPort), KubernetesConfig: config.KubernetesConfig{ KubernetesVersion: k8sVersion, ClusterName: ClusterFlagValue(), diff --git a/pkg/drivers/generic/generic.go b/pkg/drivers/ssh/ssh.go similarity index 96% rename from pkg/drivers/generic/generic.go rename to pkg/drivers/ssh/ssh.go index caf7062d9c..b3228fc17b 100644 --- a/pkg/drivers/generic/generic.go +++ b/pkg/drivers/ssh/ssh.go @@ -14,7 +14,7 @@ See the License for the specific language governing permissions and limitations under the License. */ -package generic +package ssh import ( "fmt" @@ -38,7 +38,7 @@ import ( ) // Driver is a driver designed to run kubeadm w/o VM management. -// https://minikube.sigs.k8s.io/docs/reference/drivers/generic/ +// https://minikube.sigs.k8s.io/docs/reference/drivers/ssh/ type Driver struct { *drivers.BaseDriver *pkgdrivers.CommonDriver @@ -48,7 +48,7 @@ type Driver struct { exec command.Runner } -// Config is configuration for the Generic driver +// Config is configuration for the SSH driver type Config struct { MachineName string StorePath string @@ -81,7 +81,7 @@ func NewDriver(c Config) *Driver { // DriverName returns the name of the driver func (d *Driver) DriverName() string { - return "generic" + return "ssh" } func (d *Driver) GetSSHHostname() (string, error) { @@ -175,7 +175,7 @@ func (d *Driver) Stop() error { return errors.Wrap(err, "stop containers") } } - klog.Infof("generic driver is stopped!") + klog.Infof("ssh driver is stopped!") return nil } diff --git a/pkg/minikube/cluster/ip.go b/pkg/minikube/cluster/ip.go index 6a3522e67a..54a715c3bd 100644 --- a/pkg/minikube/cluster/ip.go +++ b/pkg/minikube/cluster/ip.go @@ -40,7 +40,7 @@ func HostIP(host *host.Host, clusterName string) (net.IP, error) { return oci.RoutableHostIPFromInside(oci.Docker, clusterName, host.Name) case driver.Podman: return oci.RoutableHostIPFromInside(oci.Podman, clusterName, host.Name) - case driver.Generic: + case driver.SSH: ip, err := host.Driver.GetIP() if err != nil { return []byte{}, errors.Wrap(err, "Error getting VM/Host IP address") diff --git a/pkg/minikube/config/types.go b/pkg/minikube/config/types.go index d4ccaa0555..332fcc57ce 100644 --- a/pkg/minikube/config/types.go +++ b/pkg/minikube/config/types.go @@ -66,10 +66,10 @@ type ClusterConfig struct { HostDNSResolver bool // Only used by virtualbox HostOnlyNicType string // Only used by virtualbox NatNicType string // Only used by virtualbox - GenericIPAddress string // Only used by generic - GenericSSHUser string // Only used by generic - GenericSSHKey string // Only used by generic - GenericSSHPort int // Only used by generic + IPAddress string // Only used by ssh + SSHUser string // Only used by ssh + SSHKey string // Only used by ssh + SSHPort int // Only used by ssh KubernetesConfig KubernetesConfig Nodes []Node Addons map[string]bool diff --git a/pkg/minikube/driver/driver.go b/pkg/minikube/driver/driver.go index c1783f8ca3..fab519c46d 100644 --- a/pkg/minikube/driver/driver.go +++ b/pkg/minikube/driver/driver.go @@ -39,8 +39,8 @@ const ( Mock = "mock" // None driver None = "none" - // Generic driver - Generic = "generic" + // SSH driver + SSH = "ssh" // KVM2 driver KVM2 = "kvm2" // VirtualBox driver @@ -58,6 +58,8 @@ const ( // AliasKVM is driver name alias for kvm2 AliasKVM = "kvm" + // AliasSSH is driver name alias for ssh + AliasSSH = "generic" ) var ( @@ -99,7 +101,7 @@ func MachineType(name string) string { return "container" } - if IsGeneric(name) { + if IsSSH(name) { return "bare metal machine" } @@ -150,9 +152,9 @@ func BareMetal(name string) bool { return name == None || name == Mock } -// IsGeneric checks if the driver is generic -func IsGeneric(name string) bool { - return name == Generic +// IsSSH checks if the driver is ssh +func IsSSH(name string) bool { + return name == SSH } // NeedsPortForward returns true if driver is unable provide direct IP connectivity diff --git a/pkg/minikube/driver/driver_darwin.go b/pkg/minikube/driver/driver_darwin.go index 24a6e56d6c..1eef33635d 100644 --- a/pkg/minikube/driver/driver_darwin.go +++ b/pkg/minikube/driver/driver_darwin.go @@ -26,7 +26,7 @@ var supportedDrivers = []string{ HyperKit, VMware, Docker, - Generic, + SSH, } func VBoxManagePath() string { diff --git a/pkg/minikube/driver/driver_linux.go b/pkg/minikube/driver/driver_linux.go index 05784f946e..a428a9a2bf 100644 --- a/pkg/minikube/driver/driver_linux.go +++ b/pkg/minikube/driver/driver_linux.go @@ -29,7 +29,7 @@ var supportedDrivers = []string{ None, Docker, Podman, - Generic, + SSH, } // VBoxManagePath returns the path to the VBoxManage command diff --git a/pkg/minikube/driver/driver_test.go b/pkg/minikube/driver/driver_test.go index 79e6b77893..10421a476b 100644 --- a/pkg/minikube/driver/driver_test.go +++ b/pkg/minikube/driver/driver_test.go @@ -65,7 +65,7 @@ func TestMachineType(t *testing.T) { Docker: "container", Mock: "bare metal machine", None: "bare metal machine", - Generic: "bare metal machine", + SSH: "bare metal machine", KVM2: "VM", VirtualBox: "VM", HyperKit: "VM", diff --git a/pkg/minikube/driver/driver_windows.go b/pkg/minikube/driver/driver_windows.go index 8a2f5a6a2a..1ebc9d5f1d 100644 --- a/pkg/minikube/driver/driver_windows.go +++ b/pkg/minikube/driver/driver_windows.go @@ -33,7 +33,7 @@ var supportedDrivers = []string{ HyperV, VMware, Docker, - Generic, + SSH, } // TODO: medyagh add same check for kic docker diff --git a/pkg/minikube/machine/machine.go b/pkg/minikube/machine/machine.go index 2fdf60ba69..a465694e0b 100644 --- a/pkg/minikube/machine/machine.go +++ b/pkg/minikube/machine/machine.go @@ -104,7 +104,7 @@ func fastDetectProvisioner(h *host.Host) (libprovision.Provisioner, error) { switch { case driver.IsKIC(d): return provision.NewUbuntuProvisioner(h.Driver), nil - case driver.BareMetal(d), driver.IsGeneric(d): + case driver.BareMetal(d), driver.IsSSH(d): return libprovision.DetectProvisioner(h.Driver) default: return provision.NewBuildrootProvisioner(h.Driver), nil diff --git a/pkg/minikube/machine/start.go b/pkg/minikube/machine/start.go index 06176eede2..7dd59164c2 100644 --- a/pkg/minikube/machine/start.go +++ b/pkg/minikube/machine/start.go @@ -129,7 +129,7 @@ func createHost(api libmachine.API, cfg *config.ClusterConfig, n *config.Node) ( klog.Infof("duration metric: createHost completed in %s", time.Since(start)) }() - if cfg.Driver != driver.Generic { + if cfg.Driver != driver.SSH { showHostInfo(nil, *cfg) } @@ -166,7 +166,7 @@ func createHost(api libmachine.API, cfg *config.ClusterConfig, n *config.Node) ( return nil, errors.Wrap(err, "creating host") } klog.Infof("duration metric: libmachine.API.Create for %q took %s", cfg.Name, time.Since(cstart)) - if cfg.Driver == driver.Generic { + if cfg.Driver == driver.SSH { showHostInfo(h, *cfg) } @@ -174,7 +174,7 @@ func createHost(api libmachine.API, cfg *config.ClusterConfig, n *config.Node) ( return h, errors.Wrap(err, "post-start") } - if driver.IsGeneric(h.Driver.DriverName()) { + if driver.IsSSH(h.Driver.DriverName()) { if _, err := h.RunSSHCommand(fmt.Sprintf("sudo usermod -aG docker %s", h.Driver.GetSSHUsername())); err != nil { return h, errors.Wrap(err, "usermod") } @@ -295,7 +295,7 @@ func postStartSetup(h *host.Host, mc config.ClusterConfig) error { if driver.BareMetal(mc.Driver) { showLocalOsRelease() } - if driver.IsVM(mc.Driver) || driver.IsKIC(mc.Driver) || driver.IsGeneric(mc.Driver) { + if driver.IsVM(mc.Driver) || driver.IsKIC(mc.Driver) || driver.IsSSH(mc.Driver) { logRemoteOsRelease(r) } return syncLocalAssets(r) @@ -336,7 +336,7 @@ func showHostInfo(h *host.Host, cfg config.ClusterConfig) { } return } - if cfg.Driver == driver.Generic { + if driver.IsSSH(cfg.Driver) { r, err := CommandRunner(h) if err != nil { klog.Warningf("error getting command runner: %v", err) @@ -345,7 +345,7 @@ func showHostInfo(h *host.Host, cfg config.ClusterConfig) { info, cpuErr, memErr, DiskErr := RemoteHostInfo(r) if cpuErr == nil && memErr == nil && DiskErr == nil { register.Reg.SetStep(register.RunningRemotely) - out.Step(style.StartingGeneric, "Running remotely (CPUs={{.number_of_cpus}}, Memory={{.memory_size}}MB, Disk={{.disk_size}}MB) ...", out.V{"number_of_cpus": info.CPUs, "memory_size": info.Memory, "disk_size": info.DiskSize}) + out.Step(style.StartingSSH, "Running remotely (CPUs={{.number_of_cpus}}, Memory={{.memory_size}}MB, Disk={{.disk_size}}MB) ...", out.V{"number_of_cpus": info.CPUs, "memory_size": info.Memory, "disk_size": info.DiskSize}) } return } diff --git a/pkg/minikube/registry/drvs/init.go b/pkg/minikube/registry/drvs/init.go index 2bd36761e7..06b1115827 100644 --- a/pkg/minikube/registry/drvs/init.go +++ b/pkg/minikube/registry/drvs/init.go @@ -19,13 +19,13 @@ package drvs import ( // Register all of the drvs we know of _ "k8s.io/minikube/pkg/minikube/registry/drvs/docker" - _ "k8s.io/minikube/pkg/minikube/registry/drvs/generic" _ "k8s.io/minikube/pkg/minikube/registry/drvs/hyperkit" _ "k8s.io/minikube/pkg/minikube/registry/drvs/hyperv" _ "k8s.io/minikube/pkg/minikube/registry/drvs/kvm2" _ "k8s.io/minikube/pkg/minikube/registry/drvs/none" _ "k8s.io/minikube/pkg/minikube/registry/drvs/parallels" _ "k8s.io/minikube/pkg/minikube/registry/drvs/podman" + _ "k8s.io/minikube/pkg/minikube/registry/drvs/ssh" _ "k8s.io/minikube/pkg/minikube/registry/drvs/virtualbox" _ "k8s.io/minikube/pkg/minikube/registry/drvs/vmware" _ "k8s.io/minikube/pkg/minikube/registry/drvs/vmwarefusion" diff --git a/pkg/minikube/registry/drvs/generic/generic.go b/pkg/minikube/registry/drvs/ssh/ssh.go similarity index 80% rename from pkg/minikube/registry/drvs/generic/generic.go rename to pkg/minikube/registry/drvs/ssh/ssh.go index 87d4ae0485..ad915914a8 100644 --- a/pkg/minikube/registry/drvs/generic/generic.go +++ b/pkg/minikube/registry/drvs/ssh/ssh.go @@ -14,7 +14,7 @@ See the License for the specific language governing permissions and limitations under the License. */ -package generic +package ssh import ( "fmt" @@ -22,7 +22,7 @@ import ( "github.com/docker/machine/libmachine/drivers" "github.com/pkg/errors" - "k8s.io/minikube/pkg/drivers/generic" + "k8s.io/minikube/pkg/drivers/ssh" "k8s.io/minikube/pkg/minikube/config" "k8s.io/minikube/pkg/minikube/driver" "k8s.io/minikube/pkg/minikube/localpath" @@ -31,11 +31,12 @@ import ( func init() { err := registry.Register(registry.DriverDef{ - Name: driver.Generic, + Name: driver.SSH, + Alias: []string{driver.AliasSSH}, Config: configure, Status: status, Priority: registry.Fallback, - Init: func() drivers.Driver { return generic.NewDriver(generic.Config{}) }, + Init: func() drivers.Driver { return ssh.NewDriver(ssh.Config{}) }, }) if err != nil { panic(fmt.Sprintf("unable to register: %v", err)) @@ -43,20 +44,20 @@ func init() { } func configure(cc config.ClusterConfig, n config.Node) (interface{}, error) { - d := generic.NewDriver(generic.Config{ + d := ssh.NewDriver(ssh.Config{ MachineName: driver.MachineName(cc, n), StorePath: localpath.MiniPath(), ContainerRuntime: cc.KubernetesConfig.ContainerRuntime, }) - if cc.GenericIPAddress == "" { + if cc.IPAddress == "" { return nil, errors.Errorf("please provide an IP address") } - d.IPAddress = cc.GenericIPAddress - d.SSHUser = cc.GenericSSHUser - d.SSHKey = cc.GenericSSHKey - d.SSHPort = cc.GenericSSHPort + d.IPAddress = cc.IPAddress + d.SSHUser = cc.SSHUser + d.SSHKey = cc.SSHKey + d.SSHPort = cc.SSHPort return d, nil } diff --git a/pkg/minikube/style/style.go b/pkg/minikube/style/style.go index c32116c671..3adc368609 100644 --- a/pkg/minikube/style/style.go +++ b/pkg/minikube/style/style.go @@ -126,7 +126,7 @@ var Config = map[Enum]Options{ Resetting: {Prefix: "🔄 "}, Shutdown: {Prefix: "🛑 "}, StartingNone: {Prefix: "🤹 "}, - StartingGeneric: {Prefix: "🔗 "}, + StartingSSH: {Prefix: "🔗 "}, StartingVM: {Prefix: "🔥 ", OmitNewline: true, Spinner: true}, SubStep: {Prefix: " ▪ ", LowPrefix: LowIndent, OmitNewline: true, Spinner: true}, // Indented bullet Tip: {Prefix: "💡 "}, diff --git a/pkg/minikube/style/style_enum.go b/pkg/minikube/style/style_enum.go index 7ff5da49f8..7647fba2ea 100644 --- a/pkg/minikube/style/style_enum.go +++ b/pkg/minikube/style/style_enum.go @@ -81,7 +81,7 @@ const ( Shutdown Sparkle StartingNone - StartingGeneric + StartingSSH StartingVM Stopped Stopping diff --git a/site/content/en/docs/commands/start.md b/site/content/en/docs/commands/start.md index 8f53c8d600..8b36a10f56 100644 --- a/site/content/en/docs/commands/start.md +++ b/site/content/en/docs/commands/start.md @@ -51,10 +51,6 @@ minikube start [flags] --feature-gates string A set of key=value pairs that describe feature gates for alpha/experimental features. --force Force minikube to perform possibly dangerous operations --force-systemd If set, force the container runtime to use sytemd as cgroup manager. Defaults to false. - --generic-ip-address string IP address (generic driver only) - --generic-ssh-key string SSH key (generic driver only) - --generic-ssh-port int SSH port (generic driver only) (default 22) - --generic-ssh-user string SSH user (generic driver only) (default "root") --host-dns-resolver Enable host resolver for NAT DNS requests (virtualbox driver only) (default true) --host-only-cidr string The CIDR to be used for the minikube VM (virtualbox driver only) (default "192.168.99.1/24") --host-only-nic-type string NIC Type used for host only network. One of Am79C970A, Am79C973, 82540EM, 82543GC, 82545EM, or virtio (virtualbox driver only) (default "virtio") @@ -68,6 +64,7 @@ minikube start [flags] --insecure-registry strings Insecure Docker registries to pass to the Docker daemon. The default service CIDR range will automatically be added. --install-addons If set, install addons. Defaults to true. (default true) --interactive Allow user prompts for more information (default true) + --ip-address string IP address (ssh driver only) --iso-url strings Locations to fetch the minikube ISO from. (default [https://storage.googleapis.com/minikube/iso/minikube-v1.16.0.iso,https://github.com/kubernetes/minikube/releases/download/v1.16.0/minikube-v1.16.0.iso,https://kubernetes.oss-cn-hangzhou.aliyuncs.com/minikube/iso/minikube-v1.16.0.iso]) --keep-context This will keep the existing kubectl context and will create a minikube context. --kubernetes-version string The Kubernetes version that the minikube VM will use (ex: v1.2.3, 'stable' for v1.20.0, 'latest' for v1.20.0). Defaults to 'stable'. @@ -92,6 +89,9 @@ minikube start [flags] --preload If set, download tarball of preloaded images if available to improve start time. Defaults to true. (default true) --registry-mirror strings Registry mirrors to pass to the Docker daemon --service-cluster-ip-range string The CIDR to be used for service cluster IPs. (default "10.96.0.0/12") + --ssh-key string SSH key (ssh driver only) + --ssh-port int SSH port (ssh driver only) (default 22) + --ssh-user string SSH user (ssh driver only) (default "root") --trace string Send trace events. Options include: [gcp] --uuid string Provide VM UUID to restore MAC address (hyperkit driver only) --vm Filter to use only VM Drivers diff --git a/site/content/en/docs/drivers/generic.md b/site/content/en/docs/drivers/generic.md deleted file mode 100644 index 558c25b1b5..0000000000 --- a/site/content/en/docs/drivers/generic.md +++ /dev/null @@ -1,22 +0,0 @@ ---- -title: "generic" -weight: 3 -description: > - Linux generic (remote) driver -aliases: - - /docs/reference/drivers/generic ---- - -## Overview - -This document is written for system integrators who wish to run minikube within a customized VM environment. The `generic` driver allows advanced minikube users to skip VM creation, allowing minikube to be run on a user-supplied VM. - -{{% readfile file="/docs/drivers/includes/generic_usage.inc" %}} - -## Issues - -* [Full list of open 'generic' driver issues](https://github.com/kubernetes/minikube/labels/co%2Fgeneric-driver) - -## Troubleshooting - -* Run `minikube start --alsologtostderr -v=4` to debug crashes diff --git a/site/content/en/docs/drivers/includes/generic_usage.inc b/site/content/en/docs/drivers/includes/ssh_usage.inc similarity index 77% rename from site/content/en/docs/drivers/includes/generic_usage.inc rename to site/content/en/docs/drivers/includes/ssh_usage.inc index 3a0d8a3bf7..d4b48b82db 100644 --- a/site/content/en/docs/drivers/includes/generic_usage.inc +++ b/site/content/en/docs/drivers/includes/ssh_usage.inc @@ -17,9 +17,9 @@ This VM must also meet the [kubeadm requirements](https://kubernetes.io/docs/set ## Usage -The generic driver requires the IP address of the VM to use. +The ssh driver requires the IP address of the VM to use. ```shell -minikube start --driver=generic --generic-ip-address=vm.example.com +minikube start --driver=ssh --ip-address=vm.example.com ``` diff --git a/site/content/en/docs/drivers/ssh.md b/site/content/en/docs/drivers/ssh.md new file mode 100644 index 0000000000..50777aed6a --- /dev/null +++ b/site/content/en/docs/drivers/ssh.md @@ -0,0 +1,22 @@ +--- +title: "ssh" +weight: 3 +description: > + Linux ssh (remote) driver +aliases: + - /docs/reference/drivers/ssh +--- + +## Overview + +This document is written for system integrators who wish to run minikube within a customized VM environment. The `ssh` driver allows advanced minikube users to skip VM creation, allowing minikube to be run on a user-supplied VM. + +{{% readfile file="/docs/drivers/includes/ssh_usage.inc" %}} + +## Issues + +* [Full list of open 'ssh' driver issues](https://github.com/kubernetes/minikube/labels/co%2Fssh-driver) + +## Troubleshooting + +* Run `minikube start --alsologtostderr -v=4` to debug crashes From 1663a030ed55edc8fdcb68b25e4859c4c24b298a Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Anders=20F=20Bj=C3=B6rklund?= Date: Mon, 11 Jan 2021 18:12:06 +0100 Subject: [PATCH 42/91] Only add docker group for the docker runtime --- pkg/drivers/ssh/ssh.go | 7 +++++++ pkg/minikube/machine/start.go | 6 ------ 2 files changed, 7 insertions(+), 6 deletions(-) diff --git a/pkg/drivers/ssh/ssh.go b/pkg/drivers/ssh/ssh.go index b3228fc17b..59cb8170f0 100644 --- a/pkg/drivers/ssh/ssh.go +++ b/pkg/drivers/ssh/ssh.go @@ -20,6 +20,7 @@ import ( "fmt" "net" "os" + "os/exec" "path" "strconv" "time" @@ -124,6 +125,12 @@ func (d *Driver) Create() error { } } + if d.runtime.Name() == "Docker" { + if _, err := d.exec.RunCmd(exec.Command("sudo", "usermod", "-aG", "docker", d.GetSSHUsername())); err != nil { + return errors.Wrap(err, "usermod") + } + } + log.Debugf("IP: %s", d.IPAddress) return nil diff --git a/pkg/minikube/machine/start.go b/pkg/minikube/machine/start.go index 7dd59164c2..c664d69fd5 100644 --- a/pkg/minikube/machine/start.go +++ b/pkg/minikube/machine/start.go @@ -174,12 +174,6 @@ func createHost(api libmachine.API, cfg *config.ClusterConfig, n *config.Node) ( return h, errors.Wrap(err, "post-start") } - if driver.IsSSH(h.Driver.DriverName()) { - if _, err := h.RunSSHCommand(fmt.Sprintf("sudo usermod -aG docker %s", h.Driver.GetSSHUsername())); err != nil { - return h, errors.Wrap(err, "usermod") - } - } - if err := saveHost(api, h, cfg, n); err != nil { return h, err } From 529d2c3dde3cc8dc43217169e027b2734981353f Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Anders=20F=20Bj=C3=B6rklund?= Date: Mon, 11 Jan 2021 18:15:59 +0100 Subject: [PATCH 43/91] Prevent trying to use localhost as address --- pkg/minikube/registry/drvs/ssh/ssh.go | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/pkg/minikube/registry/drvs/ssh/ssh.go b/pkg/minikube/registry/drvs/ssh/ssh.go index ad915914a8..8e53dd8adc 100644 --- a/pkg/minikube/registry/drvs/ssh/ssh.go +++ b/pkg/minikube/registry/drvs/ssh/ssh.go @@ -54,6 +54,12 @@ func configure(cc config.ClusterConfig, n config.Node) (interface{}, error) { return nil, errors.Errorf("please provide an IP address") } + // We don't want the API server listening on loopback interface, + // even if we might use a tunneled VM port for the SSH service + if cc.IPAddress == "127.0.0.1" || cc.IPAddress == "localhost" { + return nil, errors.Errorf("please provide real IP address") + } + d.IPAddress = cc.IPAddress d.SSHUser = cc.SSHUser d.SSHKey = cc.SSHKey From 099c6b72a64ec892ed4cdd72744100a2a86393f2 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Anders=20F=20Bj=C3=B6rklund?= Date: Wed, 13 Jan 2021 20:20:10 +0100 Subject: [PATCH 44/91] The MachineName function was moved to config --- pkg/minikube/registry/drvs/ssh/ssh.go | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pkg/minikube/registry/drvs/ssh/ssh.go b/pkg/minikube/registry/drvs/ssh/ssh.go index 8e53dd8adc..83b26da36d 100644 --- a/pkg/minikube/registry/drvs/ssh/ssh.go +++ b/pkg/minikube/registry/drvs/ssh/ssh.go @@ -45,7 +45,7 @@ func init() { func configure(cc config.ClusterConfig, n config.Node) (interface{}, error) { d := ssh.NewDriver(ssh.Config{ - MachineName: driver.MachineName(cc, n), + MachineName: config.MachineName(cc, n), StorePath: localpath.MiniPath(), ContainerRuntime: cc.KubernetesConfig.ContainerRuntime, }) From f5057ee172724e2b92ff8b58d6d9d142802ca560 Mon Sep 17 00:00:00 2001 From: Ilya Zuyev Date: Wed, 13 Jan 2021 11:56:10 -0800 Subject: [PATCH 45/91] revert github actions changes --- .github/workflows/master.yml | 22 +++++++++++----------- 1 file changed, 11 insertions(+), 11 deletions(-) diff --git a/.github/workflows/master.yml b/.github/workflows/master.yml index bdac426be1..583afbca98 100644 --- a/.github/workflows/master.yml +++ b/.github/workflows/master.yml @@ -1230,17 +1230,17 @@ jobs: if: always() needs: [ - functional_docker_ubuntu, - functional_virtualbox_macos, - functional_docker_windows, - functional_hyperv_windows, - functional_baremetal_ubuntu18_04, - addons_certs_docker_ubuntu, - addons_certs_virtualbox_macos, - multinode_docker_ubuntu, - multinode_virtualbox_macos, - preload_dockerflags_docker_ubuntu, - pause_preload_dockerflags_virtualbox_macos, + functional_docker_ubuntu, + functional_virtualbox_macos, + functional_docker_windows, + functional_hyperv_windows, + functional_baremetal_ubuntu18_04, + addons_certs_docker_ubuntu, + addons_certs_virtualbox_macos, + multinode_docker_ubuntu, + multinode_virtualbox_macos, + preload_dockerflags_docker_ubuntu, + pause_preload_dockerflags_virtualbox_macos, ] runs-on: ubuntu-18.04 steps: From e47543980af18262fddf17ef8877eb60deb449a9 Mon Sep 17 00:00:00 2001 From: Ilya Zuyev Date: Wed, 13 Jan 2021 12:35:09 -0800 Subject: [PATCH 46/91] use arch tag for legacy versions of k8s/etcd images --- pkg/minikube/bootstrapper/images/images.go | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) diff --git a/pkg/minikube/bootstrapper/images/images.go b/pkg/minikube/bootstrapper/images/images.go index 8cc459d66b..de5292e627 100644 --- a/pkg/minikube/bootstrapper/images/images.go +++ b/pkg/minikube/bootstrapper/images/images.go @@ -20,6 +20,7 @@ package images import ( "fmt" "path" + "runtime" "github.com/blang/semver" @@ -120,8 +121,11 @@ func etcd(v semver.Version, mirror string) string { } // archTag returns a CPU architecture suffix for images -func archTag(hasTag bool) string { - return ":" +func archTag(needsArchSuffix bool) string { + if runtime.GOARCH == "amd64" || !needsArchSuffix { + return ":" + } + return "-" + runtime.GOARCH + ":" } // auxiliary returns images that are helpful for running minikube From f50c2bf617b185dfa37130c25c8d2cb26aa54653 Mon Sep 17 00:00:00 2001 From: Ilya Zuyev Date: Wed, 13 Jan 2021 13:58:55 -0800 Subject: [PATCH 47/91] tests: extract an utility method for image ids --- test/integration/functional_test.go | 27 +++++++++++++++++++-------- 1 file changed, 19 insertions(+), 8 deletions(-) diff --git a/test/integration/functional_test.go b/test/integration/functional_test.go index 488bae1c5a..423e7d5419 100644 --- a/test/integration/functional_test.go +++ b/test/integration/functional_test.go @@ -361,6 +361,23 @@ func validateExtraConfig(ctx context.Context, t *testing.T, profile string) { } +func imageID(image string) string { + ids := map[string]map[string]string{ + "pause": { + "amd64": "0184c1613d929", + "arm64": "3d18732f8686c", + }, + } + + if imgIds, ok := ids[image]; ok { + if id, ok := imgIds[runtime.GOARCH]; ok { + return id + } + panic(fmt.Sprintf("unexpected architecture for image %q: %v", image, runtime.GOARCH)) + } + panic("unexpected image name: " + image) +} + // validateComponentHealth asserts that all Kubernetes components are healthy func validateComponentHealth(ctx context.Context, t *testing.T, profile string) { defer PostMortemLogs(t, profile) @@ -603,16 +620,10 @@ func validateCacheCmd(ctx context.Context, t *testing.T, profile string) { if err != nil { t.Errorf("failed to get images by %q ssh %v", rr.Command(), err) } - var pauseID string - if Arm64Platform() { - pauseID = "3d18732f8686c" - } else { - pauseID = "0184c1613d929" - } + pauseID := imageID("pause") if !strings.Contains(rr.Output(), pauseID) { - t.Errorf("expected sha for pause:3.3 '0184c1613d929' to be in the output but got *%s*", rr.Output()) + t.Errorf("expected sha for pause:3.3 %q to be in the output but got *%s*", pauseID, rr.Output()) } - }) t.Run("cache_reload", func(t *testing.T) { // deleting image inside minikube node manually and expecting reload to bring it back From 5905834c7e44cf245affe45050382f2bcf4d6ad8 Mon Sep 17 00:00:00 2001 From: Ilya Zuyev Date: Wed, 13 Jan 2021 13:59:06 -0800 Subject: [PATCH 48/91] tests: enable skaffold test --- test/integration/skaffold_test.go | 3 --- 1 file changed, 3 deletions(-) diff --git a/test/integration/skaffold_test.go b/test/integration/skaffold_test.go index cb4a65c42f..d1d1a4a93b 100644 --- a/test/integration/skaffold_test.go +++ b/test/integration/skaffold_test.go @@ -38,9 +38,6 @@ func TestSkaffold(t *testing.T) { if NoneDriver() { t.Skip("none driver doesn't support `minikube docker-env`; skaffold depends on this command") } - if Arm64Platform() { - t.Skip("none driver doesn't support `minikube docker-env`; skaffold depends on this command") - } profile := UniqueProfileName("skaffold") ctx, cancel := context.WithTimeout(context.Background(), Minutes(5)) From 2ea47152368beb1bf2b5439fb90ad2869d9a868c Mon Sep 17 00:00:00 2001 From: Ilya Zuyev Date: Wed, 13 Jan 2021 14:21:31 -0800 Subject: [PATCH 49/91] revert whitespace changes --- .github/workflows/master.yml | 22 +++++++++++----------- .github/workflows/pr.yml | 28 ++++++++++++++-------------- Makefile | 2 +- 3 files changed, 26 insertions(+), 26 deletions(-) diff --git a/.github/workflows/master.yml b/.github/workflows/master.yml index 583afbca98..bdac426be1 100644 --- a/.github/workflows/master.yml +++ b/.github/workflows/master.yml @@ -1230,17 +1230,17 @@ jobs: if: always() needs: [ - functional_docker_ubuntu, - functional_virtualbox_macos, - functional_docker_windows, - functional_hyperv_windows, - functional_baremetal_ubuntu18_04, - addons_certs_docker_ubuntu, - addons_certs_virtualbox_macos, - multinode_docker_ubuntu, - multinode_virtualbox_macos, - preload_dockerflags_docker_ubuntu, - pause_preload_dockerflags_virtualbox_macos, + functional_docker_ubuntu, + functional_virtualbox_macos, + functional_docker_windows, + functional_hyperv_windows, + functional_baremetal_ubuntu18_04, + addons_certs_docker_ubuntu, + addons_certs_virtualbox_macos, + multinode_docker_ubuntu, + multinode_virtualbox_macos, + preload_dockerflags_docker_ubuntu, + pause_preload_dockerflags_virtualbox_macos, ] runs-on: ubuntu-18.04 steps: diff --git a/.github/workflows/pr.yml b/.github/workflows/pr.yml index 4605bb5900..ea8515c994 100644 --- a/.github/workflows/pr.yml +++ b/.github/workflows/pr.yml @@ -215,7 +215,7 @@ jobs: run: | hostname VBoxManage --version - sysctl hw.physicalcpu hw.logicalcpu + sysctl hw.physicalcpu hw.logicalcpu - name: Disable firewall run: | sudo /usr/libexec/ApplicationFirewall/socketfilterfw --setglobalstate off @@ -291,7 +291,7 @@ jobs: shell: powershell run: | echo $env:computerName - ls + ls $ErrorActionPreference = "SilentlyContinue" cd minikube_binaries ls @@ -328,7 +328,7 @@ jobs: $docker_running = $? } Write-Output "Docker is running" - docker system prune -f + docker system prune -f - name: Info shell: powershell run: | @@ -1228,17 +1228,17 @@ jobs: if: always() needs: [ - functional_docker_ubuntu, - functional_virtualbox_macos, - functional_docker_windows, - functional_hyperv_windows, - functional_baremetal_ubuntu18_04, - addons_certs_docker_ubuntu, - addons_certs_virtualbox_macos, - multinode_docker_ubuntu, - multinode_virtualbox_macos, - preload_dockerflags_docker_ubuntu, - pause_preload_dockerflags_virtualbox_macos, + functional_docker_ubuntu, + functional_virtualbox_macos, + functional_docker_windows, + functional_hyperv_windows, + functional_baremetal_ubuntu18_04, + addons_certs_docker_ubuntu, + addons_certs_virtualbox_macos, + multinode_docker_ubuntu, + multinode_virtualbox_macos, + preload_dockerflags_docker_ubuntu, + pause_preload_dockerflags_virtualbox_macos, ] runs-on: ubuntu-18.04 steps: diff --git a/Makefile b/Makefile index c750e8240b..7e4ca12576 100644 --- a/Makefile +++ b/Makefile @@ -681,7 +681,7 @@ ifndef AUTOPUSH $(call user_confirm, 'Are you sure you want to push: $(KIC_BASE_IMAGE_GH) & $(KIC_BASE_IMAGE_GCR) & $(KIC_BASE_IMAGE_HUB) ?') $(MAKE) push-kic-base-image AUTOPUSH=true else - $(MAKE) push-kic-base-image-gcr push-kic-base-image-hub push-kic-base-image-gh + $(MAKE) push-kic-base-image-gcr push-kic-base-image-hub push-kic-base-image-gh endif .PHONY: out/gvisor-addon From d8fdb5cf5b33c876514d06134b079eb3ef54421f Mon Sep 17 00:00:00 2001 From: Medya Gh Date: Mon, 11 Jan 2021 13:36:11 -0800 Subject: [PATCH 50/91] add minikube labels to kubecontext extenions --- pkg/minikube/kubeconfig/settings.go | 44 +++++++++++++++++++++++++++++ 1 file changed, 44 insertions(+) diff --git a/pkg/minikube/kubeconfig/settings.go b/pkg/minikube/kubeconfig/settings.go index a61f13d170..510c9de800 100644 --- a/pkg/minikube/kubeconfig/settings.go +++ b/pkg/minikube/kubeconfig/settings.go @@ -20,9 +20,11 @@ import ( "io/ioutil" "path/filepath" "sync/atomic" + "time" "github.com/juju/mutex" "github.com/pkg/errors" + "k8s.io/apimachinery/pkg/runtime" "k8s.io/client-go/tools/clientcmd/api" "k8s.io/klog/v2" "k8s.io/minikube/pkg/util/lock" @@ -83,6 +85,14 @@ func PopulateFromSettings(cfg *Settings, apiCfg *api.Config) error { } else { cluster.CertificateAuthority = cfg.CertificateAuthority } + + lastUpdate := time.Now().String() + ext := &internalExtension{ + CreatedBy: "minikube.sigs.k8s.io", + LastUpdate: lastUpdate, + } + + cluster.Extensions = map[string]runtime.Object{"cluster_info": ext.DeepCopy()} apiCfg.Clusters[clusterName] = cluster // user @@ -109,6 +119,7 @@ func PopulateFromSettings(cfg *Settings, apiCfg *api.Config) error { context.Cluster = cfg.ClusterName context.Namespace = cfg.Namespace context.AuthInfo = userName + context.Extensions = map[string]runtime.Object{"context_info": ext.DeepCopy()} apiCfg.Contexts[contextName] = context // Only set current context to minikube if the user has not used the keepContext flag @@ -149,3 +160,36 @@ func Update(kcs *Settings) error { } return nil } + +// +k8s:deepcopy-gen:interfaces=k8s.io/apimachinery/pkg/runtime.Object +// implementing the runtime.Object internally so we can write extensions to kubeconfig +type internalExtension struct { + runtime.TypeMeta `json:",inline"` + CreatedBy string `json:"created_by"` + LastUpdate string `json:"last_update"` +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new InternalSimple. +func (in *internalExtension) DeepCopy() *internalExtension { + if in == nil { + return nil + } + out := new(internalExtension) + in.DeepCopyInto(out) + return out +} + +// DeepCopyObject is an autogenerated deepcopy function, copying the receiver, creating a new runtime.Object. +func (in *internalExtension) DeepCopyObject() runtime.Object { + if c := in.DeepCopy(); c != nil { + return c + } + return nil +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *internalExtension) DeepCopyInto(out *internalExtension) { + *out = *in + out.TypeMeta = in.TypeMeta + return +} From c3e4c1bee05c8e4b18fdd2847a3dd40b4b5c78a0 Mon Sep 17 00:00:00 2001 From: Medya Gh Date: Mon, 11 Jan 2021 13:41:58 -0800 Subject: [PATCH 51/91] update comment --- pkg/minikube/kubeconfig/settings.go | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pkg/minikube/kubeconfig/settings.go b/pkg/minikube/kubeconfig/settings.go index 510c9de800..92c8e4e446 100644 --- a/pkg/minikube/kubeconfig/settings.go +++ b/pkg/minikube/kubeconfig/settings.go @@ -169,7 +169,7 @@ type internalExtension struct { LastUpdate string `json:"last_update"` } -// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new InternalSimple. +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new InternalExtension. func (in *internalExtension) DeepCopy() *internalExtension { if in == nil { return nil From 9f67a557a78fbadbd53ef19eb34a7b3bad59e5ed Mon Sep 17 00:00:00 2001 From: Medya Gh Date: Tue, 12 Jan 2021 15:55:48 -0800 Subject: [PATCH 52/91] address review comments --- pkg/minikube/kubeconfig/extension.go | 52 ++++++++++++++++++++++++++++ pkg/minikube/kubeconfig/settings.go | 40 +++------------------ 2 files changed, 56 insertions(+), 36 deletions(-) create mode 100644 pkg/minikube/kubeconfig/extension.go diff --git a/pkg/minikube/kubeconfig/extension.go b/pkg/minikube/kubeconfig/extension.go new file mode 100644 index 0000000000..98d716296c --- /dev/null +++ b/pkg/minikube/kubeconfig/extension.go @@ -0,0 +1,52 @@ +/* +Copyright 2021 The Kubernetes Authors All rights reserved. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + +package kubeconfig + +import "k8s.io/apimachinery/pkg/runtime" + +// +k8s:deepcopy-gen:interfaces=k8s.io/apimachinery/pkg/runtime.Object +// implementing the runtime.Object internally so we can write extensions to kubeconfig +type internalExtension struct { + runtime.TypeMeta `json:",inline"` + Version string `json:"version"` + Provider string `json:"provider"` + LastUpdate string `json:"last_update"` +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new InternalExtension. +func (in *internalExtension) DeepCopy() *internalExtension { + if in == nil { + return nil + } + out := new(internalExtension) + in.DeepCopyInto(out) + return out +} + +// DeepCopyObject is an autogenerated deepcopy function, copying the receiver, creating a new runtime.Object. +func (in *internalExtension) DeepCopyObject() runtime.Object { + if c := in.DeepCopy(); c != nil { + return c + } + return nil +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *internalExtension) DeepCopyInto(out *internalExtension) { + *out = *in + out.TypeMeta = in.TypeMeta +} diff --git a/pkg/minikube/kubeconfig/settings.go b/pkg/minikube/kubeconfig/settings.go index 92c8e4e446..42c50069ad 100644 --- a/pkg/minikube/kubeconfig/settings.go +++ b/pkg/minikube/kubeconfig/settings.go @@ -28,6 +28,7 @@ import ( "k8s.io/client-go/tools/clientcmd/api" "k8s.io/klog/v2" "k8s.io/minikube/pkg/util/lock" + "k8s.io/minikube/pkg/version" ) // Settings is the minikubes settings for kubeconfig @@ -86,10 +87,10 @@ func PopulateFromSettings(cfg *Settings, apiCfg *api.Config) error { cluster.CertificateAuthority = cfg.CertificateAuthority } - lastUpdate := time.Now().String() ext := &internalExtension{ - CreatedBy: "minikube.sigs.k8s.io", - LastUpdate: lastUpdate, + Provider: "minikube.sigs.k8s.io", + Version: version.GetVersion(), + LastUpdate: time.Now().Format(time.RFC3339), } cluster.Extensions = map[string]runtime.Object{"cluster_info": ext.DeepCopy()} @@ -160,36 +161,3 @@ func Update(kcs *Settings) error { } return nil } - -// +k8s:deepcopy-gen:interfaces=k8s.io/apimachinery/pkg/runtime.Object -// implementing the runtime.Object internally so we can write extensions to kubeconfig -type internalExtension struct { - runtime.TypeMeta `json:",inline"` - CreatedBy string `json:"created_by"` - LastUpdate string `json:"last_update"` -} - -// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new InternalExtension. -func (in *internalExtension) DeepCopy() *internalExtension { - if in == nil { - return nil - } - out := new(internalExtension) - in.DeepCopyInto(out) - return out -} - -// DeepCopyObject is an autogenerated deepcopy function, copying the receiver, creating a new runtime.Object. -func (in *internalExtension) DeepCopyObject() runtime.Object { - if c := in.DeepCopy(); c != nil { - return c - } - return nil -} - -// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. -func (in *internalExtension) DeepCopyInto(out *internalExtension) { - *out = *in - out.TypeMeta = in.TypeMeta - return -} From 5ddf54b32f485ec1bb141cd6ad0ba626144e3561 Mon Sep 17 00:00:00 2001 From: Medya Gh Date: Tue, 12 Jan 2021 18:44:56 -0800 Subject: [PATCH 53/91] refactor to make testable --- cmd/minikube/cmd/update-context.go | 3 +- go.sum | 2 -- pkg/minikube/bootstrapper/certs.go | 2 ++ pkg/minikube/bootstrapper/kubeadm/kubeadm.go | 6 ++-- pkg/minikube/kubeconfig/extension.go | 27 +++++++++++++----- pkg/minikube/kubeconfig/kubeconfig.go | 9 +++++- pkg/minikube/kubeconfig/kubeconfig_test.go | 4 +-- pkg/minikube/kubeconfig/settings.go | 30 ++++++++++++++------ 8 files changed, 59 insertions(+), 24 deletions(-) diff --git a/cmd/minikube/cmd/update-context.go b/cmd/minikube/cmd/update-context.go index 709a65ad61..3688df3839 100644 --- a/cmd/minikube/cmd/update-context.go +++ b/cmd/minikube/cmd/update-context.go @@ -35,8 +35,9 @@ var updateContextCmd = &cobra.Command{ Run: func(cmd *cobra.Command, args []string) { cname := ClusterFlagValue() co := mustload.Running(cname) + // cluster extension metada for kubeconfig - updated, err := kubeconfig.UpdateEndpoint(cname, co.CP.Hostname, co.CP.Port, kubeconfig.PathFromEnv()) + updated, err := kubeconfig.UpdateEndpoint(cname, co.CP.Hostname, co.CP.Port, kubeconfig.PathFromEnv(), kubeconfig.NewExtension()) if err != nil { exit.Error(reason.HostKubeconfigUpdate, "update config", err) } diff --git a/go.sum b/go.sum index e4fa247232..c4cb746b3e 100644 --- a/go.sum +++ b/go.sum @@ -988,8 +988,6 @@ github.com/tmc/grpc-websocket-proxy v0.0.0-20170815181823-89b8d40f7ca8/go.mod h1 github.com/tmc/grpc-websocket-proxy v0.0.0-20190109142713-0ad062ec5ee5/go.mod h1:ncp9v5uamzpCO7NfCPTXjqaC+bZgJeR0sMTm6dMHP7U= github.com/ugorji/go v1.1.4/go.mod h1:uQMGLiO92mf5W77hV/PUCpI3pbzQx3CRekS0kk+RGrc= github.com/ugorji/go/codec v0.0.0-20181204163529-d75b2dcb6bc8/go.mod h1:VFNgLljTbGfSG7qAOspJ7OScBnGdDN/yBr0sguwnwf0= -github.com/ulikunitz/xz v0.5.5 h1:pFrO0lVpTBXLpYw+pnLj6TbvHuyjXMfjGeCwSqCVwok= -github.com/ulikunitz/xz v0.5.5/go.mod h1:2bypXElzHzzJZwzH67Y6wb67pO62Rzfn7BSiF4ABRW8= github.com/ulikunitz/xz v0.5.8 h1:ERv8V6GKqVi23rgu5cj9pVfVzJbOqAY2Ntl88O6c2nQ= github.com/ulikunitz/xz v0.5.8/go.mod h1:nbz6k7qbPmH4IRqmfOplQw/tblSgqTqBwxkY0oWt/14= github.com/ultraware/funlen v0.0.1/go.mod h1:Dp4UiAus7Wdb9KUZsYWZEWiRzGuM2kXM1lPbfaF6xhA= diff --git a/pkg/minikube/bootstrapper/certs.go b/pkg/minikube/bootstrapper/certs.go index 90fd9870fa..136e9d54fd 100644 --- a/pkg/minikube/bootstrapper/certs.go +++ b/pkg/minikube/bootstrapper/certs.go @@ -99,6 +99,8 @@ func SetupCerts(cmd command.Runner, k8s config.KubernetesConfig, n config.Node) ClientCertificate: path.Join(vmpath.GuestKubernetesCertsDir, "apiserver.crt"), ClientKey: path.Join(vmpath.GuestKubernetesCertsDir, "apiserver.key"), CertificateAuthority: path.Join(vmpath.GuestKubernetesCertsDir, "ca.crt"), + ExtensionContext: kubeconfig.NewExtension(), + ExtensionCluster: kubeconfig.NewExtension(), KeepContext: false, } diff --git a/pkg/minikube/bootstrapper/kubeadm/kubeadm.go b/pkg/minikube/bootstrapper/kubeadm/kubeadm.go index 4b0fc2e108..5baf460eb6 100644 --- a/pkg/minikube/bootstrapper/kubeadm/kubeadm.go +++ b/pkg/minikube/bootstrapper/kubeadm/kubeadm.go @@ -576,14 +576,14 @@ func (k *Bootstrapper) restartControlPlane(cfg config.ClusterConfig) error { klog.Infof("restartCluster took %s", time.Since(start)) }() - version, err := util.ParseKubernetesVersion(cfg.KubernetesConfig.KubernetesVersion) + k8sVersion, err := util.ParseKubernetesVersion(cfg.KubernetesConfig.KubernetesVersion) if err != nil { return errors.Wrap(err, "parsing Kubernetes version") } phase := "alpha" controlPlane := "controlplane" - if version.GTE(semver.MustParse("1.13.0")) { + if k8sVersion.GTE(semver.MustParse("1.13.0")) { phase = "init" controlPlane = "control-plane" } @@ -603,7 +603,7 @@ func (k *Bootstrapper) restartControlPlane(cfg config.ClusterConfig) error { } // Save the costly tax of reinstalling Kubernetes if the only issue is a missing kube context - _, err = kubeconfig.UpdateEndpoint(cfg.Name, hostname, port, kubeconfig.PathFromEnv()) + _, err = kubeconfig.UpdateEndpoint(cfg.Name, hostname, port, kubeconfig.PathFromEnv(), kubeconfig.NewExtension()) if err != nil { klog.Warningf("unable to update kubeconfig (cluster will likely require a reset): %v", err) } diff --git a/pkg/minikube/kubeconfig/extension.go b/pkg/minikube/kubeconfig/extension.go index 98d716296c..a6cbc46fe8 100644 --- a/pkg/minikube/kubeconfig/extension.go +++ b/pkg/minikube/kubeconfig/extension.go @@ -16,29 +16,42 @@ limitations under the License. package kubeconfig -import "k8s.io/apimachinery/pkg/runtime" +import ( + "time" + + "k8s.io/apimachinery/pkg/runtime" + "k8s.io/minikube/pkg/version" +) // +k8s:deepcopy-gen:interfaces=k8s.io/apimachinery/pkg/runtime.Object // implementing the runtime.Object internally so we can write extensions to kubeconfig -type internalExtension struct { +type Extension struct { runtime.TypeMeta `json:",inline"` Version string `json:"version"` Provider string `json:"provider"` LastUpdate string `json:"last_update"` } -// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new InternalExtension. -func (in *internalExtension) DeepCopy() *internalExtension { +// NewExtension returns a minikube formated kubeconfig's extension block to idenity clusters and contexts +func NewExtension() *Extension { + return &Extension{ + Provider: "minikube.sigs.k8s.io", + Version: version.GetVersion(), + LastUpdate: time.Now().Format(time.RFC3339)} +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new Extension. +func (in *Extension) DeepCopy() *Extension { if in == nil { return nil } - out := new(internalExtension) + out := new(Extension) in.DeepCopyInto(out) return out } // DeepCopyObject is an autogenerated deepcopy function, copying the receiver, creating a new runtime.Object. -func (in *internalExtension) DeepCopyObject() runtime.Object { +func (in *Extension) DeepCopyObject() runtime.Object { if c := in.DeepCopy(); c != nil { return c } @@ -46,7 +59,7 @@ func (in *internalExtension) DeepCopyObject() runtime.Object { } // DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. -func (in *internalExtension) DeepCopyInto(out *internalExtension) { +func (in *Extension) DeepCopyInto(out *Extension) { *out = *in out.TypeMeta = in.TypeMeta } diff --git a/pkg/minikube/kubeconfig/kubeconfig.go b/pkg/minikube/kubeconfig/kubeconfig.go index 9496fd7470..4cfe650b96 100644 --- a/pkg/minikube/kubeconfig/kubeconfig.go +++ b/pkg/minikube/kubeconfig/kubeconfig.go @@ -105,7 +105,8 @@ func Endpoint(contextName string, configPath ...string) (string, int, error) { } // UpdateEndpoint overwrites the IP stored in kubeconfig with the provided IP. -func UpdateEndpoint(contextName string, hostname string, port int, confpath string) (bool, error) { +func UpdateEndpoint(contextName string, hostname string, port int, confpath string, ext *Extension) (bool, error) { + fmt.Println("insude update endpoint") if hostname == "" { return false, fmt.Errorf("empty ip") } @@ -136,6 +137,12 @@ func UpdateEndpoint(contextName string, hostname string, port int, confpath stri CertificateAuthority: path.Join(gp, "ca.crt"), KeepContext: false, } + if ext != nil { + + kcs.ExtensionCluster = ext + } else { + fmt.Println("extension is niLL update Endpoint") + } err = PopulateFromSettings(kcs, cfg) if err != nil { return false, errors.Wrap(err, "populating kubeconfig") diff --git a/pkg/minikube/kubeconfig/kubeconfig_test.go b/pkg/minikube/kubeconfig/kubeconfig_test.go index 5507f8142b..f617b03fe5 100644 --- a/pkg/minikube/kubeconfig/kubeconfig_test.go +++ b/pkg/minikube/kubeconfig/kubeconfig_test.go @@ -410,7 +410,7 @@ func TestUpdateIP(t *testing.T) { t.Parallel() configFilename := tempFile(t, test.existing) defer os.Remove(configFilename) - statusActual, err := UpdateEndpoint("minikube", test.hostname, test.port, configFilename) + statusActual, err := UpdateEndpoint("minikube", test.hostname, test.port, configFilename, nil) if err != nil && !test.err { t.Errorf("Got unexpected error: %v", err) } @@ -430,7 +430,7 @@ func TestUpdateIP(t *testing.T) { t.Fatal(err) } if !configEquals(actual, expected) { - t.Fatal("configs did not match") + t.Fatalf("configs did not match: Actual:\n%+v\n Expected:\n%+v", actual, expected) } }) diff --git a/pkg/minikube/kubeconfig/settings.go b/pkg/minikube/kubeconfig/settings.go index 42c50069ad..34fbbcb171 100644 --- a/pkg/minikube/kubeconfig/settings.go +++ b/pkg/minikube/kubeconfig/settings.go @@ -17,10 +17,11 @@ limitations under the License. package kubeconfig import ( + "fmt" "io/ioutil" "path/filepath" + "runtime/debug" "sync/atomic" - "time" "github.com/juju/mutex" "github.com/pkg/errors" @@ -28,7 +29,6 @@ import ( "k8s.io/client-go/tools/clientcmd/api" "k8s.io/klog/v2" "k8s.io/minikube/pkg/util/lock" - "k8s.io/minikube/pkg/version" ) // Settings is the minikubes settings for kubeconfig @@ -57,6 +57,12 @@ type Settings struct { // Should the certificate files be embedded instead of referenced by path EmbedCerts bool + // Extension meta data for the cluster + ExtensionCluster *Extension + + // Extension meta data for the cluster + ExtensionContext *Extension + // kubeConfigFile is the path where the kube config is stored // Only access this with atomic ops kubeConfigFile atomic.Value @@ -87,13 +93,12 @@ func PopulateFromSettings(cfg *Settings, apiCfg *api.Config) error { cluster.CertificateAuthority = cfg.CertificateAuthority } - ext := &internalExtension{ - Provider: "minikube.sigs.k8s.io", - Version: version.GetVersion(), - LastUpdate: time.Now().Format(time.RFC3339), + if cfg.ExtensionCluster != nil { + cluster.Extensions = map[string]runtime.Object{"cluster_info": cfg.ExtensionCluster.DeepCopy()} + } else { + fmt.Println("extension cluster is niLL populate") } - cluster.Extensions = map[string]runtime.Object{"cluster_info": ext.DeepCopy()} apiCfg.Clusters[clusterName] = cluster // user @@ -120,7 +125,13 @@ func PopulateFromSettings(cfg *Settings, apiCfg *api.Config) error { context.Cluster = cfg.ClusterName context.Namespace = cfg.Namespace context.AuthInfo = userName - context.Extensions = map[string]runtime.Object{"context_info": ext.DeepCopy()} + if cfg.ExtensionContext != nil { + context.Extensions = map[string]runtime.Object{"context_info": cfg.ExtensionContext.DeepCopy()} + } else { + debug.PrintStack() + fmt.Println("extension context is niLL populate") + } + apiCfg.Contexts[contextName] = context // Only set current context to minikube if the user has not used the keepContext flag @@ -150,6 +161,9 @@ func Update(kcs *Settings) error { return err } + ext := NewExtension() + kcs.ExtensionCluster = ext + kcs.ExtensionContext = ext err = PopulateFromSettings(kcs, kcfg) if err != nil { return err From ed03df5b0ae9e424af07404964c6ca8bb03c8b2d Mon Sep 17 00:00:00 2001 From: Medya Gh Date: Tue, 12 Jan 2021 18:49:14 -0800 Subject: [PATCH 54/91] remove debugging --- pkg/minikube/kubeconfig/kubeconfig.go | 4 ---- pkg/minikube/kubeconfig/kubeconfig_test.go | 22 ++++++++++++++++++++++ pkg/minikube/kubeconfig/settings.go | 8 -------- 3 files changed, 22 insertions(+), 12 deletions(-) diff --git a/pkg/minikube/kubeconfig/kubeconfig.go b/pkg/minikube/kubeconfig/kubeconfig.go index 4cfe650b96..25317fce23 100644 --- a/pkg/minikube/kubeconfig/kubeconfig.go +++ b/pkg/minikube/kubeconfig/kubeconfig.go @@ -106,7 +106,6 @@ func Endpoint(contextName string, configPath ...string) (string, int, error) { // UpdateEndpoint overwrites the IP stored in kubeconfig with the provided IP. func UpdateEndpoint(contextName string, hostname string, port int, confpath string, ext *Extension) (bool, error) { - fmt.Println("insude update endpoint") if hostname == "" { return false, fmt.Errorf("empty ip") } @@ -138,10 +137,7 @@ func UpdateEndpoint(contextName string, hostname string, port int, confpath stri KeepContext: false, } if ext != nil { - kcs.ExtensionCluster = ext - } else { - fmt.Println("extension is niLL update Endpoint") } err = PopulateFromSettings(kcs, cfg) if err != nil { diff --git a/pkg/minikube/kubeconfig/kubeconfig_test.go b/pkg/minikube/kubeconfig/kubeconfig_test.go index f617b03fe5..50b6abdfc1 100644 --- a/pkg/minikube/kubeconfig/kubeconfig_test.go +++ b/pkg/minikube/kubeconfig/kubeconfig_test.go @@ -183,6 +183,28 @@ users: client-key: /home/la-croix/.minikube/profiles/minikube/client.key `) +var kubeConfigWithExtension = []byte(` +apiVersion: v1 +clusters: +- cluster: + certificate-authority: /home/la-croix/.minikube/ca.crt + server: https://192.168.10.100:8080 + name: minikube +contexts: +- context: + cluster: minikube + user: minikube + name: minikube +current-context: minikube +kind: Config +preferences: {} +users: +- name: minikube + user: + client-certificate: /home/la-croix/.minikube/profiles/minikube/client.crt + client-key: /home/la-croix/.minikube/profiles/minikube/client.key +`) + func TestUpdate(t *testing.T) { setupCfg := &Settings{ ClusterName: "test", diff --git a/pkg/minikube/kubeconfig/settings.go b/pkg/minikube/kubeconfig/settings.go index 34fbbcb171..2d206c390b 100644 --- a/pkg/minikube/kubeconfig/settings.go +++ b/pkg/minikube/kubeconfig/settings.go @@ -17,10 +17,8 @@ limitations under the License. package kubeconfig import ( - "fmt" "io/ioutil" "path/filepath" - "runtime/debug" "sync/atomic" "github.com/juju/mutex" @@ -95,10 +93,7 @@ func PopulateFromSettings(cfg *Settings, apiCfg *api.Config) error { if cfg.ExtensionCluster != nil { cluster.Extensions = map[string]runtime.Object{"cluster_info": cfg.ExtensionCluster.DeepCopy()} - } else { - fmt.Println("extension cluster is niLL populate") } - apiCfg.Clusters[clusterName] = cluster // user @@ -127,9 +122,6 @@ func PopulateFromSettings(cfg *Settings, apiCfg *api.Config) error { context.AuthInfo = userName if cfg.ExtensionContext != nil { context.Extensions = map[string]runtime.Object{"context_info": cfg.ExtensionContext.DeepCopy()} - } else { - debug.PrintStack() - fmt.Println("extension context is niLL populate") } apiCfg.Contexts[contextName] = context From ee8d8578d805de97cc531182656793ac7391c276 Mon Sep 17 00:00:00 2001 From: Medya Gh Date: Wed, 13 Jan 2021 09:57:53 -0800 Subject: [PATCH 55/91] lint --- pkg/minikube/kubeconfig/kubeconfig_test.go | 22 ---------------------- 1 file changed, 22 deletions(-) diff --git a/pkg/minikube/kubeconfig/kubeconfig_test.go b/pkg/minikube/kubeconfig/kubeconfig_test.go index 50b6abdfc1..f617b03fe5 100644 --- a/pkg/minikube/kubeconfig/kubeconfig_test.go +++ b/pkg/minikube/kubeconfig/kubeconfig_test.go @@ -183,28 +183,6 @@ users: client-key: /home/la-croix/.minikube/profiles/minikube/client.key `) -var kubeConfigWithExtension = []byte(` -apiVersion: v1 -clusters: -- cluster: - certificate-authority: /home/la-croix/.minikube/ca.crt - server: https://192.168.10.100:8080 - name: minikube -contexts: -- context: - cluster: minikube - user: minikube - name: minikube -current-context: minikube -kind: Config -preferences: {} -users: -- name: minikube - user: - client-certificate: /home/la-croix/.minikube/profiles/minikube/client.crt - client-key: /home/la-croix/.minikube/profiles/minikube/client.key -`) - func TestUpdate(t *testing.T) { setupCfg := &Settings{ ClusterName: "test", From 731daf180a1dfec72433e9b0309b9966b888a295 Mon Sep 17 00:00:00 2001 From: Medya Gh Date: Wed, 13 Jan 2021 10:01:42 -0800 Subject: [PATCH 56/91] hyphen instead of underscore to match kubeconfig --- pkg/minikube/kubeconfig/extension.go | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pkg/minikube/kubeconfig/extension.go b/pkg/minikube/kubeconfig/extension.go index a6cbc46fe8..c320c85eee 100644 --- a/pkg/minikube/kubeconfig/extension.go +++ b/pkg/minikube/kubeconfig/extension.go @@ -29,7 +29,7 @@ type Extension struct { runtime.TypeMeta `json:",inline"` Version string `json:"version"` Provider string `json:"provider"` - LastUpdate string `json:"last_update"` + LastUpdate string `json:"last-update"` } // NewExtension returns a minikube formated kubeconfig's extension block to idenity clusters and contexts From d11149d7f6a6a7d7567b689303b9ca1feccb6fb0 Mon Sep 17 00:00:00 2001 From: Ilya Zuyev Date: Thu, 14 Jan 2021 10:51:57 -0800 Subject: [PATCH 57/91] make Arm64Platform private --- test/integration/aaa_download_only_test.go | 2 +- test/integration/aab_offline_test.go | 2 +- test/integration/addons_test.go | 2 +- test/integration/driver_install_or_update_test.go | 2 +- test/integration/functional_test.go | 4 ++-- test/integration/main_test.go | 4 ++-- test/integration/preload_test.go | 2 +- 7 files changed, 9 insertions(+), 9 deletions(-) diff --git a/test/integration/aaa_download_only_test.go b/test/integration/aaa_download_only_test.go index bbb743df7a..edf6e408bd 100644 --- a/test/integration/aaa_download_only_test.go +++ b/test/integration/aaa_download_only_test.go @@ -194,7 +194,7 @@ func TestDownloadOnlyKic(t *testing.T) { if err != nil { t.Errorf("failed to read tarball file %q: %v", tarball, err) } - if !Arm64Platform() { + if !arm64Platform() { // Make sure it has the correct checksum checksum := md5.Sum(contents) remoteChecksum, err := ioutil.ReadFile(download.PreloadChecksumPath(constants.DefaultKubernetesVersion, cRuntime)) diff --git a/test/integration/aab_offline_test.go b/test/integration/aab_offline_test.go index 73cb2246c4..2863647de9 100644 --- a/test/integration/aab_offline_test.go +++ b/test/integration/aab_offline_test.go @@ -34,7 +34,7 @@ func TestOffline(t *testing.T) { t.Run(rt, func(t *testing.T) { MaybeParallel(t) - if rt != "docker" && Arm64Platform() { + if rt != "docker" && arm64Platform() { t.Skipf("skipping %s - only docker runtime supported on arm64", t.Name()) } diff --git a/test/integration/addons_test.go b/test/integration/addons_test.go index f5fadcfe5e..22778012aa 100644 --- a/test/integration/addons_test.go +++ b/test/integration/addons_test.go @@ -42,7 +42,7 @@ import ( // TestAddons tests addons that require no special environment -- in parallel func TestAddons(t *testing.T) { - if !Arm64Platform() { + if !arm64Platform() { t.Skipf("Skip helm addon test for arm64") } diff --git a/test/integration/driver_install_or_update_test.go b/test/integration/driver_install_or_update_test.go index c64bd01e7c..f2cd29631e 100644 --- a/test/integration/driver_install_or_update_test.go +++ b/test/integration/driver_install_or_update_test.go @@ -42,7 +42,7 @@ func TestKVMDriverInstallOrUpdate(t *testing.T) { t.Skip("Skip if not linux.") } - if Arm64Platform() { + if arm64Platform() { t.Skip("Skip if arm64.") } diff --git a/test/integration/functional_test.go b/test/integration/functional_test.go index 423e7d5419..94e642ebb9 100644 --- a/test/integration/functional_test.go +++ b/test/integration/functional_test.go @@ -816,7 +816,7 @@ func validateServiceCmd(ctx context.Context, t *testing.T, profile string) { }() var echoServerArg string - if Arm64Platform() { + if arm64Platform() { echoServerArg = "k8s.gcr.io/echoserver-arm:1.8" } else { echoServerArg = "k8s.gcr.io/echoserver:1.10" @@ -994,7 +994,7 @@ func validateSSHCmd(ctx context.Context, t *testing.T, profile string) { // validateMySQL validates a minimalist MySQL deployment func validateMySQL(ctx context.Context, t *testing.T, profile string) { - if Arm64Platform() { + if arm64Platform() { t.Skip("arm64 is not supported by mysql. skip the test") return } diff --git a/test/integration/main_test.go b/test/integration/main_test.go index 64e5f64c5c..65ee8f5707 100644 --- a/test/integration/main_test.go +++ b/test/integration/main_test.go @@ -135,8 +135,8 @@ func GithubActionRunner() bool { return os.Getenv("GITHUB_ACTIONS") == "true" } -// Arm64Platform returns true if running on arm64/* platform -func Arm64Platform() bool { +// arm64Platform returns true if running on arm64/* platform +func arm64Platform() bool { return runtime.GOARCH == "arm64" } diff --git a/test/integration/preload_test.go b/test/integration/preload_test.go index a62951450a..ed3bedee36 100644 --- a/test/integration/preload_test.go +++ b/test/integration/preload_test.go @@ -31,7 +31,7 @@ func TestPreload(t *testing.T) { t.Skipf("skipping %s - incompatible with none driver", t.Name()) } - if Arm64Platform() { + if arm64Platform() { t.Skipf("skipping %s - not yet supported on arm64", t.Name()) } From 61157c0e56ff19c128963d7c6af52cbbcf94e43b Mon Sep 17 00:00:00 2001 From: Ilya Zuyev Date: Thu, 14 Jan 2021 11:50:56 -0800 Subject: [PATCH 58/91] Add GH issue link to output if a test is skipped on arm64 --- test/integration/aab_offline_test.go | 2 +- test/integration/addons_test.go | 2 +- test/integration/driver_install_or_update_test.go | 2 +- test/integration/functional_test.go | 2 +- test/integration/preload_test.go | 2 +- 5 files changed, 5 insertions(+), 5 deletions(-) diff --git a/test/integration/aab_offline_test.go b/test/integration/aab_offline_test.go index 2863647de9..ced6b5da2d 100644 --- a/test/integration/aab_offline_test.go +++ b/test/integration/aab_offline_test.go @@ -35,7 +35,7 @@ func TestOffline(t *testing.T) { MaybeParallel(t) if rt != "docker" && arm64Platform() { - t.Skipf("skipping %s - only docker runtime supported on arm64", t.Name()) + t.Skipf("skipping %s - only docker runtime supported on arm64. See https://github.com/kubernetes/minikube/issues/10144", t.Name()) } if rt != "docker" && NoneDriver() { diff --git a/test/integration/addons_test.go b/test/integration/addons_test.go index 22778012aa..0cb2a68012 100644 --- a/test/integration/addons_test.go +++ b/test/integration/addons_test.go @@ -43,7 +43,7 @@ import ( func TestAddons(t *testing.T) { if !arm64Platform() { - t.Skipf("Skip helm addon test for arm64") + t.Skipf("Skip helm addon test for arm64. See https://github.com/kubernetes/minikube/issues/10144") } profile := UniqueProfileName("addons") diff --git a/test/integration/driver_install_or_update_test.go b/test/integration/driver_install_or_update_test.go index f2cd29631e..13152e1310 100644 --- a/test/integration/driver_install_or_update_test.go +++ b/test/integration/driver_install_or_update_test.go @@ -43,7 +43,7 @@ func TestKVMDriverInstallOrUpdate(t *testing.T) { } if arm64Platform() { - t.Skip("Skip if arm64.") + t.Skip("Skip if arm64. See https://github.com/kubernetes/minikube/issues/10144") } MaybeParallel(t) diff --git a/test/integration/functional_test.go b/test/integration/functional_test.go index 94e642ebb9..6faa0e6761 100644 --- a/test/integration/functional_test.go +++ b/test/integration/functional_test.go @@ -995,7 +995,7 @@ func validateSSHCmd(ctx context.Context, t *testing.T, profile string) { // validateMySQL validates a minimalist MySQL deployment func validateMySQL(ctx context.Context, t *testing.T, profile string) { if arm64Platform() { - t.Skip("arm64 is not supported by mysql. skip the test") + t.Skip("arm64 is not supported by mysql. Skip the test. See https://github.com/kubernetes/minikube/issues/10144") return } diff --git a/test/integration/preload_test.go b/test/integration/preload_test.go index ed3bedee36..e0c868f9a0 100644 --- a/test/integration/preload_test.go +++ b/test/integration/preload_test.go @@ -32,7 +32,7 @@ func TestPreload(t *testing.T) { } if arm64Platform() { - t.Skipf("skipping %s - not yet supported on arm64", t.Name()) + t.Skipf("skipping %s - not yet supported on arm64. See https://github.com/kubernetes/minikube/issues/10144", t.Name()) } profile := UniqueProfileName("test-preload") From 5cc965921ad1c3c8bb7c98c106f48d953c925080 Mon Sep 17 00:00:00 2001 From: Ilya Zuyev Date: Thu, 14 Jan 2021 11:51:56 -0800 Subject: [PATCH 59/91] Remove redundant return after t.Skip(..) --- test/integration/functional_test.go | 1 - 1 file changed, 1 deletion(-) diff --git a/test/integration/functional_test.go b/test/integration/functional_test.go index 6faa0e6761..5fe000844d 100644 --- a/test/integration/functional_test.go +++ b/test/integration/functional_test.go @@ -996,7 +996,6 @@ func validateSSHCmd(ctx context.Context, t *testing.T, profile string) { func validateMySQL(ctx context.Context, t *testing.T, profile string) { if arm64Platform() { t.Skip("arm64 is not supported by mysql. Skip the test. See https://github.com/kubernetes/minikube/issues/10144") - return } defer PostMortemLogs(t, profile) From 839bd03621bf83e1d794adf9b68d2dc2b05c52be Mon Sep 17 00:00:00 2001 From: Ilya Zuyev Date: Thu, 14 Jan 2021 12:28:10 -0800 Subject: [PATCH 60/91] Add unit test for archTag() --- pkg/minikube/bootstrapper/images/images.go | 5 +++- .../bootstrapper/images/images_test.go | 29 +++++++++++++++++++ 2 files changed, 33 insertions(+), 1 deletion(-) diff --git a/pkg/minikube/bootstrapper/images/images.go b/pkg/minikube/bootstrapper/images/images.go index de5292e627..b1acc13c93 100644 --- a/pkg/minikube/bootstrapper/images/images.go +++ b/pkg/minikube/bootstrapper/images/images.go @@ -122,7 +122,10 @@ func etcd(v semver.Version, mirror string) string { // archTag returns a CPU architecture suffix for images func archTag(needsArchSuffix bool) string { - if runtime.GOARCH == "amd64" || !needsArchSuffix { + return archTagInt(runtime.GOARCH, needsArchSuffix) +} +func archTagInt(arch string, needsArchSuffix bool) string { + if arch == "amd64" || !needsArchSuffix { return ":" } return "-" + runtime.GOARCH + ":" diff --git a/pkg/minikube/bootstrapper/images/images_test.go b/pkg/minikube/bootstrapper/images/images_test.go index 3d77360340..5390daf617 100644 --- a/pkg/minikube/bootstrapper/images/images_test.go +++ b/pkg/minikube/bootstrapper/images/images_test.go @@ -17,6 +17,8 @@ limitations under the License. package images import ( + "fmt" + "runtime" "testing" "github.com/google/go-cmp/cmp" @@ -45,3 +47,30 @@ func TestAuxiliaryMirror(t *testing.T) { t.Errorf("images mismatch (-want +got):\n%s", diff) } } + +func TestArchTag(t *testing.T) { + tests := []struct { + arch string + suffix bool + expected string + }{ + { + "amd64", true, ":", + }, + { + "amd64", false, ":", + }, + { + "arm64", false, ":", + }, + { + "arm64", true, fmt.Sprintf("-%s:", runtime.GOARCH), + }, + } + for _, test := range tests { + if tag := archTagInt(test.arch, test.suffix); tag != test.expected { + t.Errorf("For arch: %v and suffix flag: '%v' expected %v got %v", + test.arch, test.suffix, test.expected, tag) + } + } +} From 7750f709ce8fdb121d9e4fd5dc214f2118b36e2e Mon Sep 17 00:00:00 2001 From: Ilya Zuyev Date: Thu, 14 Jan 2021 12:30:28 -0800 Subject: [PATCH 61/91] Add t.Skip(..) for TestDownloadOnlyKic test case --- test/integration/aaa_download_only_test.go | 22 ++++++++++++---------- 1 file changed, 12 insertions(+), 10 deletions(-) diff --git a/test/integration/aaa_download_only_test.go b/test/integration/aaa_download_only_test.go index edf6e408bd..b39d98bae1 100644 --- a/test/integration/aaa_download_only_test.go +++ b/test/integration/aaa_download_only_test.go @@ -194,15 +194,17 @@ func TestDownloadOnlyKic(t *testing.T) { if err != nil { t.Errorf("failed to read tarball file %q: %v", tarball, err) } - if !arm64Platform() { - // Make sure it has the correct checksum - checksum := md5.Sum(contents) - remoteChecksum, err := ioutil.ReadFile(download.PreloadChecksumPath(constants.DefaultKubernetesVersion, cRuntime)) - if err != nil { - t.Errorf("failed to read checksum file %q : %v", download.PreloadChecksumPath(constants.DefaultKubernetesVersion, cRuntime), err) - } - if string(remoteChecksum) != string(checksum[:]) { - t.Errorf("failed to verify checksum. checksum of %q does not match remote checksum (%q != %q)", tarball, string(remoteChecksum), string(checksum[:])) - } + + if arm64Platform() { + t.Skip("Skip for arm64 platform. See https://github.com/kubernetes/minikube/issues/10144") + } + // Make sure it has the correct checksum + checksum := md5.Sum(contents) + remoteChecksum, err := ioutil.ReadFile(download.PreloadChecksumPath(constants.DefaultKubernetesVersion, cRuntime)) + if err != nil { + t.Errorf("failed to read checksum file %q : %v", download.PreloadChecksumPath(constants.DefaultKubernetesVersion, cRuntime), err) + } + if string(remoteChecksum) != string(checksum[:]) { + t.Errorf("failed to verify checksum. checksum of %q does not match remote checksum (%q != %q)", tarball, string(remoteChecksum), string(checksum[:])) } } From e318f721e646f25ac101de74ec3c48548d53a26a Mon Sep 17 00:00:00 2001 From: Ilya Zuyev Date: Thu, 14 Jan 2021 12:34:46 -0800 Subject: [PATCH 62/91] comment imageID(..) --- test/integration/functional_test.go | 3 +++ 1 file changed, 3 insertions(+) diff --git a/test/integration/functional_test.go b/test/integration/functional_test.go index 5fe000844d..f271d7d322 100644 --- a/test/integration/functional_test.go +++ b/test/integration/functional_test.go @@ -361,6 +361,9 @@ func validateExtraConfig(ctx context.Context, t *testing.T, profile string) { } +// imageID returns a docker image id for image `image` and current architecture +// 'image' is supposed to be one commonly used in minikube integration tests, +// like k8s 'pause' func imageID(image string) string { ids := map[string]map[string]string{ "pause": { From 0a75e7ead39bd1f0d3e7ac7c722d3b0331852a64 Mon Sep 17 00:00:00 2001 From: Ilya Zuyev Date: Thu, 14 Jan 2021 12:42:27 -0800 Subject: [PATCH 63/91] comment '--memory' handling in validateDryRun(..) --- test/integration/functional_test.go | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/test/integration/functional_test.go b/test/integration/functional_test.go index f271d7d322..3bce17b17b 100644 --- a/test/integration/functional_test.go +++ b/test/integration/functional_test.go @@ -516,6 +516,10 @@ func validateDryRun(ctx context.Context, t *testing.T, profile string) { var startArgs []string orgStartArgs := StartArgs() + // remove '--memory=xxx' and '--memory xxx' arguments + // in this test we need to pass "--memory 250MB" + // and need to avoid collision if another value for 'memory' was set + // externally in StartArgs() for i := 0; i < len(orgStartArgs); i++ { arg := orgStartArgs[i] if strings.HasPrefix(arg, "--memory=") { From 70d7018f4e4a23dd66fe53a1c64e39f4fb1ea946 Mon Sep 17 00:00:00 2001 From: Thomas Stromberg Date: Thu, 14 Jan 2021 14:39:06 -0800 Subject: [PATCH 64/91] arm64: Remove legacy arch suffixes from image names --- pkg/minikube/bootstrapper/images/images.go | 31 ++++------------------ 1 file changed, 5 insertions(+), 26 deletions(-) diff --git a/pkg/minikube/bootstrapper/images/images.go b/pkg/minikube/bootstrapper/images/images.go index 0a9d4db0d2..8fcebd3a30 100644 --- a/pkg/minikube/bootstrapper/images/images.go +++ b/pkg/minikube/bootstrapper/images/images.go @@ -20,7 +20,6 @@ package images import ( "fmt" "path" - "runtime" "github.com/blang/semver" "k8s.io/minikube/pkg/version" @@ -34,7 +33,7 @@ func Pause(v semver.Version, mirror string) string { if semver.MustParseRange("<1.18.0-alpha.0")(v) { pv = "3.1" } - return path.Join(kubernetesRepo(mirror), "pause"+archTag(false)+pv) + return path.Join(kubernetesRepo(mirror), "pause:"+pv) } // essentials returns images needed too bootstrap a Kubernetes @@ -53,13 +52,7 @@ func essentials(mirror string, v semver.Version) []string { // componentImage returns a Kubernetes component image to pull func componentImage(name string, v semver.Version, mirror string) string { - needsArchSuffix := false - ancient := semver.MustParseRange("<1.12.0") - if ancient(v) { - needsArchSuffix = true - } - - return fmt.Sprintf("%sv%s", path.Join(kubernetesRepo(mirror), name+archTag(needsArchSuffix)), v) + return fmt.Sprintf("%s:v%s", path.Join(kubernetesRepo(mirror), name), v) } // coreDNS returns the images used for CoreDNS @@ -83,17 +76,11 @@ func coreDNS(v semver.Version, mirror string) string { case 11: cv = "1.1.3" } - return path.Join(kubernetesRepo(mirror), "coredns"+":"+cv) + return path.Join(kubernetesRepo(mirror), "coredns:"+cv) } // etcd returns the image used for etcd func etcd(v semver.Version, mirror string) string { - needsArchSuffix := false - ancient := semver.MustParseRange("<1.12.0") - if ancient(v) { - needsArchSuffix = true - } - // Should match `DefaultEtcdVersion` in: // https://github.com/kubernetes/kubernetes/blob/master/cmd/kubeadm/app/constants/constants.go ev := "3.4.13-0" @@ -116,15 +103,7 @@ func etcd(v semver.Version, mirror string) string { ev = "3.4.9-1" } - return path.Join(kubernetesRepo(mirror), "etcd"+archTag(needsArchSuffix)+ev) -} - -// archTag returns a CPU architecture suffix for images -func archTag(hasTag bool) string { - if runtime.GOARCH == "amd64" && !hasTag { - return ":" - } - return "-" + runtime.GOARCH + ":" + return path.Join(kubernetesRepo(mirror), "etcd:"+ev) } // auxiliary returns images that are helpful for running minikube @@ -139,7 +118,7 @@ func auxiliary(mirror string) []string { // storageProvisioner returns the minikube storage provisioner image func storageProvisioner(mirror string) string { - return path.Join(minikubeRepo(mirror), "storage-provisioner"+archTag(false)+version.GetStorageProvisionerVersion()) + return path.Join(minikubeRepo(mirror), "storage-provisioner:"+version.GetStorageProvisionerVersion()) } // dashboardFrontend returns the image used for the dashboard frontend From e62aba44c64c9b3989ac322f410fb839d68441a4 Mon Sep 17 00:00:00 2001 From: Ilya Zuyev Date: Thu, 14 Jan 2021 15:01:24 -0800 Subject: [PATCH 65/91] revert changes for '--memroy' adjustment in `validateDryRun` --- test/integration/functional_test.go | 21 +-------------------- 1 file changed, 1 insertion(+), 20 deletions(-) diff --git a/test/integration/functional_test.go b/test/integration/functional_test.go index 3bce17b17b..aa6d53f4a1 100644 --- a/test/integration/functional_test.go +++ b/test/integration/functional_test.go @@ -513,26 +513,7 @@ func validateDryRun(ctx context.Context, t *testing.T, profile string) { defer cancel() // Too little memory! - var startArgs []string - orgStartArgs := StartArgs() - - // remove '--memory=xxx' and '--memory xxx' arguments - // in this test we need to pass "--memory 250MB" - // and need to avoid collision if another value for 'memory' was set - // externally in StartArgs() - for i := 0; i < len(orgStartArgs); i++ { - arg := orgStartArgs[i] - if strings.HasPrefix(arg, "--memory=") { - continue - } - if arg == "--memory" { - i++ // skip next - continue - } - startArgs = append(startArgs, arg) - } - - startArgs = append([]string{"start", "-p", profile, "--dry-run", "--memory", "250MB", "--alsologtostderr"}, startArgs...) + startArgs := append([]string{"start", "-p", profile, "--dry-run", "--memory", "250MB", "--alsologtostderr"}, StartArgs()...) c := exec.CommandContext(mctx, Target(), startArgs...) rr, err := Run(t, c) From dacb0b33e25d6594f43902c11dbe9d7fdab0ebf4 Mon Sep 17 00:00:00 2001 From: Ilya Zuyev Date: Thu, 14 Jan 2021 15:02:09 -0800 Subject: [PATCH 66/91] use k8s.gcr.io/echoserver[-arm]:1.8 for tests --- test/integration/functional_test.go | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/test/integration/functional_test.go b/test/integration/functional_test.go index aa6d53f4a1..f55692eacb 100644 --- a/test/integration/functional_test.go +++ b/test/integration/functional_test.go @@ -804,10 +804,11 @@ func validateServiceCmd(ctx context.Context, t *testing.T, profile string) { }() var echoServerArg string + // k8s.gcr.io/echoserver is not multiarch if arm64Platform() { echoServerArg = "k8s.gcr.io/echoserver-arm:1.8" } else { - echoServerArg = "k8s.gcr.io/echoserver:1.10" + echoServerArg = "k8s.gcr.io/echoserver:1.8" } rr, err := Run(t, exec.CommandContext(ctx, "kubectl", "--context", profile, "create", "deployment", "hello-node", "--image="+echoServerArg)) From d67a57101bdd49d2e897b1d39ada2a6b8ed7241a Mon Sep 17 00:00:00 2001 From: Ilya Zuyev Date: Thu, 14 Jan 2021 15:13:03 -0800 Subject: [PATCH 67/91] simplify validateServiceCmd(..) logic --- test/integration/functional_test.go | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/test/integration/functional_test.go b/test/integration/functional_test.go index f55692eacb..155791e75f 100644 --- a/test/integration/functional_test.go +++ b/test/integration/functional_test.go @@ -803,15 +803,15 @@ func validateServiceCmd(ctx context.Context, t *testing.T, profile string) { } }() - var echoServerArg string - // k8s.gcr.io/echoserver is not multiarch + var rr *RunResult + var err error + // k8s.gcr.io/echoserver is not multi-arch if arm64Platform() { - echoServerArg = "k8s.gcr.io/echoserver-arm:1.8" + rr, err = Run(t, exec.CommandContext(ctx, "kubectl", "--context", profile, "create", "deployment", "hello-node", "--image=k8s.gcr.io/echoserver-arm:1.8")) } else { - echoServerArg = "k8s.gcr.io/echoserver:1.8" + rr, err = Run(t, exec.CommandContext(ctx, "kubectl", "--context", profile, "create", "deployment", "hello-node", "--image=k8s.gcr.io/echoserver:1.8")) } - rr, err := Run(t, exec.CommandContext(ctx, "kubectl", "--context", profile, "create", "deployment", "hello-node", "--image="+echoServerArg)) if err != nil { t.Fatalf("failed to create hello-node deployment with this command %q: %v.", rr.Command(), err) } From 89a8cdc794098f9ba0550fbb5eeb19bc3dd8774d Mon Sep 17 00:00:00 2001 From: Medya Gh Date: Thu, 14 Jan 2021 15:37:43 -0800 Subject: [PATCH 68/91] change time format to RFC1123 --- pkg/minikube/kubeconfig/extension.go | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/pkg/minikube/kubeconfig/extension.go b/pkg/minikube/kubeconfig/extension.go index c320c85eee..c1a1321bf7 100644 --- a/pkg/minikube/kubeconfig/extension.go +++ b/pkg/minikube/kubeconfig/extension.go @@ -35,9 +35,10 @@ type Extension struct { // NewExtension returns a minikube formated kubeconfig's extension block to idenity clusters and contexts func NewExtension() *Extension { return &Extension{ - Provider: "minikube.sigs.k8s.io", - Version: version.GetVersion(), - LastUpdate: time.Now().Format(time.RFC3339)} + Provider: "minikube.sigs.k8s.io", + Version: version.GetVersion(), + // time format matching other RFC in notify.go + LastUpdate: time.Now().Format(time.RFC1123)} } // DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new Extension. From 79ae3eb9c77c576b9f1643e1f0b0f76c892242be Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Anders=20F=20Bj=C3=B6rklund?= Date: Fri, 15 Jan 2021 19:14:23 +0100 Subject: [PATCH 69/91] Upgrade Docker, from 20.10.1 to 20.10.2 --- deploy/iso/minikube-iso/package/docker-bin/docker-bin.hash | 1 + deploy/iso/minikube-iso/package/docker-bin/docker-bin.mk | 2 +- 2 files changed, 2 insertions(+), 1 deletion(-) diff --git a/deploy/iso/minikube-iso/package/docker-bin/docker-bin.hash b/deploy/iso/minikube-iso/package/docker-bin/docker-bin.hash index 4364f390f6..7d1aa5a788 100644 --- a/deploy/iso/minikube-iso/package/docker-bin/docker-bin.hash +++ b/deploy/iso/minikube-iso/package/docker-bin/docker-bin.hash @@ -25,3 +25,4 @@ sha256 ddb13aff1fcdcceb710bf71a210169b9c1abfd7420eeaf42cf7975f8fae2fcc8 docker- sha256 9f1ec28e357a8f18e9561129239caf9c0807d74756e21cc63637c7fdeaafe847 docker-19.03.14.tgz sha256 02936a3585f12f13b21b95e02ae722d74eaf1870b536997e914659ee307b2ac4 docker-20.10.0.tgz sha256 8790f3b94ee07ca69a9fdbd1310cbffc729af0a07e5bf9f34a79df1e13d2e50e docker-20.10.1.tgz +sha256 97017e32a8ecbdd1826bb3c7b1424303ee0dea3f900d33591b1df5e394ed4eed docker-20.10.2.tgz diff --git a/deploy/iso/minikube-iso/package/docker-bin/docker-bin.mk b/deploy/iso/minikube-iso/package/docker-bin/docker-bin.mk index 7b2eb7b77f..db38e6a105 100644 --- a/deploy/iso/minikube-iso/package/docker-bin/docker-bin.mk +++ b/deploy/iso/minikube-iso/package/docker-bin/docker-bin.mk @@ -4,7 +4,7 @@ # ################################################################################ -DOCKER_BIN_VERSION = 20.10.1 +DOCKER_BIN_VERSION = 20.10.2 DOCKER_BIN_SITE = https://download.docker.com/linux/static/stable/x86_64 DOCKER_BIN_SOURCE = docker-$(DOCKER_BIN_VERSION).tgz From 9367439dace4952516bc4d11166747bd11b8fe75 Mon Sep 17 00:00:00 2001 From: Ilya Zuyev Date: Fri, 15 Jan 2021 16:07:30 -0800 Subject: [PATCH 70/91] add e2e-linux-arm64 to Makefile e2e-cross target --- Makefile | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/Makefile b/Makefile index 7e4ca12576..700fda20a1 100644 --- a/Makefile +++ b/Makefile @@ -216,8 +216,9 @@ else go build -tags "$(MINIKUBE_BUILD_TAGS)" -ldflags="$(MINIKUBE_LDFLAGS)" -a -o $@ k8s.io/minikube/cmd/minikube endif -.PHONY: e2e-linux-amd64 e2e-darwin-amd64 e2e-windows-amd64.exe +.PHONY: e2e-linux-amd64 e2e-linux-arm64 e2e-darwin-amd64 e2e-windows-amd64.exe e2e-linux-amd64: out/e2e-linux-amd64 ## Execute end-to-end testing for Linux 64bit +e2e-linux-arm64: out/e2e-linux-arm64 ## Execute end-to-end testing for Linux ARM 64bit e2e-darwin-amd64: out/e2e-darwin-amd64 ## Execute end-to-end testing for Darwin 64bit e2e-windows-amd64.exe: out/e2e-windows-amd64.exe ## Execute end-to-end testing for Windows 64bit @@ -377,7 +378,7 @@ darwin: minikube-darwin-amd64 ## Build minikube for Darwin 64bit linux: minikube-linux-amd64 ## Build minikube for Linux 64bit .PHONY: e2e-cross -e2e-cross: e2e-linux-amd64 e2e-darwin-amd64 e2e-windows-amd64.exe ## End-to-end cross test +e2e-cross: e2e-linux-amd64 e2e-linux-arm64 e2e-darwin-amd64 e2e-windows-amd64.exe ## End-to-end cross test .PHONY: checksum checksum: ## Generate checksums From 541193c9459e172b45f6bc164e28ed6717ae1c61 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Anders=20F=20Bj=C3=B6rklund?= Date: Sat, 16 Jan 2021 14:43:40 +0100 Subject: [PATCH 71/91] Address review comments, rename to ssh-ip-address --- cmd/minikube/cmd/start_flags.go | 4 ++-- pkg/drivers/ssh/ssh.go | 2 -- pkg/minikube/config/types.go | 8 ++++---- pkg/minikube/registry/drvs/ssh/ssh.go | 6 +++--- site/content/en/docs/commands/start.md | 2 +- site/content/en/docs/drivers/includes/ssh_usage.inc | 2 +- 6 files changed, 11 insertions(+), 13 deletions(-) diff --git a/cmd/minikube/cmd/start_flags.go b/cmd/minikube/cmd/start_flags.go index adebc115b7..4893ab6718 100644 --- a/cmd/minikube/cmd/start_flags.go +++ b/cmd/minikube/cmd/start_flags.go @@ -110,7 +110,7 @@ const ( network = "network" startNamespace = "namespace" trace = "trace" - sshIPAddress = "ip-address" + sshIPAddress = "ssh-ip-address" sshSSHUser = "ssh-user" sshSSHKey = "ssh-key" sshSSHPort = "ssh-port" @@ -347,7 +347,7 @@ func generateClusterConfig(cmd *cobra.Command, existing *config.ClusterConfig, k NatNicType: viper.GetString(natNicType), StartHostTimeout: viper.GetDuration(waitTimeout), ExposedPorts: viper.GetStringSlice(ports), - IPAddress: viper.GetString(sshIPAddress), + SSHIPAddress: viper.GetString(sshIPAddress), SSHUser: viper.GetString(sshSSHUser), SSHKey: viper.GetString(sshSSHKey), SSHPort: viper.GetInt(sshSSHPort), diff --git a/pkg/drivers/ssh/ssh.go b/pkg/drivers/ssh/ssh.go index 59cb8170f0..d36fd8b073 100644 --- a/pkg/drivers/ssh/ssh.go +++ b/pkg/drivers/ssh/ssh.go @@ -102,8 +102,6 @@ func (d *Driver) PreCreateCheck() error { if _, err := os.Stat(d.SSHKey); os.IsNotExist(err) { return fmt.Errorf("SSH key does not exist: %q", d.SSHKey) } - - // TODO: validate the key is a valid key } return nil diff --git a/pkg/minikube/config/types.go b/pkg/minikube/config/types.go index 332fcc57ce..fe533bf0a7 100644 --- a/pkg/minikube/config/types.go +++ b/pkg/minikube/config/types.go @@ -66,10 +66,10 @@ type ClusterConfig struct { HostDNSResolver bool // Only used by virtualbox HostOnlyNicType string // Only used by virtualbox NatNicType string // Only used by virtualbox - IPAddress string // Only used by ssh - SSHUser string // Only used by ssh - SSHKey string // Only used by ssh - SSHPort int // Only used by ssh + SSHIPAddress string // Only used by ssh driver + SSHUser string // Only used by ssh driver + SSHKey string // Only used by ssh driver + SSHPort int // Only used by ssh driver KubernetesConfig KubernetesConfig Nodes []Node Addons map[string]bool diff --git a/pkg/minikube/registry/drvs/ssh/ssh.go b/pkg/minikube/registry/drvs/ssh/ssh.go index 83b26da36d..4d7446d626 100644 --- a/pkg/minikube/registry/drvs/ssh/ssh.go +++ b/pkg/minikube/registry/drvs/ssh/ssh.go @@ -50,17 +50,17 @@ func configure(cc config.ClusterConfig, n config.Node) (interface{}, error) { ContainerRuntime: cc.KubernetesConfig.ContainerRuntime, }) - if cc.IPAddress == "" { + if cc.SSHIPAddress == "" { return nil, errors.Errorf("please provide an IP address") } // We don't want the API server listening on loopback interface, // even if we might use a tunneled VM port for the SSH service - if cc.IPAddress == "127.0.0.1" || cc.IPAddress == "localhost" { + if cc.SSHIPAddress == "127.0.0.1" || cc.SSHIPAddress == "localhost" { return nil, errors.Errorf("please provide real IP address") } - d.IPAddress = cc.IPAddress + d.IPAddress = cc.SSHIPAddress d.SSHUser = cc.SSHUser d.SSHKey = cc.SSHKey d.SSHPort = cc.SSHPort diff --git a/site/content/en/docs/commands/start.md b/site/content/en/docs/commands/start.md index 83639c9d4f..13505e4190 100644 --- a/site/content/en/docs/commands/start.md +++ b/site/content/en/docs/commands/start.md @@ -64,7 +64,6 @@ minikube start [flags] --insecure-registry strings Insecure Docker registries to pass to the Docker daemon. The default service CIDR range will automatically be added. --install-addons If set, install addons. Defaults to true. (default true) --interactive Allow user prompts for more information (default true) - --ip-address string IP address (ssh driver only) --iso-url strings Locations to fetch the minikube ISO from. (default [https://storage.googleapis.com/minikube/iso/minikube-v1.16.0.iso,https://github.com/kubernetes/minikube/releases/download/v1.16.0/minikube-v1.16.0.iso,https://kubernetes.oss-cn-hangzhou.aliyuncs.com/minikube/iso/minikube-v1.16.0.iso]) --keep-context This will keep the existing kubectl context and will create a minikube context. --kubernetes-version string The Kubernetes version that the minikube VM will use (ex: v1.2.3, 'stable' for v1.20.0, 'latest' for v1.20.0). Defaults to 'stable'. @@ -89,6 +88,7 @@ minikube start [flags] --preload If set, download tarball of preloaded images if available to improve start time. Defaults to true. (default true) --registry-mirror strings Registry mirrors to pass to the Docker daemon --service-cluster-ip-range string The CIDR to be used for service cluster IPs. (default "10.96.0.0/12") + --ssh-ip-address string IP address (ssh driver only) --ssh-key string SSH key (ssh driver only) --ssh-port int SSH port (ssh driver only) (default 22) --ssh-user string SSH user (ssh driver only) (default "root") diff --git a/site/content/en/docs/drivers/includes/ssh_usage.inc b/site/content/en/docs/drivers/includes/ssh_usage.inc index d4b48b82db..608383fe81 100644 --- a/site/content/en/docs/drivers/includes/ssh_usage.inc +++ b/site/content/en/docs/drivers/includes/ssh_usage.inc @@ -20,6 +20,6 @@ This VM must also meet the [kubeadm requirements](https://kubernetes.io/docs/set The ssh driver requires the IP address of the VM to use. ```shell -minikube start --driver=ssh --ip-address=vm.example.com +minikube start --driver=ssh --ssh-ip-address=vm.example.com ``` From c7b9662da9e8623ad3c85db7d92f98a4da8710ce Mon Sep 17 00:00:00 2001 From: zouyu Date: Mon, 18 Jan 2021 11:33:25 +0800 Subject: [PATCH 72/91] Remove duplicate json key Signed-off-by: zouyu --- translations/ko.json | 3 +-- translations/pl.json | 3 +-- translations/zh-CN.json | 3 +-- 3 files changed, 3 insertions(+), 6 deletions(-) diff --git a/translations/ko.json b/translations/ko.json index 03c153eb6e..8f3fe07c87 100644 --- a/translations/ko.json +++ b/translations/ko.json @@ -24,7 +24,6 @@ "A set of apiserver IP Addresses which are used in the generated certificate for kubernetes. This can be used if you want to make the apiserver available from outside the machine": "", "A set of apiserver names which are used in the generated certificate for kubernetes. This can be used if you want to make the apiserver available from outside the machine": "", "A set of key=value pairs that describe feature gates for alpha/experimental features.": "", - "Access the Kubernetes dashboard running within the minikube cluster": "minikube 클러스터 내의 쿠버네티스 대시보드에 접근합니다", "Access the kubernetes dashboard running within the minikube cluster": "minikube 클러스터 내의 쿠버네티스 대시보드에 접근합니다", "Access to ports below 1024 may fail on Windows with OpenSSH clients older than v8.1. For more information, see: https://minikube.sigs.k8s.io/docs/handbook/accessing/#access-to-ports-1024-on-windows-requires-root-permission": "", "Add SSH identity key to SSH authentication agent": "", @@ -749,4 +748,4 @@ "{{.prefix}}minikube {{.version}} on {{.platform}}": "{{.prefix}}{{.platform}} 위의 minikube {{.version}}", "{{.type}} is not yet a supported filesystem. We will try anyways!": "", "{{.url}} is not accessible: {{.error}}": "{{.url}} 이 접근 불가능합니다: {{.error}}" -} \ No newline at end of file +} diff --git a/translations/pl.json b/translations/pl.json index 8d0e6a64c6..d52ba3813c 100644 --- a/translations/pl.json +++ b/translations/pl.json @@ -25,7 +25,6 @@ "A set of apiserver IP Addresses which are used in the generated certificate for kubernetes. This can be used if you want to make the apiserver available from outside the machine": "", "A set of apiserver names which are used in the generated certificate for kubernetes. This can be used if you want to make the apiserver available from outside the machine": "", "A set of key=value pairs that describe feature gates for alpha/experimental features.": "", - "Access the Kubernetes dashboard running within the minikube cluster": "", "Access the kubernetes dashboard running within the minikube cluster": "Dostęp do dashboardu uruchomionego w klastrze kubernetesa w minikube", "Add an image to local cache.": "", "Add machine IP to NO_PROXY environment variable": "", @@ -808,4 +807,4 @@ "{{.prefix}}minikube {{.version}} on {{.platform}}": "{{.prefix}}minikube {{.version}} na {{.platform}}", "{{.type}} is not yet a supported filesystem. We will try anyways!": "{{.type}} nie jest wspierany przez system plików. I tak spróbujemy!", "{{.url}} is not accessible: {{.error}}": "" -} \ No newline at end of file +} diff --git a/translations/zh-CN.json b/translations/zh-CN.json index b361ef5bf2..002efa8616 100644 --- a/translations/zh-CN.json +++ b/translations/zh-CN.json @@ -32,7 +32,6 @@ "A set of apiserver names which are used in the generated certificate for kubernetes. This can be used if you want to make the apiserver available from outside the machine": "一组在为 kubernetes 生成的证书中使用的 apiserver 名称。如果您希望将此 apiserver 设置为可从机器外部访问,则可以使用这组 apiserver 名称", "A set of key=value pairs that describe configuration that may be passed to different components.\nThe key should be '.' separated, and the first part before the dot is the component to apply the configuration to.\nValid components are: kubelet, kubeadm, apiserver, controller-manager, etcd, proxy, scheduler\nValid kubeadm parameters:": "一组用于描述可传递给不同组件的配置的键值对。\n其中键应以英文句点“.”分隔,英文句点前面的第一个部分是应用该配置的组件。\n有效组件包括:kubelet、kubeadm、apiserver、controller-manager、etcd、proxy、scheduler\n有效 kubeadm 参数包括:", "A set of key=value pairs that describe feature gates for alpha/experimental features.": "一组用于描述 alpha 版功能/实验性功能的功能限制的键值对。", - "Access the Kubernetes dashboard running within the minikube cluster": "", "Access the kubernetes dashboard running within the minikube cluster": "访问在 minikube 集群中运行的 kubernetes dashboard", "Add an image to local cache.": "将 image 添加到本地缓存。", "Add machine IP to NO_PROXY environment variable": "将机器IP添加到环境变量 NO_PROXY 中", @@ -917,4 +916,4 @@ "{{.prefix}}minikube {{.version}} on {{.platform}}": "{{.platform}} 上的 {{.prefix}}minikube {{.version}}", "{{.type}} is not yet a supported filesystem. We will try anyways!": "", "{{.url}} is not accessible: {{.error}}": "" -} \ No newline at end of file +} From c8cbb513f0796e0353433a24dfdb43446c55bdb7 Mon Sep 17 00:00:00 2001 From: zouyu Date: Mon, 18 Jan 2021 13:30:41 +0800 Subject: [PATCH 73/91] Add some zh-CN translations Signed-off-by: zouyu --- translations/zh-CN.json | 46 ++++++++++++++++++++--------------------- 1 file changed, 23 insertions(+), 23 deletions(-) diff --git a/translations/zh-CN.json b/translations/zh-CN.json index b361ef5bf2..ac1fa8eb67 100644 --- a/translations/zh-CN.json +++ b/translations/zh-CN.json @@ -1,7 +1,7 @@ { - "\"The '{{.minikube_addon}}' addon is disabled": "", + "\"The '{{.minikube_addon}}' addon is disabled": "'{{.minikube_addon}}' 插件已被禁用", "\"{{.context}}\" context has been updated to point to {{.hostname}}:{{.port}}": "", - "\"{{.machineName}}\" does not exist, nothing to stop": "", + "\"{{.machineName}}\" does not exist, nothing to stop": "\"{{.machineName}}\" 不存在,没有什么可供停止的", "\"{{.minikube_addon}}\" was successfully disabled": "已成功禁用 \"{{.minikube_addon}}\"", "\"{{.name}}\" cluster does not exist. Proceeding ahead with cleanup.": "\"{{.name}}\" 集群不存在,将继续清理", "\"{{.name}}\" profile does not exist": "“{{.name}}”配置文件不存在", @@ -21,9 +21,9 @@ "- Prune unused {{.driver_name}} images, volumes, networks and abandoned containers.\n\n\t\t\t\t{{.driver_name}} system prune --volumes": "", "- Restart your {{.driver_name}} service": "", "A VPN or firewall is interfering with HTTP access to the minikube VM. Alternatively, try a different VM driver: https://minikube.sigs.k8s.io/docs/start/": "VPN 或者防火墙正在干扰对 minikube 虚拟机的 HTTP 访问。或者,您可以使用其它的虚拟机驱动:https://minikube.sigs.k8s.io/docs/start/", - "A firewall is blocking Docker the minikube VM from reaching the image repository. You may need to select --image-repository, or use a proxy.": "", + "A firewall is blocking Docker the minikube VM from reaching the image repository. You may need to select --image-repository, or use a proxy.": "防火墙正在阻止 minikube 虚拟机中的 Docker 访问镜像仓库。您可能需要选择 --image-repository 或使用代理", "A firewall is blocking Docker the minikube VM from reaching the internet. You may need to configure it to use a proxy.": "防火墙正在阻止 minikube 虚拟机中的 Docker 访问互联网。您可能需要对其进行配置为使用代理", - "A firewall is blocking Docker within the minikube VM from reaching the internet. You may need to configure it to use a proxy.": "防火墙正在阻止 minikube 虚拟机中的 Docker 访问互联网,您可能需要对其进行配置为使用代理", + "A firewall is blocking Docker within the minikube VM from reaching the internet. You may need to configure it to use a proxy.": "防火墙正在阻止 minikube 虚拟机中的 Docker 访问互联网。您可能需要对其进行配置为使用代理", "A firewall is interfering with minikube's ability to make outgoing HTTPS requests. You may need to change the value of the HTTPS_PROXY environment variable.": "防火墙正在干扰 minikube 发送 HTTPS 请求的能力,您可能需要改变 HTTPS_PROXY 环境变量的值", "A firewall is likely blocking minikube from reaching the internet. You may need to configure minikube to use a proxy.": "防火墙可能会阻止 minikube 访问互联网。您可能需要将 minikube 配置为使用", "A set of apiserver IP Addresses which are used in the generated certificate for kubernetes. This can be used if you want to make the apiserver available from outside the machine": "一组在为 kubernetes 生成的证书中使用的 apiserver IP 地址。如果您希望将此 apiserver 设置为可从机器外部访问,则可以使用这组 apiserver IP 地址", @@ -39,7 +39,7 @@ "Add or delete an image from the local cache.": "在本地缓存中添加或删除 image。", "Add, delete, or push a local image into minikube": "", "Add, remove, or list additional nodes": "", - "Adding node {{.name}} to cluster {{.cluster}}": "", + "Adding node {{.name}} to cluster {{.cluster}}": "添加节点 {{.name}} 至集群 {{.cluster}}", "Additional help topics": "其他帮助", "Additional mount options, such as cache=fscache": "其他挂载选项,例如:cache=fscache", "Adds a node to the given cluster config, and starts it.": "", @@ -58,8 +58,8 @@ "Another program is using a file required by minikube. If you are using Hyper-V, try stopping the minikube VM from within the Hyper-V manager": "", "Automatically selected the '{{.driver}}' driver": "自动选择 '{{.driver}}' 驱动", "Automatically selected the '{{.driver}}' driver (alternates: {{.alternates}})": "自动选择 '{{.driver}}' 驱动(可选项:{{.alternates}})", - "Automatically selected the {{.driver}} driver": "", - "Automatically selected the {{.driver}} driver. Other choices: {{.alternates}}": "", + "Automatically selected the {{.driver}} driver": "自动选择 {{.driver}} 驱动", + "Automatically selected the {{.driver}} driver. Other choices: {{.alternates}}": "自动选择 {{.driver}} 驱动。其他选项:{{.alternates}}", "Available Commands": "可用命令", "Basic Commands:": "基本命令:", "Because you are using a Docker driver on {{.operating_system}}, the terminal needs to be open to run it.": "", @@ -72,29 +72,29 @@ "Check if you have unnecessary pods running by running 'kubectl get po -A": "", "Check output of 'journalctl -xeu kubelet', try passing --extra-config=kubelet.cgroup-driver=systemd to minikube start": "检查 'journalctl -xeu kubelet' 的输出,尝试启动 minikube 时添加参数 --extra-config=kubelet.cgroup-driver=systemd", "Check that SELinux is disabled, and that the provided apiserver flags are valid": "检查 SELinux 是否禁用,且提供的 apiserver 标志是否有效", - "Check that libvirt is setup properly": "", + "Check that libvirt is setup properly": "检查 libvirt 是否正确设置", "Check that minikube is running and that you have specified the correct namespace (-n flag) if required.": "检测 minikube 是否正在运行,以及是否根据需要指定了正确的 namespace (-n 标志)", - "Check that the provided apiserver flags are valid": "检查提供的 apiserver 标志是否有效", - "Check that the provided apiserver flags are valid, and that SELinux is disabled": "", + "Check that the provided apiserver flags are valid": "检查提供的 apiserver 标志是有效的", + "Check that the provided apiserver flags are valid, and that SELinux is disabled": "检查提供的 apiserver 标志是有效的,且禁用了 SELinux", "Check that your --kubernetes-version has a leading 'v'. For example: 'v1.1.14'": "检测您的 --kubernetes-version 前面是否有 'v', 例如:'v1.1.14", "Check that your apiserver flags are valid, or run 'minikube delete'": "请检查您的 apiserver 标志是否有效,或者允许 'minikube delete'", "Check your firewall rules for interference, and run 'virt-host-validate' to check for KVM configuration issues. If you are running minikube within a VM, consider using --driver=none": "", "Check your firewall rules for interference, and run 'virt-host-validate' to check for KVM configuration issues. If you are running minikube within a VM, consider using --vm-driver=none": "检查您的防火墙规则是否存在干扰,然后运行 'virt-host-validate' 以检查 KVM 配置问题,如果在虚拟机中运行minikube,请考虑使用 --vm-driver=none", - "Choose a smaller value for --memory, such as 2000": "", - "ChromeOS is missing the kernel support necessary for running Kubernetes": "", + "Choose a smaller value for --memory, such as 2000": "为 --memory 选择一个更小的值,例如 2000", + "ChromeOS is missing the kernel support necessary for running Kubernetes": "ChromeOS 缺少运行 Kubernetes 所需的内核支持", "Configuration and Management Commands:": "配置和管理命令:", - "Configure a default route on this Linux host, or use another --driver that does not require it": "", + "Configure a default route on this Linux host, or use another --driver that does not require it": "为当前 Linux 主机配置一个默认的路由, 或者使用另一个不需要他的 --driver", "Configure a default route on this Linux host, or use another --vm-driver that does not require it": "为当前 Linux 主机配置一个默认的路由, 或者使用另一个不需要他的 --vm-driver", "Configure an external network switch following the official documentation, then add `--hyperv-virtual-switch=\u003cswitch-name\u003e` to `minikube start`": "根据官方文档配置外部网络交换机,然后添加 `--hyperv-virtual-switch=\u003cswitch-name\u003e` 到 `minikube start`", - "Configure environment to use minikube's Docker daemon": "", - "Configure environment to use minikube's Podman service": "", + "Configure environment to use minikube's Docker daemon": "配置环境以使用 minikube's Docker daemon", + "Configure environment to use minikube's Podman service": "配置环境以使用 minikube's Podman service", "Configures the addon w/ADDON_NAME within minikube (example: minikube addons configure registry-creds). For a list of available addons use: minikube addons list": "在 minikube 中配置插件 w/ADDON_NAME(例如:minikube addons configure registry-creds)。查看相关可用的插件列表,请使用:minikube addons list", "Configuring environment for Kubernetes {{.k8sVersion}} on {{.runtime}} {{.runtimeVersion}}": "开始为Kubernetes {{.k8sVersion}},{{.runtime}} {{.runtimeVersion}} 配置环境变量", "Configuring local host environment ...": "开始配置本地主机环境...", "Configuring {{.name}} (Container Networking Interface) ...": "", "Confirm that you have a working internet connection and that your VM has not run out of resources by using: 'minikube logs'": "使用 'minikube logs' 确认您的互联网连接正常,并且您的虚拟机没有耗尽资源", "Confirm that you have supplied the correct value to --hyperv-virtual-switch using the 'Get-VMSwitch' command": "使用 'Get-VMSwitch' 命令确认已经为 --hyperv-virtual-switch 提供了正确的值", - "Connect to LoadBalancer services": "", + "Connect to LoadBalancer services": "连接到 LoadBalancer 服务", "Consider creating a cluster with larger memory size using `minikube start --memory SIZE_MB` ": "", "Consider increasing Docker Desktop's memory size.": "", "Could not determine a Google Cloud project, which might be ok.": "", @@ -110,7 +110,7 @@ "Creating {{.driver_name}} VM (CPUs={{.number_of_cpus}}, Memory={{.memory_size}}MB, Disk={{.disk_size}}MB) ...": "正在创建 {{.driver_name}} 虚拟机(CPUs={{.number_of_cpus}},Memory={{.memory_size}}MB, Disk={{.disk_size}}MB)...", "Creating {{.driver_name}} {{.machine_type}} (CPUs={{.number_of_cpus}}, Memory={{.memory_size}}MB) ...": "", "Creating {{.driver_name}} {{.machine_type}} (CPUs={{.number_of_cpus}}, Memory={{.memory_size}}MB, Disk={{.disk_size}}MB) ...": "", - "Current context is \"{{.context}}\"": "", + "Current context is \"{{.context}}\"": "当前的上下文为 \"{{.context}}\"", "DEPRECATED, use `driver` instead.": "", "DEPRECATED: Replaced by --cni=bridge": "", "Default group id used for the mount": "用于挂载默认的 group id", @@ -121,10 +121,10 @@ "Deletes a local kubernetes cluster": "删除本地的 kubernetes 集群", "Deletes a local kubernetes cluster. This command deletes the VM, and removes all\nassociated files.": "删除本地的 kubernetes 集群。此命令还将删除虚拟机,并删除所有的\n相关文件", "Deletes a local kubernetes cluster. This command deletes the VM, and removes all associated files.": "删除本地 kubernetes 集群。此命令会删除虚拟机并移除所有关联的文件。", - "Deletes a node from a cluster.": "", + "Deletes a node from a cluster.": "从集群中删除节点。", "Deleting \"{{.profile_name}}\" in {{.driver_name}} ...": "正在删除 {{.driver_name}} 中的“{{.profile_name}}”…", - "Deleting container \"{{.name}}\" ...": "", - "Deleting node {{.name}} from cluster {{.cluster}}": "", + "Deleting container \"{{.name}}\" ...": "正在删除容器 \"{{.name}}\" ...", + "Deleting node {{.name}} from cluster {{.cluster}}": "正在从集群 {{.cluster}} 中删除节点 {{.name}}", "Disable checking for the availability of hardware virtualization before the vm is started (virtualbox driver only)": "禁用在启动虚拟机之前检查硬件虚拟化的可用性(仅限 virtualbox 驱动程序)", "Disable dynamic memory in your VM manager, or pass in a larger --memory value": "禁用虚拟机管理器中的动态内存,或者使用 --memory 传入更大的值", "Disables the addon w/ADDON_NAME within minikube (example: minikube addons disable dashboard). For a list of available addons use: minikube addons list": "在 minikube 中禁用插件 w/ADDON_NAME(例如:minikube addons disable dashboard)。查看相关可用的插件列表,请使用:minikube addons list", @@ -216,7 +216,7 @@ "Error getting profiles to delete": "获取待删除配置文件时出错", "Error getting service status": "获取 service status 时出错", "Error getting service with namespace: {{.namespace}} and labels {{.labelName}}:{{.addonName}}: {{.error}}": "使用 namespace: {{.namespace}} 和 labels {{.labelName}}:{{.addonName}} 获取 service 时出错:{{.error}}", - "Error getting ssh client": "", + "Error getting ssh client": "获取 ssh 客户端时出错", "Error getting the host IP address to use from within the VM": "从虚拟机中获取 host IP 地址时出错", "Error killing mount process": "杀死 mount 进程时出错", "Error loading api": "加载 api 时出错", @@ -234,7 +234,7 @@ "Error starting mount": "开启 mount 时出错", "Error unsetting shell variables": "取消设置 shell 变量时出错", "Error while setting kubectl current context : {{.error}}": "设置 kubectl 上下文时出错 :{{.error}}", - "Error while setting kubectl current context: {{.error}}": "", + "Error while setting kubectl current context: {{.error}}": "设置 kubectl 上下文时出错:{{.error}}", "Error writing mount pid": "写入 mount pid 时出错", "Error: You have selected Kubernetes v{{.new}}, but the existing cluster for your profile is running Kubernetes v{{.old}}. Non-destructive downgrades are not supported, but you can proceed by performing one of the following options:\n\n* Recreate the cluster using Kubernetes v{{.new}}: Run \"minikube delete {{.profile}}\", then \"minikube start {{.profile}} --kubernetes-version={{.new}}\"\n* Create a second cluster with Kubernetes v{{.new}}: Run \"minikube start -p \u003cnew name\u003e --kubernetes-version={{.new}}\"\n* Reuse the existing cluster with Kubernetes v{{.old}} or newer: Run \"minikube start {{.profile}} --kubernetes-version={{.old}}\"": "错误:您已选择 Kubernetes v{{.new}},但您的配置文件的现有集群正在运行 Kubernetes v{{.old}}。非破坏性降级不受支持,但若要继续操作,您可以执行以下选项之一:\n\n* 使用 Kubernetes v{{.new}} 重新创建现有集群:运行“minikube delete {{.profile}}”,然后运行“minikube start {{.profile}} --kubernetes-version={{.new}}”\n* 使用 Kubernetes v{{.new}} 再创建一个集群:运行“minikube start -p \u003cnew name\u003e --kubernetes-version={{.new}}”\n* 通过 Kubernetes v{{.old}} 或更高版本重复使用现有集群:运行“minikube start {{.profile}} --kubernetes-version={{.old}}”", "Error: You have selected Kubernetes v{{.new}}, but the existing cluster for your profile is running Kubernetes v{{.old}}. Non-destructive downgrades are not supported, but you can proceed by performing one of the following options:\n* Recreate the cluster using Kubernetes v{{.new}}: Run \"minikube delete {{.profile}}\", then \"minikube start {{.profile}} --kubernetes-version={{.new}}\"\n* Create a second cluster with Kubernetes v{{.new}}: Run \"minikube start -p \u003cnew name\u003e --kubernetes-version={{.new}}\"\n* Reuse the existing cluster with Kubernetes v{{.old}} or newer: Run \"minikube start {{.profile}} --kubernetes-version={{.old}}": "错误:您已选择 Kubernetes v{{.new}},但您的配置文件的现有集群正在运行 Kubernetes v{{.old}}。非破坏性降级不受支持,但若要继续操作,您可以执行以下选项之一:\n* 使用 Kubernetes v{{.new}} 重新创建现有集群:运行“minikube delete {{.profile}}”,然后运行“minikube start {{.profile}} --kubernetes-version={{.new}}”\n* 使用 Kubernetes v{{.new}} 再创建一个集群:运行“minikube start -p \u003cnew name\u003e --kubernetes-version={{.new}}”\n* 通过 Kubernetes v{{.old}} 或更高版本重复使用现有集群:运行“minikube start {{.profile}} --kubernetes-version={{.old}}”", @@ -917,4 +917,4 @@ "{{.prefix}}minikube {{.version}} on {{.platform}}": "{{.platform}} 上的 {{.prefix}}minikube {{.version}}", "{{.type}} is not yet a supported filesystem. We will try anyways!": "", "{{.url}} is not accessible: {{.error}}": "" -} \ No newline at end of file +} From 4a16b341954994da58b1f1a9247e9c704520eec5 Mon Sep 17 00:00:00 2001 From: Ilya Zuyev Date: Sun, 17 Jan 2021 22:42:50 -0800 Subject: [PATCH 74/91] fix workflows --- .github/workflows/master.yml | 183 +++++++++++++++++++++++++++++++++++ .github/workflows/pr.yml | 60 ++++++++++-- 2 files changed, 235 insertions(+), 8 deletions(-) diff --git a/.github/workflows/master.yml b/.github/workflows/master.yml index bdac426be1..7ed024978e 100644 --- a/.github/workflows/master.yml +++ b/.github/workflows/master.yml @@ -651,6 +651,185 @@ jobs: if [ "$numPass" -eq 0 ];then echo "*** 0 Passed! ***";exit 2;fi if [ "$numPass" -lt 26 ];then echo "*** Failed to pass at least 26 ! ***";exit 2;fi if [ "$numPass" -eq 0 ];then echo "*** Passed! ***";exit 0;fi + functional_docker_ubuntu_arm64: + needs: [ build_minikube ] + runs-on: [ self-hosted, arm64 ] + env: + TIME_ELAPSED: time + JOB_NAME: "functional_docker_ubuntu_arm64" + GOPOGH_RESULT: "" + SHELL: "/bin/bash" # To prevent https://github.com/kubernetes/minikube/issues/6643 + steps: + - name: Install kubectl + shell: bash + run: | + curl -LO https://storage.googleapis.com/kubernetes-release/release/v1.18.0/bin/linux/arm64/kubectl + sudo install kubectl /usr/local/bin/kubectl + kubectl version --client=true + + - name: Install gopoghs + shell: bash + run: | + curl -LO https://github.com/medyagh/gopogh/releases/download/v0.3.0/gopogh-linux-arm64 + sudo install gopogh-linux-arm64 /usr/local/bin/gopogh + + - name: Docker Info + shell: bash + run: | + echo "--------------------------" + docker version || true + echo "--------------------------" + docker info || true + echo "--------------------------" + docker system df || true + echo "--------------------------" + docker system info --format='{{json .}}'|| true + echo "--------------------------" + docker ps || true + echo "--------------------------" + # go 1.14.6+ is needed because of this bug https://github.com/golang/go/issues/39308 + - uses: actions/setup-go@v2 + with: + go-version: '1.15.2' + stable: true + + - name: Download Binaries + uses: actions/download-artifact@v1 + with: + name: minikube_binaries + + - name: Run Integration Test + continue-on-error: false + # bash {0} to allow test to continue to next step. in case of + shell: bash {0} + run: | + cd minikube_binaries + mkdir -p report + mkdir -p testhome + chmod a+x e2e-* + chmod a+x minikube-* + START_TIME=$(date -u +%s) + KUBECONFIG=$(pwd)/testhome/kubeconfig MINIKUBE_HOME=$(pwd)/testhome ./e2e-linux-arm64 -minikube-start-args=--vm-driver=docker -test.run TestFunctional -test.timeout=10m -test.v -timeout-multiplier=1.5 -binary=./minikube-linux-arm64 2>&1 | tee ./report/testout.txt + END_TIME=$(date -u +%s) + TIME_ELAPSED=$(($END_TIME-$START_TIME)) + min=$((${TIME_ELAPSED}/60)) + sec=$((${TIME_ELAPSED}%60)) + TIME_ELAPSED="${min} min $sec seconds " + echo "TIME_ELAPSED=${TIME_ELAPSED}" >> $GITHUB_ENV + + - uses: actions/upload-artifact@v1 + with: + name: functional_docker_ubuntu_arm64 + path: minikube_binaries/report + + - name: The End Result - functional_docker_ubuntu_arm64 + shell: bash + run: | + echo ${GOPOGH_RESULT} + numFail=$(echo $STAT | jq '.NumberOfFail') + numPass=$(echo $STAT | jq '.NumberOfPass') + echo "*******************${numPass} Passes :) *******************" + echo $STAT | jq '.PassedTests' || true + echo "*******************************************************" + echo "---------------- ${numFail} Failures :( ----------------------------" + echo $STAT | jq '.FailedTests' || true + echo "-------------------------------------------------------" + if [ "$numFail" -gt 0 ];then echo "*** $numFail Failed ***";exit 2;fi + if [ "$numPass" -eq 0 ];then echo "*** 0 Passed! ***";exit 2;fi + if [ "$numPass" -lt 20 ];then echo "*** Failed to pass at least 20 ! ***";exit 2;fi + if [ "$numPass" -eq 0 ];then echo "*** Passed! ***";exit 0;fi + + + full_docker_ubuntu_arm64: + needs: [ build_minikube ] + runs-on: [ self-hosted, arm64 ] + env: + TIME_ELAPSED: time + JOB_NAME: "docker_ubuntu_arm64" + GOPOGH_RESULT: "" + SHELL: "/bin/bash" # To prevent https://github.com/kubernetes/minikube/issues/6643 + steps: + - name: Install kubectl + shell: bash + run: | + curl -LO https://storage.googleapis.com/kubernetes-release/release/v1.18.0/bin/linux/arm64/kubectl + sudo install kubectl /usr/local/bin/kubectl + kubectl version --client=true + + - name: Install gopoghs + shell: bash + run: | + curl -LO https://github.com/medyagh/gopogh/releases/download/v0.3.0/gopogh-linux-arm64 + sudo install gopogh-linux-arm64 /usr/local/bin/gopogh + + - name: Docker Info + shell: bash + run: | + echo "--------------------------" + docker version || true + echo "--------------------------" + docker info || true + echo "--------------------------" + docker system df || true + echo "--------------------------" + docker system info || true + echo "--------------------------" + docker ps || true + echo "--------------------------" + # go 1.14.6+ is needed because of this bug https://github.com/golang/go/issues/39308 + - uses: actions/setup-go@v2 + with: + go-version: '1.15.2' + stable: true + + - name: Download Binaries + uses: actions/download-artifact@v1 + with: + name: minikube_binaries + + - name: Run Integration Test + continue-on-error: true + # bash {0} to allow test to continue to next step. in case of + shell: bash {0} + run: | + cd minikube_binaries + mkdir -p report + mkdir -p testhome + chmod a+x e2e-* + chmod a+x minikube-* + sudo ln -s /etc/apparmor.d/usr.sbin.mysqld /etc/apparmor.d/disable/ + sudo apparmor_parser -R /etc/apparmor.d/usr.sbin.mysqld + START_TIME=$(date -u +%s) + KUBECONFIG=$(pwd)/testhome/kubeconfig MINIKUBE_HOME=$(pwd)/testhome ./e2e-linux-arm64 -minikube-start-args='--alsologtostderr --vm-driver=docker' -test.timeout=10m -test.v -timeout-multiplier=1.5 -binary=./minikube-linux-arm64 2>&1 | tee ./report/testout.txt + END_TIME=$(date -u +%s) + TIME_ELAPSED=$(($END_TIME-$START_TIME)) + min=$((${TIME_ELAPSED}/60)) + sec=$((${TIME_ELAPSED}%60)) + TIME_ELAPSED="${min} min $sec seconds " + echo "TIME_ELAPSED=${TIME_ELAPSED}" >> $GITHUB_ENV + + - uses: actions/upload-artifact@v1 + with: + name: docker_ubuntu_arm64 + path: minikube_binaries/report + + - name: The End Result - docker_ubuntu_arm64 + shell: bash + run: | + echo ${GOPOGH_RESULT} + numFail=$(echo $STAT | jq '.NumberOfFail') + numPass=$(echo $STAT | jq '.NumberOfPass') + echo "*******************${numPass} Passes :) *******************" + echo $STAT | jq '.PassedTests' || true + echo "*******************************************************" + echo "---------------- ${numFail} Failures :( ----------------------------" + echo $STAT | jq '.FailedTests' || true + echo "-------------------------------------------------------" + if [ "$numFail" -gt 0 ];then echo "*** $numFail Failed ***";exit 2;fi + if [ "$numPass" -eq 0 ];then echo "*** 0 Passed! ***";exit 2;fi + if [ "$numPass" -lt 26 ];then echo "*** Failed to pass at least 26 ! ***";exit 2;fi + if [ "$numPass" -eq 0 ];then echo "*** Passed! ***";exit 0;fi + addons_certs_docker_ubuntu: runs-on: ubuntu-18.04 env: @@ -1235,12 +1414,14 @@ jobs: functional_docker_windows, functional_hyperv_windows, functional_baremetal_ubuntu18_04, + functional_docker_ubuntu_arm64, addons_certs_docker_ubuntu, addons_certs_virtualbox_macos, multinode_docker_ubuntu, multinode_virtualbox_macos, preload_dockerflags_docker_ubuntu, pause_preload_dockerflags_virtualbox_macos, + docker_ubuntu_arm64, ] runs-on: ubuntu-18.04 steps: @@ -1257,12 +1438,14 @@ jobs: cp -r ./functional_docker_windows ./all_reports/ cp -r ./functional_hyperv_windows ./all_reports/ cp -r ./functional_baremetal_ubuntu18_04 ./all_reports/ + cp -r ./functional_docker_ubuntu_arm64 ./all_reports/ cp -r ./addons_certs_docker_ubuntu ./all_reports/ cp -r ./addons_certs_virtualbox_macos ./all_reports/ cp -r ./multinode_docker_ubuntu ./all_reports/ cp -r ./multinode_virtualbox_macos ./all_reports/ cp -r ./preload_dockerflags_docker_ubuntu ./all_reports/ cp -r ./pause_preload_dockerflags_virtualbox_macos ./all_reports/ + cp -r ./docker_ubuntu_arm64 ./all_reports/ - uses: actions/upload-artifact@v1 with: name: all_reports diff --git a/.github/workflows/pr.yml b/.github/workflows/pr.yml index c2b61b2fff..2098253844 100644 --- a/.github/workflows/pr.yml +++ b/.github/workflows/pr.yml @@ -649,12 +649,13 @@ jobs: if [ "$numPass" -eq 0 ];then echo "*** 0 Passed! ***";exit 2;fi if [ "$numPass" -lt 26 ];then echo "*** Failed to pass at least 26 ! ***";exit 2;fi if [ "$numPass" -eq 0 ];then echo "*** Passed! ***";exit 0;fi + functional_docker_ubuntu_arm64: needs: [ build_minikube ] runs-on: [ self-hosted, arm64 ] env: TIME_ELAPSED: time - JOB_NAME: "functional_docker_ubuntu" + JOB_NAME: "functional_docker_ubuntu_arm64" GOPOGH_RESULT: "" SHELL: "/bin/bash" # To prevent https://github.com/kubernetes/minikube/issues/6643 steps: @@ -664,6 +665,13 @@ jobs: curl -LO https://storage.googleapis.com/kubernetes-release/release/v1.18.0/bin/linux/arm64/kubectl sudo install kubectl /usr/local/bin/kubectl kubectl version --client=true + + - name: Install gopoghs + shell: bash + run: | + curl -LO https://github.com/medyagh/gopogh/releases/download/v0.3.0/gopogh-linux-arm64 + sudo install gopogh-linux-arm64 /usr/local/bin/gopogh + - name: Docker Info shell: bash run: | @@ -688,6 +696,7 @@ jobs: uses: actions/download-artifact@v1 with: name: minikube_binaries + - name: Run Integration Test continue-on-error: false # bash {0} to allow test to continue to next step. in case of @@ -699,7 +708,7 @@ jobs: chmod a+x e2e-* chmod a+x minikube-* START_TIME=$(date -u +%s) - KUBECONFIG=$(pwd)/testhome/kubeconfig MINIKUBE_HOME=$(pwd)/testhome ./e2e-linux-arm64 -minikube-start-args='--alsologtostderr --base-image=gcr.io/kicbase/kicbase:v0.0.14-snapshot --memory=3000m --vm-driver=docker' -test.timeout=10m -test.v -timeout-multiplier=1.5 -binary=./minikube-linux-arm64 2>&1 | tee ./report/testout.txt + KUBECONFIG=$(pwd)/testhome/kubeconfig MINIKUBE_HOME=$(pwd)/testhome ./e2e-linux-arm64 -minikube-start-args=--vm-driver=docker -test.run TestFunctional -test.timeout=10m -test.v -timeout-multiplier=1.5 -binary=./minikube-linux-arm64 2>&1 | tee ./report/testout.txt END_TIME=$(date -u +%s) TIME_ELAPSED=$(($END_TIME-$START_TIME)) min=$((${TIME_ELAPSED}/60)) @@ -707,12 +716,35 @@ jobs: TIME_ELAPSED="${min} min $sec seconds " echo "TIME_ELAPSED=${TIME_ELAPSED}" >> $GITHUB_ENV + - uses: actions/upload-artifact@v1 + with: + name: functional_docker_ubuntu_arm64 + path: minikube_binaries/report + + - name: The End Result - functional_docker_ubuntu_arm64 + shell: bash + run: | + echo ${GOPOGH_RESULT} + numFail=$(echo $STAT | jq '.NumberOfFail') + numPass=$(echo $STAT | jq '.NumberOfPass') + echo "*******************${numPass} Passes :) *******************" + echo $STAT | jq '.PassedTests' || true + echo "*******************************************************" + echo "---------------- ${numFail} Failures :( ----------------------------" + echo $STAT | jq '.FailedTests' || true + echo "-------------------------------------------------------" + if [ "$numFail" -gt 0 ];then echo "*** $numFail Failed ***";exit 2;fi + if [ "$numPass" -eq 0 ];then echo "*** 0 Passed! ***";exit 2;fi + if [ "$numPass" -lt 0 ];then echo "*** Failed to pass at least 20! ***";exit 2;fi + if [ "$numPass" -eq 0 ];then echo "*** Passed! ***";exit 0;fi + + full_docker_ubuntu_arm64: needs: [ build_minikube ] runs-on: [ self-hosted, arm64 ] env: TIME_ELAPSED: time - JOB_NAME: "multinode_docker_ubuntu" + JOB_NAME: "docker_ubuntu_arm64" GOPOGH_RESULT: "" SHELL: "/bin/bash" # To prevent https://github.com/kubernetes/minikube/issues/6643 steps: @@ -722,6 +754,13 @@ jobs: curl -LO https://storage.googleapis.com/kubernetes-release/release/v1.18.0/bin/linux/arm64/kubectl sudo install kubectl /usr/local/bin/kubectl kubectl version --client=true + + - name: Install gopoghs + shell: bash + run: | + curl -LO https://github.com/medyagh/gopogh/releases/download/v0.3.0/gopogh-linux-arm64 + sudo install gopogh-linux-arm64 /usr/local/bin/gopogh + - name: Docker Info shell: bash run: | @@ -760,7 +799,7 @@ jobs: sudo ln -s /etc/apparmor.d/usr.sbin.mysqld /etc/apparmor.d/disable/ sudo apparmor_parser -R /etc/apparmor.d/usr.sbin.mysqld START_TIME=$(date -u +%s) - KUBECONFIG=$(pwd)/testhome/kubeconfig MINIKUBE_HOME=$(pwd)/testhome ./e2e-linux-arm64 -minikube-start-args='--alsologtostderr --base-image=gcr.io/kicbase/kicbase:v0.0.14-snapshot --memory=3000m --vm-driver=docker' -test.timeout=10m -test.v -timeout-multiplier=1.5 -binary=./minikube-linux-arm64 2>&1 | tee ./report/testout.txt + KUBECONFIG=$(pwd)/testhome/kubeconfig MINIKUBE_HOME=$(pwd)/testhome ./e2e-linux-arm64 -minikube-start-args='--alsologtostderr --vm-driver=docker' -test.timeout=10m -test.v -timeout-multiplier=1.5 -binary=./minikube-linux-arm64 2>&1 | tee ./report/testout.txt END_TIME=$(date -u +%s) TIME_ELAPSED=$(($END_TIME-$START_TIME)) min=$((${TIME_ELAPSED}/60)) @@ -770,9 +809,10 @@ jobs: - uses: actions/upload-artifact@v1 with: - name: multinode_docker_ubuntu + name: docker_ubuntu_arm64 path: minikube_binaries/report - - name: The End Result - multinode_docker_ubuntu + + - name: The End Result - docker_ubuntu_arm64 shell: bash run: | echo ${GOPOGH_RESULT} @@ -786,7 +826,8 @@ jobs: echo "-------------------------------------------------------" if [ "$numFail" -gt 0 ];then echo "*** $numFail Failed ***";exit 2;fi if [ "$numPass" -eq 0 ];then echo "*** 0 Passed! ***";exit 2;fi - if [ "$numPass" -lt 5 ];then echo "*** Failed to pass at least 5 ! ***";exit 2;fi + if [ "$numPass" -lt 26 ];then echo "*** Failed to pass at least 26 ! ***";exit 2;fi + if [ "$numPass" -eq 0 ];then echo "*** Passed! ***";exit 0;fi addons_certs_docker_ubuntu: runs-on: ubuntu-18.04 @@ -823,7 +864,6 @@ jobs: go-version: '1.15.5' stable: true - name: Install gopogh - shell: bash run: | curl -LO https://github.com/medyagh/gopogh/releases/download/v0.3.0/gopogh-linux-amd64 @@ -1368,6 +1408,7 @@ jobs: needs: [ functional_docker_ubuntu, + functional_docker_ubuntu_arm64, functional_virtualbox_macos, functional_docker_windows, functional_hyperv_windows, @@ -1378,6 +1419,7 @@ jobs: multinode_virtualbox_macos, preload_dockerflags_docker_ubuntu, pause_preload_dockerflags_virtualbox_macos, + docker_ubuntu_arm64 ] runs-on: ubuntu-18.04 steps: @@ -1390,6 +1432,7 @@ jobs: mkdir -p all_reports ls -lah cp -r ./functional_docker_ubuntu ./all_reports/ + cp -r ./functional_docker_ubuntu_arm64 ./all_reports/ cp -r ./functional_virtualbox_macos ./all_reports/ cp -r ./functional_docker_windows ./all_reports/ cp -r ./functional_hyperv_windows ./all_reports/ @@ -1400,6 +1443,7 @@ jobs: cp -r ./multinode_virtualbox_macos ./all_reports/ cp -r ./preload_dockerflags_docker_ubuntu ./all_reports/ cp -r ./pause_preload_dockerflags_virtualbox_macos ./all_reports/ + cp -r ./docker_ubuntu_arm64 ./all_reports/ - uses: actions/upload-artifact@v1 with: name: all_reports From 79ed05ef09b91915c4a28013b8df9047b65a7ba4 Mon Sep 17 00:00:00 2001 From: Ilya Zuyev Date: Tue, 19 Jan 2021 10:40:50 -0800 Subject: [PATCH 75/91] fix typo in step name --- .github/workflows/master.yml | 4 ++-- .github/workflows/pr.yml | 4 ++-- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/.github/workflows/master.yml b/.github/workflows/master.yml index 7ed024978e..3df7343a82 100644 --- a/.github/workflows/master.yml +++ b/.github/workflows/master.yml @@ -667,7 +667,7 @@ jobs: sudo install kubectl /usr/local/bin/kubectl kubectl version --client=true - - name: Install gopoghs + - name: Install gopogh shell: bash run: | curl -LO https://github.com/medyagh/gopogh/releases/download/v0.3.0/gopogh-linux-arm64 @@ -756,7 +756,7 @@ jobs: sudo install kubectl /usr/local/bin/kubectl kubectl version --client=true - - name: Install gopoghs + - name: Install gopogh shell: bash run: | curl -LO https://github.com/medyagh/gopogh/releases/download/v0.3.0/gopogh-linux-arm64 diff --git a/.github/workflows/pr.yml b/.github/workflows/pr.yml index 2098253844..e0d51577bd 100644 --- a/.github/workflows/pr.yml +++ b/.github/workflows/pr.yml @@ -666,7 +666,7 @@ jobs: sudo install kubectl /usr/local/bin/kubectl kubectl version --client=true - - name: Install gopoghs + - name: Install gopogh shell: bash run: | curl -LO https://github.com/medyagh/gopogh/releases/download/v0.3.0/gopogh-linux-arm64 @@ -755,7 +755,7 @@ jobs: sudo install kubectl /usr/local/bin/kubectl kubectl version --client=true - - name: Install gopoghs + - name: Install gopogh shell: bash run: | curl -LO https://github.com/medyagh/gopogh/releases/download/v0.3.0/gopogh-linux-arm64 From dd5c40ba0ae49a4f421c0032f311a32127077c92 Mon Sep 17 00:00:00 2001 From: Ilya Zuyev Date: Tue, 19 Jan 2021 10:42:57 -0800 Subject: [PATCH 76/91] fix workflow dependencies --- .github/workflows/master.yml | 4 ++-- .github/workflows/pr.yml | 4 ++-- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/.github/workflows/master.yml b/.github/workflows/master.yml index 3df7343a82..6a64cf75a3 100644 --- a/.github/workflows/master.yml +++ b/.github/workflows/master.yml @@ -1421,7 +1421,7 @@ jobs: multinode_virtualbox_macos, preload_dockerflags_docker_ubuntu, pause_preload_dockerflags_virtualbox_macos, - docker_ubuntu_arm64, + full_docker_ubuntu_arm64, ] runs-on: ubuntu-18.04 steps: @@ -1445,7 +1445,7 @@ jobs: cp -r ./multinode_virtualbox_macos ./all_reports/ cp -r ./preload_dockerflags_docker_ubuntu ./all_reports/ cp -r ./pause_preload_dockerflags_virtualbox_macos ./all_reports/ - cp -r ./docker_ubuntu_arm64 ./all_reports/ + cp -r ./full_docker_ubuntu_arm64 ./all_reports/ - uses: actions/upload-artifact@v1 with: name: all_reports diff --git a/.github/workflows/pr.yml b/.github/workflows/pr.yml index e0d51577bd..80e9291c6b 100644 --- a/.github/workflows/pr.yml +++ b/.github/workflows/pr.yml @@ -1419,7 +1419,7 @@ jobs: multinode_virtualbox_macos, preload_dockerflags_docker_ubuntu, pause_preload_dockerflags_virtualbox_macos, - docker_ubuntu_arm64 + full_docker_ubuntu_arm64 ] runs-on: ubuntu-18.04 steps: @@ -1443,7 +1443,7 @@ jobs: cp -r ./multinode_virtualbox_macos ./all_reports/ cp -r ./preload_dockerflags_docker_ubuntu ./all_reports/ cp -r ./pause_preload_dockerflags_virtualbox_macos ./all_reports/ - cp -r ./docker_ubuntu_arm64 ./all_reports/ + cp -r ./full_docker_ubuntu_arm64 ./all_reports/ - uses: actions/upload-artifact@v1 with: name: all_reports From acabd09073874f3a67bc6251b73e4b208b02d4ce Mon Sep 17 00:00:00 2001 From: Ilya Zuyev Date: Tue, 19 Jan 2021 11:28:00 -0800 Subject: [PATCH 77/91] trigger build --- .github/workflows/pr.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/pr.yml b/.github/workflows/pr.yml index 80e9291c6b..2c1130877e 100644 --- a/.github/workflows/pr.yml +++ b/.github/workflows/pr.yml @@ -1056,8 +1056,8 @@ jobs: with: go-version: '1.15.5' stable: true + - name: Install gopogh - shell: bash run: | curl -LO https://github.com/medyagh/gopogh/releases/download/v0.3.0/gopogh-linux-amd64 From 17f389d565cbc6a7f7ddb4490cc84ed9c6b398cc Mon Sep 17 00:00:00 2001 From: Ilya Zuyev Date: Tue, 19 Jan 2021 11:51:22 -0800 Subject: [PATCH 78/91] trigger build --- .github/workflows/pr.yml | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/.github/workflows/pr.yml b/.github/workflows/pr.yml index 2c1130877e..14217d3b1a 100644 --- a/.github/workflows/pr.yml +++ b/.github/workflows/pr.yml @@ -686,6 +686,7 @@ jobs: echo "--------------------------" docker ps || true echo "--------------------------" + # go 1.14.6+ is needed because of this bug https://github.com/golang/go/issues/39308 - uses: actions/setup-go@v2 with: @@ -1056,7 +1057,7 @@ jobs: with: go-version: '1.15.5' stable: true - + - name: Install gopogh shell: bash run: | From 8e60c8df1a9f4ec6c7528f7f07ec632174343871 Mon Sep 17 00:00:00 2001 From: Ilya Zuyev Date: Tue, 19 Jan 2021 12:01:55 -0800 Subject: [PATCH 79/91] trigger build --- .github/workflows/master.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/master.yml b/.github/workflows/master.yml index 6a64cf75a3..9ffc588695 100644 --- a/.github/workflows/master.yml +++ b/.github/workflows/master.yml @@ -653,7 +653,7 @@ jobs: if [ "$numPass" -eq 0 ];then echo "*** Passed! ***";exit 0;fi functional_docker_ubuntu_arm64: needs: [ build_minikube ] - runs-on: [ self-hosted, arm64 ] + runs-on: [ self-hosted, ARM64 ] env: TIME_ELAPSED: time JOB_NAME: "functional_docker_ubuntu_arm64" From 0e0310e011f26f58a078576599d80628f05e8945 Mon Sep 17 00:00:00 2001 From: Ilya Zuyev Date: Tue, 19 Jan 2021 12:38:27 -0800 Subject: [PATCH 80/91] trigger build --- .github/workflows/master.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/master.yml b/.github/workflows/master.yml index 9ffc588695..6a64cf75a3 100644 --- a/.github/workflows/master.yml +++ b/.github/workflows/master.yml @@ -653,7 +653,7 @@ jobs: if [ "$numPass" -eq 0 ];then echo "*** Passed! ***";exit 0;fi functional_docker_ubuntu_arm64: needs: [ build_minikube ] - runs-on: [ self-hosted, ARM64 ] + runs-on: [ self-hosted, arm64 ] env: TIME_ELAPSED: time JOB_NAME: "functional_docker_ubuntu_arm64" From cf772b1385f6a255060d08d7a8cae3bb7dec92de Mon Sep 17 00:00:00 2001 From: Ilya Zuyev Date: Tue, 19 Jan 2021 13:23:31 -0800 Subject: [PATCH 81/91] fix html report step --- .github/workflows/master.yml | 32 ++++++++++++++++++++++++++++++++ .github/workflows/pr.yml | 32 ++++++++++++++++++++++++++++++++ 2 files changed, 64 insertions(+) diff --git a/.github/workflows/master.yml b/.github/workflows/master.yml index 6a64cf75a3..6975da19ff 100644 --- a/.github/workflows/master.yml +++ b/.github/workflows/master.yml @@ -717,6 +717,22 @@ jobs: TIME_ELAPSED="${min} min $sec seconds " echo "TIME_ELAPSED=${TIME_ELAPSED}" >> $GITHUB_ENV + - name: Generate HTML Report + shell: bash + run: | + cd minikube_binaries + export PATH=${PATH}:`go env GOPATH`/bin + go tool test2json -t < ./report/testout.txt > ./report/testout.json || true + STAT=$(gopogh -in ./report/testout.json -out ./report/testout.html -name "${JOB_NAME} ${GITHUB_REF}" -repo "${GITHUB_REPOSITORY}" -details "${GITHUB_SHA}") || true + echo status: ${STAT} + FailNum=$(echo $STAT | jq '.NumberOfFail') + TestsNum=$(echo $STAT | jq '.NumberOfTests') + GOPOGH_RESULT="${JOB_NAME} : completed with ${FailNum} / ${TestsNum} failures in ${TIME_ELAPSED}" + echo "GOPOGH_RESULT=${GOPOGH_RESULT}" >> $GITHUB_ENV + echo 'STAT<> $GITHUB_ENV + echo "${STAT}" >> $GITHUB_ENV + echo 'EOF' >> $GITHUB_ENV + - uses: actions/upload-artifact@v1 with: name: functional_docker_ubuntu_arm64 @@ -808,6 +824,22 @@ jobs: TIME_ELAPSED="${min} min $sec seconds " echo "TIME_ELAPSED=${TIME_ELAPSED}" >> $GITHUB_ENV + - name: Generate HTML Report + shell: bash + run: | + cd minikube_binaries + export PATH=${PATH}:`go env GOPATH`/bin + go tool test2json -t < ./report/testout.txt > ./report/testout.json || true + STAT=$(gopogh -in ./report/testout.json -out ./report/testout.html -name "${JOB_NAME} ${GITHUB_REF}" -repo "${GITHUB_REPOSITORY}" -details "${GITHUB_SHA}") || true + echo status: ${STAT} + FailNum=$(echo $STAT | jq '.NumberOfFail') + TestsNum=$(echo $STAT | jq '.NumberOfTests') + GOPOGH_RESULT="${JOB_NAME} : completed with ${FailNum} / ${TestsNum} failures in ${TIME_ELAPSED}" + echo "GOPOGH_RESULT=${GOPOGH_RESULT}" >> $GITHUB_ENV + echo 'STAT<> $GITHUB_ENV + echo "${STAT}" >> $GITHUB_ENV + echo 'EOF' >> $GITHUB_ENV + - uses: actions/upload-artifact@v1 with: name: docker_ubuntu_arm64 diff --git a/.github/workflows/pr.yml b/.github/workflows/pr.yml index 14217d3b1a..116809796f 100644 --- a/.github/workflows/pr.yml +++ b/.github/workflows/pr.yml @@ -717,6 +717,22 @@ jobs: TIME_ELAPSED="${min} min $sec seconds " echo "TIME_ELAPSED=${TIME_ELAPSED}" >> $GITHUB_ENV + - name: Generate HTML Report + shell: bash + run: | + cd minikube_binaries + export PATH=${PATH}:`go env GOPATH`/bin + go tool test2json -t < ./report/testout.txt > ./report/testout.json || true + STAT=$(gopogh -in ./report/testout.json -out ./report/testout.html -name "${JOB_NAME} ${GITHUB_REF}" -repo "${GITHUB_REPOSITORY}" -details "${GITHUB_SHA}") || true + echo status: ${STAT} + FailNum=$(echo $STAT | jq '.NumberOfFail') + TestsNum=$(echo $STAT | jq '.NumberOfTests') + GOPOGH_RESULT="${JOB_NAME} : completed with ${FailNum} / ${TestsNum} failures in ${TIME_ELAPSED}" + echo "GOPOGH_RESULT=${GOPOGH_RESULT}" >> $GITHUB_ENV + echo 'STAT<> $GITHUB_ENV + echo "${STAT}" >> $GITHUB_ENV + echo 'EOF' >> $GITHUB_ENV + - uses: actions/upload-artifact@v1 with: name: functional_docker_ubuntu_arm64 @@ -808,6 +824,22 @@ jobs: TIME_ELAPSED="${min} min $sec seconds " echo "TIME_ELAPSED=${TIME_ELAPSED}" >> $GITHUB_ENV + - name: Generate HTML Report + shell: bash + run: | + cd minikube_binaries + export PATH=${PATH}:`go env GOPATH`/bin + go tool test2json -t < ./report/testout.txt > ./report/testout.json || true + STAT=$(gopogh -in ./report/testout.json -out ./report/testout.html -name "${JOB_NAME} ${GITHUB_REF}" -repo "${GITHUB_REPOSITORY}" -details "${GITHUB_SHA}") || true + echo status: ${STAT} + FailNum=$(echo $STAT | jq '.NumberOfFail') + TestsNum=$(echo $STAT | jq '.NumberOfTests') + GOPOGH_RESULT="${JOB_NAME} : completed with ${FailNum} / ${TestsNum} failures in ${TIME_ELAPSED}" + echo "GOPOGH_RESULT=${GOPOGH_RESULT}" >> $GITHUB_ENV + echo 'STAT<> $GITHUB_ENV + echo "${STAT}" >> $GITHUB_ENV + echo 'EOF' >> $GITHUB_ENV + - uses: actions/upload-artifact@v1 with: name: docker_ubuntu_arm64 From 99dd26c0d26fd58b16bdb5425f0d702a2897532d Mon Sep 17 00:00:00 2001 From: Ilya Zuyev Date: Tue, 19 Jan 2021 13:25:13 -0800 Subject: [PATCH 82/91] trigger build --- .github/workflows/pr.yml | 1 - 1 file changed, 1 deletion(-) diff --git a/.github/workflows/pr.yml b/.github/workflows/pr.yml index 116809796f..84e6c81dc9 100644 --- a/.github/workflows/pr.yml +++ b/.github/workflows/pr.yml @@ -755,7 +755,6 @@ jobs: if [ "$numPass" -lt 0 ];then echo "*** Failed to pass at least 20! ***";exit 2;fi if [ "$numPass" -eq 0 ];then echo "*** Passed! ***";exit 0;fi - full_docker_ubuntu_arm64: needs: [ build_minikube ] runs-on: [ self-hosted, arm64 ] From 90fe3c524f61def86bbab66e0319e1266bce8ce0 Mon Sep 17 00:00:00 2001 From: Ilya Zuyev Date: Tue, 19 Jan 2021 13:41:48 -0800 Subject: [PATCH 83/91] run full arm64 suite after functional --- .github/workflows/master.yml | 2 +- .github/workflows/pr.yml | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/.github/workflows/master.yml b/.github/workflows/master.yml index 6975da19ff..99344b6538 100644 --- a/.github/workflows/master.yml +++ b/.github/workflows/master.yml @@ -757,7 +757,7 @@ jobs: full_docker_ubuntu_arm64: - needs: [ build_minikube ] + needs: [ build_minikube, functional_docker_ubuntu_arm64 ] runs-on: [ self-hosted, arm64 ] env: TIME_ELAPSED: time diff --git a/.github/workflows/pr.yml b/.github/workflows/pr.yml index 84e6c81dc9..2e49ac7d50 100644 --- a/.github/workflows/pr.yml +++ b/.github/workflows/pr.yml @@ -756,7 +756,7 @@ jobs: if [ "$numPass" -eq 0 ];then echo "*** Passed! ***";exit 0;fi full_docker_ubuntu_arm64: - needs: [ build_minikube ] + needs: [ build_minikube, functional_docker_ubuntu_arm64 ] runs-on: [ self-hosted, arm64 ] env: TIME_ELAPSED: time From 6a4f277b19335f84cfa534d17f658d83d9cb8cce Mon Sep 17 00:00:00 2001 From: Ilya Zuyev Date: Tue, 19 Jan 2021 14:04:55 -0800 Subject: [PATCH 84/91] use gopogh v0.4.0 for arm64 --- .github/workflows/master.yml | 4 ++-- .github/workflows/pr.yml | 4 ++-- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/.github/workflows/master.yml b/.github/workflows/master.yml index 99344b6538..4003547fdc 100644 --- a/.github/workflows/master.yml +++ b/.github/workflows/master.yml @@ -670,7 +670,7 @@ jobs: - name: Install gopogh shell: bash run: | - curl -LO https://github.com/medyagh/gopogh/releases/download/v0.3.0/gopogh-linux-arm64 + curl -LO https://github.com/medyagh/gopogh/releases/download/v0.4.0/gopogh-linux-arm64 sudo install gopogh-linux-arm64 /usr/local/bin/gopogh - name: Docker Info @@ -775,7 +775,7 @@ jobs: - name: Install gopogh shell: bash run: | - curl -LO https://github.com/medyagh/gopogh/releases/download/v0.3.0/gopogh-linux-arm64 + curl -LO https://github.com/medyagh/gopogh/releases/download/v0.4.0/gopogh-linux-arm64 sudo install gopogh-linux-arm64 /usr/local/bin/gopogh - name: Docker Info diff --git a/.github/workflows/pr.yml b/.github/workflows/pr.yml index 2e49ac7d50..1af6106d3a 100644 --- a/.github/workflows/pr.yml +++ b/.github/workflows/pr.yml @@ -669,7 +669,7 @@ jobs: - name: Install gopogh shell: bash run: | - curl -LO https://github.com/medyagh/gopogh/releases/download/v0.3.0/gopogh-linux-arm64 + curl -LO https://github.com/medyagh/gopogh/releases/download/v0.4.0/gopogh-linux-arm64 sudo install gopogh-linux-arm64 /usr/local/bin/gopogh - name: Docker Info @@ -774,7 +774,7 @@ jobs: - name: Install gopogh shell: bash run: | - curl -LO https://github.com/medyagh/gopogh/releases/download/v0.3.0/gopogh-linux-arm64 + curl -LO https://github.com/medyagh/gopogh/releases/download/v0.4.0/gopogh-linux-arm64 sudo install gopogh-linux-arm64 /usr/local/bin/gopogh - name: Docker Info From 9b0d95a77c269f76306f58de7291b507cee3b505 Mon Sep 17 00:00:00 2001 From: Ilya Zuyev Date: Tue, 19 Jan 2021 14:46:34 -0800 Subject: [PATCH 85/91] run only functional tests for arm64 --- .github/workflows/master.yml | 109 +---------------------------------- .github/workflows/pr.yml | 108 ---------------------------------- 2 files changed, 1 insertion(+), 216 deletions(-) diff --git a/.github/workflows/master.yml b/.github/workflows/master.yml index 4003547fdc..aa6e157649 100644 --- a/.github/workflows/master.yml +++ b/.github/workflows/master.yml @@ -756,112 +756,6 @@ jobs: if [ "$numPass" -eq 0 ];then echo "*** Passed! ***";exit 0;fi - full_docker_ubuntu_arm64: - needs: [ build_minikube, functional_docker_ubuntu_arm64 ] - runs-on: [ self-hosted, arm64 ] - env: - TIME_ELAPSED: time - JOB_NAME: "docker_ubuntu_arm64" - GOPOGH_RESULT: "" - SHELL: "/bin/bash" # To prevent https://github.com/kubernetes/minikube/issues/6643 - steps: - - name: Install kubectl - shell: bash - run: | - curl -LO https://storage.googleapis.com/kubernetes-release/release/v1.18.0/bin/linux/arm64/kubectl - sudo install kubectl /usr/local/bin/kubectl - kubectl version --client=true - - - name: Install gopogh - shell: bash - run: | - curl -LO https://github.com/medyagh/gopogh/releases/download/v0.4.0/gopogh-linux-arm64 - sudo install gopogh-linux-arm64 /usr/local/bin/gopogh - - - name: Docker Info - shell: bash - run: | - echo "--------------------------" - docker version || true - echo "--------------------------" - docker info || true - echo "--------------------------" - docker system df || true - echo "--------------------------" - docker system info || true - echo "--------------------------" - docker ps || true - echo "--------------------------" - # go 1.14.6+ is needed because of this bug https://github.com/golang/go/issues/39308 - - uses: actions/setup-go@v2 - with: - go-version: '1.15.2' - stable: true - - - name: Download Binaries - uses: actions/download-artifact@v1 - with: - name: minikube_binaries - - - name: Run Integration Test - continue-on-error: true - # bash {0} to allow test to continue to next step. in case of - shell: bash {0} - run: | - cd minikube_binaries - mkdir -p report - mkdir -p testhome - chmod a+x e2e-* - chmod a+x minikube-* - sudo ln -s /etc/apparmor.d/usr.sbin.mysqld /etc/apparmor.d/disable/ - sudo apparmor_parser -R /etc/apparmor.d/usr.sbin.mysqld - START_TIME=$(date -u +%s) - KUBECONFIG=$(pwd)/testhome/kubeconfig MINIKUBE_HOME=$(pwd)/testhome ./e2e-linux-arm64 -minikube-start-args='--alsologtostderr --vm-driver=docker' -test.timeout=10m -test.v -timeout-multiplier=1.5 -binary=./minikube-linux-arm64 2>&1 | tee ./report/testout.txt - END_TIME=$(date -u +%s) - TIME_ELAPSED=$(($END_TIME-$START_TIME)) - min=$((${TIME_ELAPSED}/60)) - sec=$((${TIME_ELAPSED}%60)) - TIME_ELAPSED="${min} min $sec seconds " - echo "TIME_ELAPSED=${TIME_ELAPSED}" >> $GITHUB_ENV - - - name: Generate HTML Report - shell: bash - run: | - cd minikube_binaries - export PATH=${PATH}:`go env GOPATH`/bin - go tool test2json -t < ./report/testout.txt > ./report/testout.json || true - STAT=$(gopogh -in ./report/testout.json -out ./report/testout.html -name "${JOB_NAME} ${GITHUB_REF}" -repo "${GITHUB_REPOSITORY}" -details "${GITHUB_SHA}") || true - echo status: ${STAT} - FailNum=$(echo $STAT | jq '.NumberOfFail') - TestsNum=$(echo $STAT | jq '.NumberOfTests') - GOPOGH_RESULT="${JOB_NAME} : completed with ${FailNum} / ${TestsNum} failures in ${TIME_ELAPSED}" - echo "GOPOGH_RESULT=${GOPOGH_RESULT}" >> $GITHUB_ENV - echo 'STAT<> $GITHUB_ENV - echo "${STAT}" >> $GITHUB_ENV - echo 'EOF' >> $GITHUB_ENV - - - uses: actions/upload-artifact@v1 - with: - name: docker_ubuntu_arm64 - path: minikube_binaries/report - - - name: The End Result - docker_ubuntu_arm64 - shell: bash - run: | - echo ${GOPOGH_RESULT} - numFail=$(echo $STAT | jq '.NumberOfFail') - numPass=$(echo $STAT | jq '.NumberOfPass') - echo "*******************${numPass} Passes :) *******************" - echo $STAT | jq '.PassedTests' || true - echo "*******************************************************" - echo "---------------- ${numFail} Failures :( ----------------------------" - echo $STAT | jq '.FailedTests' || true - echo "-------------------------------------------------------" - if [ "$numFail" -gt 0 ];then echo "*** $numFail Failed ***";exit 2;fi - if [ "$numPass" -eq 0 ];then echo "*** 0 Passed! ***";exit 2;fi - if [ "$numPass" -lt 26 ];then echo "*** Failed to pass at least 26 ! ***";exit 2;fi - if [ "$numPass" -eq 0 ];then echo "*** Passed! ***";exit 0;fi - addons_certs_docker_ubuntu: runs-on: ubuntu-18.04 env: @@ -1453,7 +1347,6 @@ jobs: multinode_virtualbox_macos, preload_dockerflags_docker_ubuntu, pause_preload_dockerflags_virtualbox_macos, - full_docker_ubuntu_arm64, ] runs-on: ubuntu-18.04 steps: @@ -1477,7 +1370,7 @@ jobs: cp -r ./multinode_virtualbox_macos ./all_reports/ cp -r ./preload_dockerflags_docker_ubuntu ./all_reports/ cp -r ./pause_preload_dockerflags_virtualbox_macos ./all_reports/ - cp -r ./full_docker_ubuntu_arm64 ./all_reports/ + - uses: actions/upload-artifact@v1 with: name: all_reports diff --git a/.github/workflows/pr.yml b/.github/workflows/pr.yml index 1af6106d3a..7db3a9360a 100644 --- a/.github/workflows/pr.yml +++ b/.github/workflows/pr.yml @@ -755,112 +755,6 @@ jobs: if [ "$numPass" -lt 0 ];then echo "*** Failed to pass at least 20! ***";exit 2;fi if [ "$numPass" -eq 0 ];then echo "*** Passed! ***";exit 0;fi - full_docker_ubuntu_arm64: - needs: [ build_minikube, functional_docker_ubuntu_arm64 ] - runs-on: [ self-hosted, arm64 ] - env: - TIME_ELAPSED: time - JOB_NAME: "docker_ubuntu_arm64" - GOPOGH_RESULT: "" - SHELL: "/bin/bash" # To prevent https://github.com/kubernetes/minikube/issues/6643 - steps: - - name: Install kubectl - shell: bash - run: | - curl -LO https://storage.googleapis.com/kubernetes-release/release/v1.18.0/bin/linux/arm64/kubectl - sudo install kubectl /usr/local/bin/kubectl - kubectl version --client=true - - - name: Install gopogh - shell: bash - run: | - curl -LO https://github.com/medyagh/gopogh/releases/download/v0.4.0/gopogh-linux-arm64 - sudo install gopogh-linux-arm64 /usr/local/bin/gopogh - - - name: Docker Info - shell: bash - run: | - echo "--------------------------" - docker version || true - echo "--------------------------" - docker info || true - echo "--------------------------" - docker system df || true - echo "--------------------------" - docker system info || true - echo "--------------------------" - docker ps || true - echo "--------------------------" - # go 1.14.6+ is needed because of this bug https://github.com/golang/go/issues/39308 - - uses: actions/setup-go@v2 - with: - go-version: '1.15.2' - stable: true - - - name: Download Binaries - uses: actions/download-artifact@v1 - with: - name: minikube_binaries - - - name: Run Integration Test - continue-on-error: true - # bash {0} to allow test to continue to next step. in case of - shell: bash {0} - run: | - cd minikube_binaries - mkdir -p report - mkdir -p testhome - chmod a+x e2e-* - chmod a+x minikube-* - sudo ln -s /etc/apparmor.d/usr.sbin.mysqld /etc/apparmor.d/disable/ - sudo apparmor_parser -R /etc/apparmor.d/usr.sbin.mysqld - START_TIME=$(date -u +%s) - KUBECONFIG=$(pwd)/testhome/kubeconfig MINIKUBE_HOME=$(pwd)/testhome ./e2e-linux-arm64 -minikube-start-args='--alsologtostderr --vm-driver=docker' -test.timeout=10m -test.v -timeout-multiplier=1.5 -binary=./minikube-linux-arm64 2>&1 | tee ./report/testout.txt - END_TIME=$(date -u +%s) - TIME_ELAPSED=$(($END_TIME-$START_TIME)) - min=$((${TIME_ELAPSED}/60)) - sec=$((${TIME_ELAPSED}%60)) - TIME_ELAPSED="${min} min $sec seconds " - echo "TIME_ELAPSED=${TIME_ELAPSED}" >> $GITHUB_ENV - - - name: Generate HTML Report - shell: bash - run: | - cd minikube_binaries - export PATH=${PATH}:`go env GOPATH`/bin - go tool test2json -t < ./report/testout.txt > ./report/testout.json || true - STAT=$(gopogh -in ./report/testout.json -out ./report/testout.html -name "${JOB_NAME} ${GITHUB_REF}" -repo "${GITHUB_REPOSITORY}" -details "${GITHUB_SHA}") || true - echo status: ${STAT} - FailNum=$(echo $STAT | jq '.NumberOfFail') - TestsNum=$(echo $STAT | jq '.NumberOfTests') - GOPOGH_RESULT="${JOB_NAME} : completed with ${FailNum} / ${TestsNum} failures in ${TIME_ELAPSED}" - echo "GOPOGH_RESULT=${GOPOGH_RESULT}" >> $GITHUB_ENV - echo 'STAT<> $GITHUB_ENV - echo "${STAT}" >> $GITHUB_ENV - echo 'EOF' >> $GITHUB_ENV - - - uses: actions/upload-artifact@v1 - with: - name: docker_ubuntu_arm64 - path: minikube_binaries/report - - - name: The End Result - docker_ubuntu_arm64 - shell: bash - run: | - echo ${GOPOGH_RESULT} - numFail=$(echo $STAT | jq '.NumberOfFail') - numPass=$(echo $STAT | jq '.NumberOfPass') - echo "*******************${numPass} Passes :) *******************" - echo $STAT | jq '.PassedTests' || true - echo "*******************************************************" - echo "---------------- ${numFail} Failures :( ----------------------------" - echo $STAT | jq '.FailedTests' || true - echo "-------------------------------------------------------" - if [ "$numFail" -gt 0 ];then echo "*** $numFail Failed ***";exit 2;fi - if [ "$numPass" -eq 0 ];then echo "*** 0 Passed! ***";exit 2;fi - if [ "$numPass" -lt 26 ];then echo "*** Failed to pass at least 26 ! ***";exit 2;fi - if [ "$numPass" -eq 0 ];then echo "*** Passed! ***";exit 0;fi - addons_certs_docker_ubuntu: runs-on: ubuntu-18.04 env: @@ -1451,7 +1345,6 @@ jobs: multinode_virtualbox_macos, preload_dockerflags_docker_ubuntu, pause_preload_dockerflags_virtualbox_macos, - full_docker_ubuntu_arm64 ] runs-on: ubuntu-18.04 steps: @@ -1475,7 +1368,6 @@ jobs: cp -r ./multinode_virtualbox_macos ./all_reports/ cp -r ./preload_dockerflags_docker_ubuntu ./all_reports/ cp -r ./pause_preload_dockerflags_virtualbox_macos ./all_reports/ - cp -r ./full_docker_ubuntu_arm64 ./all_reports/ - uses: actions/upload-artifact@v1 with: name: all_reports From c34f5b2a1f899e48ecd441a17269264c0208e007 Mon Sep 17 00:00:00 2001 From: Ilya Zuyev Date: Tue, 19 Jan 2021 15:36:45 -0800 Subject: [PATCH 86/91] update gopogh version to v0.4.0 --- .github/workflows/iso.yml | 2 +- .github/workflows/kic_image.yml | 2 +- .github/workflows/master.yml | 22 +++++++++++----------- .github/workflows/pr.yml | 22 +++++++++++----------- 4 files changed, 24 insertions(+), 24 deletions(-) diff --git a/.github/workflows/iso.yml b/.github/workflows/iso.yml index 372baa8288..2eac6cc640 100644 --- a/.github/workflows/iso.yml +++ b/.github/workflows/iso.yml @@ -82,7 +82,7 @@ jobs: - name: Install gopogh shell: bash run: | - curl -LO https://github.com/medyagh/gopogh/releases/download/v0.3.0/gopogh-linux-amd64 + curl -LO https://github.com/medyagh/gopogh/releases/download/v0.4.0/gopogh-linux-amd64 sudo install gopogh-linux-amd64 /usr/local/bin/gopogh sudo apt-get install -y jq - name: Run Integration Test diff --git a/.github/workflows/kic_image.yml b/.github/workflows/kic_image.yml index 65a826627d..85028af43f 100644 --- a/.github/workflows/kic_image.yml +++ b/.github/workflows/kic_image.yml @@ -60,7 +60,7 @@ jobs: - name: Install gopogh shell: bash run: | - curl -LO https://github.com/medyagh/gopogh/releases/download/v0.3.0/gopogh-linux-amd64 + curl -LO https://github.com/medyagh/gopogh/releases/download/v0.4.0/gopogh-linux-amd64 sudo install gopogh-linux-amd64 /usr/local/bin/gopogh sudo apt-get install -y jq rm -f gopogh-linux-amd64 || true diff --git a/.github/workflows/master.yml b/.github/workflows/master.yml index aa6e157649..7400514252 100644 --- a/.github/workflows/master.yml +++ b/.github/workflows/master.yml @@ -120,7 +120,7 @@ jobs: shell: bash run: | - curl -LO https://github.com/medyagh/gopogh/releases/download/v0.3.0/gopogh-linux-amd64 + curl -LO https://github.com/medyagh/gopogh/releases/download/v0.4.0/gopogh-linux-amd64 sudo install gopogh-linux-amd64 /usr/local/bin/gopogh - name: Download Binaries uses: actions/download-artifact@v1 @@ -205,7 +205,7 @@ jobs: shell: bash run: | - curl -LO https://github.com/medyagh/gopogh/releases/download/v0.3.0/gopogh-darwin-amd64 + curl -LO https://github.com/medyagh/gopogh/releases/download/v0.4.0/gopogh-darwin-amd64 sudo install gopogh-darwin-amd64 /usr/local/bin/gopogh - name: Install docker shell: bash @@ -350,7 +350,7 @@ jobs: continue-on-error: true shell: powershell run: | - (New-Object Net.WebClient).DownloadFile("https://github.com/medyagh/gopogh/releases/download/v0.3.0/gopogh.exe", "C:\ProgramData\chocolatey\bin\gopogh.exe") + (New-Object Net.WebClient).DownloadFile("https://github.com/medyagh/gopogh/releases/download/v0.4.0/gopogh.exe", "C:\ProgramData\chocolatey\bin\gopogh.exe") choco install -y kubernetes-cli choco install -y jq choco install -y caffeine @@ -487,7 +487,7 @@ jobs: shell: powershell run: | $ErrorActionPreference = "SilentlyContinue" - (New-Object Net.WebClient).DownloadFile("https://github.com/medyagh/gopogh/releases/download/v0.3.0/gopogh.exe", "C:\ProgramData\chocolatey\bin\gopogh.exe") + (New-Object Net.WebClient).DownloadFile("https://github.com/medyagh/gopogh/releases/download/v0.4.0/gopogh.exe", "C:\ProgramData\chocolatey\bin\gopogh.exe") choco install -y kubernetes-cli choco install -y jq choco install -y caffeine @@ -592,7 +592,7 @@ jobs: shell: bash run: | - curl -LO https://github.com/medyagh/gopogh/releases/download/v0.3.0/gopogh-linux-amd64 + curl -LO https://github.com/medyagh/gopogh/releases/download/v0.4.0/gopogh-linux-amd64 sudo install gopogh-linux-amd64 /usr/local/bin/gopogh - name: Download Binaries uses: actions/download-artifact@v1 @@ -794,7 +794,7 @@ jobs: shell: bash run: | - curl -LO https://github.com/medyagh/gopogh/releases/download/v0.3.0/gopogh-linux-amd64 + curl -LO https://github.com/medyagh/gopogh/releases/download/v0.4.0/gopogh-linux-amd64 sudo install gopogh-linux-amd64 /usr/local/bin/gopogh - name: Download Binaries uses: actions/download-artifact@v1 @@ -876,7 +876,7 @@ jobs: shell: bash run: | - curl -LO https://github.com/medyagh/gopogh/releases/download/v0.3.0/gopogh-darwin-amd64 + curl -LO https://github.com/medyagh/gopogh/releases/download/v0.4.0/gopogh-darwin-amd64 sudo install gopogh-darwin-amd64 /usr/local/bin/gopogh - name: Install docker shell: bash @@ -988,7 +988,7 @@ jobs: shell: bash run: | - curl -LO https://github.com/medyagh/gopogh/releases/download/v0.3.0/gopogh-linux-amd64 + curl -LO https://github.com/medyagh/gopogh/releases/download/v0.4.0/gopogh-linux-amd64 sudo install gopogh-linux-amd64 /usr/local/bin/gopogh - name: Download Binaries uses: actions/download-artifact@v1 @@ -1072,7 +1072,7 @@ jobs: shell: bash run: | - curl -LO https://github.com/medyagh/gopogh/releases/download/v0.3.0/gopogh-darwin-amd64 + curl -LO https://github.com/medyagh/gopogh/releases/download/v0.4.0/gopogh-darwin-amd64 sudo install gopogh-darwin-amd64 /usr/local/bin/gopogh - name: Download Binaries uses: actions/download-artifact@v1 @@ -1179,7 +1179,7 @@ jobs: shell: bash run: | - curl -LO https://github.com/medyagh/gopogh/releases/download/v0.3.0/gopogh-linux-amd64 + curl -LO https://github.com/medyagh/gopogh/releases/download/v0.4.0/gopogh-linux-amd64 sudo install gopogh-linux-amd64 /usr/local/bin/gopogh - name: Download Binaries uses: actions/download-artifact@v1 @@ -1261,7 +1261,7 @@ jobs: shell: bash run: | - curl -LO https://github.com/medyagh/gopogh/releases/download/v0.3.0/gopogh-darwin-amd64 + curl -LO https://github.com/medyagh/gopogh/releases/download/v0.4.0/gopogh-darwin-amd64 sudo install gopogh-darwin-amd64 /usr/local/bin/gopogh - name: Download Binaries uses: actions/download-artifact@v1 diff --git a/.github/workflows/pr.yml b/.github/workflows/pr.yml index 7db3a9360a..f1df34e57b 100644 --- a/.github/workflows/pr.yml +++ b/.github/workflows/pr.yml @@ -118,7 +118,7 @@ jobs: shell: bash run: | - curl -LO https://github.com/medyagh/gopogh/releases/download/v0.3.0/gopogh-linux-amd64 + curl -LO https://github.com/medyagh/gopogh/releases/download/v0.4.0/gopogh-linux-amd64 sudo install gopogh-linux-amd64 /usr/local/bin/gopogh - name: Download Binaries uses: actions/download-artifact@v1 @@ -203,7 +203,7 @@ jobs: shell: bash run: | - curl -LO https://github.com/medyagh/gopogh/releases/download/v0.3.0/gopogh-darwin-amd64 + curl -LO https://github.com/medyagh/gopogh/releases/download/v0.4.0/gopogh-darwin-amd64 sudo install gopogh-darwin-amd64 /usr/local/bin/gopogh - name: Install docker shell: bash @@ -348,7 +348,7 @@ jobs: continue-on-error: true shell: powershell run: | - (New-Object Net.WebClient).DownloadFile("https://github.com/medyagh/gopogh/releases/download/v0.3.0/gopogh.exe", "C:\ProgramData\chocolatey\bin\gopogh.exe") + (New-Object Net.WebClient).DownloadFile("https://github.com/medyagh/gopogh/releases/download/v0.4.0/gopogh.exe", "C:\ProgramData\chocolatey\bin\gopogh.exe") choco install -y kubernetes-cli choco install -y jq choco install -y caffeine @@ -485,7 +485,7 @@ jobs: shell: powershell run: | $ErrorActionPreference = "SilentlyContinue" - (New-Object Net.WebClient).DownloadFile("https://github.com/medyagh/gopogh/releases/download/v0.3.0/gopogh.exe", "C:\ProgramData\chocolatey\bin\gopogh.exe") + (New-Object Net.WebClient).DownloadFile("https://github.com/medyagh/gopogh/releases/download/v0.4.0/gopogh.exe", "C:\ProgramData\chocolatey\bin\gopogh.exe") choco install -y kubernetes-cli choco install -y jq choco install -y caffeine @@ -590,7 +590,7 @@ jobs: shell: bash run: | - curl -LO https://github.com/medyagh/gopogh/releases/download/v0.3.0/gopogh-linux-amd64 + curl -LO https://github.com/medyagh/gopogh/releases/download/v0.4.0/gopogh-linux-amd64 sudo install gopogh-linux-amd64 /usr/local/bin/gopogh - name: Download Binaries uses: actions/download-artifact@v1 @@ -792,7 +792,7 @@ jobs: - name: Install gopogh shell: bash run: | - curl -LO https://github.com/medyagh/gopogh/releases/download/v0.3.0/gopogh-linux-amd64 + curl -LO https://github.com/medyagh/gopogh/releases/download/v0.4.0/gopogh-linux-amd64 sudo install gopogh-linux-amd64 /usr/local/bin/gopogh - name: Download Binaries uses: actions/download-artifact@v1 @@ -874,7 +874,7 @@ jobs: shell: bash run: | - curl -LO https://github.com/medyagh/gopogh/releases/download/v0.3.0/gopogh-darwin-amd64 + curl -LO https://github.com/medyagh/gopogh/releases/download/v0.4.0/gopogh-darwin-amd64 sudo install gopogh-darwin-amd64 /usr/local/bin/gopogh - name: Install docker shell: bash @@ -986,7 +986,7 @@ jobs: - name: Install gopogh shell: bash run: | - curl -LO https://github.com/medyagh/gopogh/releases/download/v0.3.0/gopogh-linux-amd64 + curl -LO https://github.com/medyagh/gopogh/releases/download/v0.4.0/gopogh-linux-amd64 sudo install gopogh-linux-amd64 /usr/local/bin/gopogh - name: Download Binaries uses: actions/download-artifact@v1 @@ -1070,7 +1070,7 @@ jobs: shell: bash run: | - curl -LO https://github.com/medyagh/gopogh/releases/download/v0.3.0/gopogh-darwin-amd64 + curl -LO https://github.com/medyagh/gopogh/releases/download/v0.4.0/gopogh-darwin-amd64 sudo install gopogh-darwin-amd64 /usr/local/bin/gopogh - name: Download Binaries uses: actions/download-artifact@v1 @@ -1177,7 +1177,7 @@ jobs: shell: bash run: | - curl -LO https://github.com/medyagh/gopogh/releases/download/v0.3.0/gopogh-linux-amd64 + curl -LO https://github.com/medyagh/gopogh/releases/download/v0.4.0/gopogh-linux-amd64 sudo install gopogh-linux-amd64 /usr/local/bin/gopogh - name: Download Binaries uses: actions/download-artifact@v1 @@ -1259,7 +1259,7 @@ jobs: shell: bash run: | - curl -LO https://github.com/medyagh/gopogh/releases/download/v0.3.0/gopogh-darwin-amd64 + curl -LO https://github.com/medyagh/gopogh/releases/download/v0.4.0/gopogh-darwin-amd64 sudo install gopogh-darwin-amd64 /usr/local/bin/gopogh - name: Download Binaries uses: actions/download-artifact@v1 From 4342b53a921dfcdea398f5748b254acae2d1b14a Mon Sep 17 00:00:00 2001 From: Ilya Zuyev Date: Tue, 19 Jan 2021 15:50:10 -0800 Subject: [PATCH 87/91] Add Makefile target to update gopogh version --- Makefile | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/Makefile b/Makefile index 700fda20a1..d7c73c77a1 100644 --- a/Makefile +++ b/Makefile @@ -847,3 +847,7 @@ else go run update_kubernetes_version.go) endif +.PHONY: update-gopogh-version +update-gopogh-version: + (cd hack/update/gopogh_version && \ + go run update_gopogh_version.go) From 28ecf222b0d56f32b6974ea109c63ac9984780b9 Mon Sep 17 00:00:00 2001 From: Ilya Zuyev Date: Tue, 19 Jan 2021 16:06:11 -0800 Subject: [PATCH 88/91] Comment update-gopogh-version make target --- Makefile | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Makefile b/Makefile index d7c73c77a1..6ecc28a953 100644 --- a/Makefile +++ b/Makefile @@ -848,6 +848,6 @@ else endif .PHONY: update-gopogh-version -update-gopogh-version: +update-gopogh-version: ## Update GitHub Action workflows to use the latest version of Gopogh (cd hack/update/gopogh_version && \ go run update_gopogh_version.go) From a2ccf09c8001716cc50e4531fe1d1dd6644e06c3 Mon Sep 17 00:00:00 2001 From: Ilya Zuyev Date: Tue, 19 Jan 2021 16:30:28 -0800 Subject: [PATCH 89/91] fix update-gopogh-version comment and update gopogh version in jenkins scripts --- Makefile | 2 +- hack/jenkins/common.sh | 4 ++-- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/Makefile b/Makefile index 6ecc28a953..6941b2ccce 100644 --- a/Makefile +++ b/Makefile @@ -848,6 +848,6 @@ else endif .PHONY: update-gopogh-version -update-gopogh-version: ## Update GitHub Action workflows to use the latest version of Gopogh +update-gopogh-version: ## update gopogh version (cd hack/update/gopogh_version && \ go run update_gopogh_version.go) diff --git a/hack/jenkins/common.sh b/hack/jenkins/common.sh index 07673308a0..ecdcb6dc5d 100755 --- a/hack/jenkins/common.sh +++ b/hack/jenkins/common.sh @@ -352,9 +352,9 @@ fi echo ">> Installing gopogh" if [ "$(uname)" != "Darwin" ]; then - curl -LO https://github.com/medyagh/gopogh/releases/download/v0.3.0/gopogh-linux-amd64 && sudo install gopogh-linux-amd64 /usr/local/bin/gopogh + curl -LO https://github.com/medyagh/gopogh/releases/download/v0.4.0/gopogh-linux-amd64 && sudo install gopogh-linux-amd64 /usr/local/bin/gopogh else - curl -LO https://github.com/medyagh/gopogh/releases/download/v0.3.0/gopogh-darwin-amd64 && sudo install gopogh-darwin-amd64 /usr/local/bin/gopogh + curl -LO https://github.com/medyagh/gopogh/releases/download/v0.4.0/gopogh-darwin-amd64 && sudo install gopogh-darwin-amd64 /usr/local/bin/gopogh fi echo ">> Running gopogh" From 2c07606d3a2a688624983e86b67fabe03a9e3fa2 Mon Sep 17 00:00:00 2001 From: Ilya Zuyev Date: Tue, 19 Jan 2021 18:14:51 -0800 Subject: [PATCH 90/91] install jq and docker in gh action workflow for arm64 --- .github/workflows/master.yml | 6 ++++++ .github/workflows/pr.yml | 6 ++++++ 2 files changed, 12 insertions(+) diff --git a/.github/workflows/master.yml b/.github/workflows/master.yml index 7400514252..df2caf3749 100644 --- a/.github/workflows/master.yml +++ b/.github/workflows/master.yml @@ -672,6 +672,12 @@ jobs: run: | curl -LO https://github.com/medyagh/gopogh/releases/download/v0.4.0/gopogh-linux-arm64 sudo install gopogh-linux-arm64 /usr/local/bin/gopogh + + - name: Install tools + shell: bash + run: | + sudo apt update + sudo apt install -y jq docker - name: Docker Info shell: bash diff --git a/.github/workflows/pr.yml b/.github/workflows/pr.yml index f1df34e57b..8c409289de 100644 --- a/.github/workflows/pr.yml +++ b/.github/workflows/pr.yml @@ -672,6 +672,12 @@ jobs: curl -LO https://github.com/medyagh/gopogh/releases/download/v0.4.0/gopogh-linux-arm64 sudo install gopogh-linux-arm64 /usr/local/bin/gopogh + - name: Install tools + shell: bash + run: | + sudo apt update + sudo apt install -y jq docker + - name: Docker Info shell: bash run: | From fc8ef79c37ed4aa53ac5e36f50a90d6b58afff05 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Anders=20F=20Bj=C3=B6rklund?= Date: Wed, 20 Jan 2021 20:15:09 +0100 Subject: [PATCH 91/91] Avoid warning about the suggested memory size The recommendation is to use (at least) 2048 MB *for the VM*, which means that you will end up something like 1992 MB total. We should not issue warnings when using the recommended size, so lower the limit to 1900 MB (kubeadm will validate 1700 MB). The reason it is broken is because it uses different values for different drivers, if running a VM or on Bare Metal... There is also no difference anymore between the "usable" and the "recommended", so this will need revisiting later. --- cmd/minikube/cmd/start_flags.go | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/cmd/minikube/cmd/start_flags.go b/cmd/minikube/cmd/start_flags.go index 4893ab6718..510e9a685f 100644 --- a/cmd/minikube/cmd/start_flags.go +++ b/cmd/minikube/cmd/start_flags.go @@ -95,7 +95,7 @@ const ( waitTimeout = "wait-timeout" nativeSSH = "native-ssh" minUsableMem = 1800 // Kubernetes (kubeadm) will not start with less - minRecommendedMem = 2000 // Warn at no lower than existing configurations + minRecommendedMem = 1900 // Warn at no lower than existing configurations minimumCPUS = 2 minimumDiskSize = 2000 autoUpdate = "auto-update-drivers"