diff --git a/.github/ISSUE_TEMPLATE/__en-US.yaml b/.github/ISSUE_TEMPLATE/__en-US.yaml index fe58f1e6d6..c2bc936ab9 100644 --- a/.github/ISSUE_TEMPLATE/__en-US.yaml +++ b/.github/ISSUE_TEMPLATE/__en-US.yaml @@ -15,6 +15,8 @@ body: label: Attach the log file description: | Tip: Run `minikube logs --file=log.txt` then drag & drop `log.txt` file to the browser. + **WARNING:** If you're using the HyperKit driver, please look through your logs and remove any environment variables that may contain sensitive information (ex. access tokens or secrets). + All environment variables will be stripped as of minikube `1.26.0` but any prior versions will have to be removed manually. validations: required: true - type: dropdown diff --git a/.github/dependabot.yml b/.github/dependabot.yml index 61634d5a45..4ac5bc16b2 100644 --- a/.github/dependabot.yml +++ b/.github/dependabot.yml @@ -5,3 +5,11 @@ updates: directory: "/" schedule: interval: "weekly" + labels: + - "ok-to-test" + - package-ecosystem: "github-actions" + directory: "/" + schedule: + interval: "weekly" + labels: + - "ok-to-test" diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml index b2b4f3e574..b79651aaa8 100644 --- a/.github/workflows/build.yml +++ b/.github/workflows/build.yml @@ -12,13 +12,16 @@ on: - "!deploy/iso/**" env: GOPROXY: https://proxy.golang.org - GO_VERSION: '1.17.7' + GO_VERSION: '1.18' +permissions: + contents: read + jobs: build_minikube: runs-on: ubuntu-20.04 steps: - - uses: actions/checkout@v2 - - uses: actions/setup-go@v2 + - uses: actions/checkout@629c2de402a417ea7690ca6ce3f33229e27606a5 + - uses: actions/setup-go@f6164bd8c8acb4a71fb2791a8b6c4024ff038dab with: go-version: ${{env.GO_VERSION}} stable: true @@ -37,15 +40,15 @@ jobs: echo workspace $GITHUB_WORKSPACE echo "end of debug stuff" echo $(which jq) - - uses: actions/upload-artifact@v2 + - uses: actions/upload-artifact@6673cd052c4cd6fcf4b4e6e60ea986c889389535 with: name: minikube_binaries path: out lint: runs-on: ubuntu-20.04 steps: - - uses: actions/checkout@v2 - - uses: actions/setup-go@v2 + - uses: actions/checkout@629c2de402a417ea7690ca6ce3f33229e27606a5 + - uses: actions/setup-go@f6164bd8c8acb4a71fb2791a8b6c4024ff038dab with: go-version: ${{env.GO_VERSION}} stable: true @@ -63,8 +66,8 @@ jobs: unit_test: runs-on: ubuntu-20.04 steps: - - uses: actions/checkout@v2 - - uses: actions/setup-go@v2 + - uses: actions/checkout@629c2de402a417ea7690ca6ce3f33229e27606a5 + - uses: actions/setup-go@f6164bd8c8acb4a71fb2791a8b6c4024ff038dab with: go-version: ${{env.GO_VERSION}} stable: true diff --git a/.github/workflows/docs.yml b/.github/workflows/docs.yml index 7c20b89fea..69bbc9bb59 100644 --- a/.github/workflows/docs.yml +++ b/.github/workflows/docs.yml @@ -6,13 +6,16 @@ on: - master env: GOPROXY: https://proxy.golang.org - GO_VERSION: '1.17.7' + GO_VERSION: '1.18' +permissions: + contents: read + jobs: generate-docs: runs-on: ubuntu-20.04 steps: - - uses: actions/checkout@v2 - - uses: actions/setup-go@v2 + - uses: actions/checkout@629c2de402a417ea7690ca6ce3f33229e27606a5 + - uses: actions/setup-go@f6164bd8c8acb4a71fb2791a8b6c4024ff038dab with: go-version: ${{env.GO_VERSION}} stable: true @@ -26,7 +29,7 @@ jobs: echo "::set-output name=changes::$c" - name: Create PR if: ${{ steps.gendocs.outputs.changes != '' }} - uses: peter-evans/create-pull-request@v3 + uses: peter-evans/create-pull-request@f1a7646cead32c950d90344a4fb5d4e926972a8f with: token: ${{ secrets.MINIKUBE_BOT_PAT }} commit-message: Update auto-generated docs and translations diff --git a/.github/workflows/functional_verified.yml b/.github/workflows/functional_verified.yml index 18c086fb49..8d92994ccc 100644 --- a/.github/workflows/functional_verified.yml +++ b/.github/workflows/functional_verified.yml @@ -21,7 +21,10 @@ on: - deleted env: GOPROXY: https://proxy.golang.org - GO_VERSION: '1.17.7' + GO_VERSION: '1.18' + +permissions: + contents: read jobs: # Runs before all other jobs @@ -30,8 +33,8 @@ jobs: if: contains(github.event.pull_request.labels.*.name, 'ok-to-test') runs-on: ubuntu-20.04 steps: - - uses: actions/checkout@v2 - - uses: actions/setup-go@v2 + - uses: actions/checkout@629c2de402a417ea7690ca6ce3f33229e27606a5 + - uses: actions/setup-go@f6164bd8c8acb4a71fb2791a8b6c4024ff038dab with: go-version: ${{env.GO_VERSION}} stable: true @@ -43,11 +46,13 @@ jobs: sudo apt-get install -y libvirt-dev MINIKUBE_BUILD_IN_DOCKER=y make cross e2e-cross debs cp -r test/integration/testdata ./out - - uses: actions/upload-artifact@v2 + - uses: actions/upload-artifact@6673cd052c4cd6fcf4b4e6e60ea986c889389535 with: name: minikube_binaries path: out functional_docker_ubuntu_arm64: + permissions: + contents: none needs: [ build_minikube ] runs-on: [ self-hosted, arm64 ] env: @@ -110,13 +115,13 @@ jobs: hostname || true echo "--------------------------" # go 1.14.6+ is needed because of this bug https://github.com/golang/go/issues/39308 - - uses: actions/setup-go@v2 + - uses: actions/setup-go@f6164bd8c8acb4a71fb2791a8b6c4024ff038dab with: go-version: ${{env.GO_VERSION}} stable: true - name: Download Binaries - uses: actions/download-artifact@v1 + uses: actions/download-artifact@fdafc3f9f2e2a522dc1d230e6a03de57a1e71c95 with: name: minikube_binaries @@ -162,7 +167,7 @@ jobs: echo "${STAT}" >> $GITHUB_ENV echo 'EOF' >> $GITHUB_ENV - - uses: actions/upload-artifact@v2 + - uses: actions/upload-artifact@6673cd052c4cd6fcf4b4e6e60ea986c889389535 with: name: functional_docker_ubuntu_arm64 path: minikube_binaries/report @@ -190,6 +195,8 @@ jobs: # After all integration tests finished # collect all the reports and upload them upload_all_reports: + permissions: + contents: none needs: [ functional_docker_ubuntu_arm64, @@ -197,14 +204,14 @@ jobs: runs-on: ubuntu-20.04 steps: - name: download all extra reports - uses: actions/download-artifact@v2-preview + uses: actions/download-artifact@9fde3de0b74bd6bc202952485c264b551a4f9405 - name: upload all extra reports shell: bash {0} continue-on-error: true run: | mkdir -p all_reports cp -r ./functional_docker_ubuntu_arm64 ./all_reports/ - - uses: actions/upload-artifact@v2 + - uses: actions/upload-artifact@6673cd052c4cd6fcf4b4e6e60ea986c889389535 with: name: all_reports path: all_reports diff --git a/.github/workflows/leaderboard.yml b/.github/workflows/leaderboard.yml index 83649b69a1..defac3b945 100644 --- a/.github/workflows/leaderboard.yml +++ b/.github/workflows/leaderboard.yml @@ -7,13 +7,16 @@ on: release: types: [published] env: - GO_VERSION: '1.17.7' + GO_VERSION: '1.18' +permissions: + contents: read + jobs: update-leaderboard: runs-on: ubuntu-20.04 steps: - - uses: actions/checkout@v2 - - uses: actions/setup-go@v2 + - uses: actions/checkout@629c2de402a417ea7690ca6ce3f33229e27606a5 + - uses: actions/setup-go@f6164bd8c8acb4a71fb2791a8b6c4024ff038dab with: go-version: ${{env.GO_VERSION}} stable: true @@ -29,7 +32,7 @@ jobs: GITHUB_TOKEN: ${{ secrets.MINIKUBE_BOT_PAT }} - name: Create PR if: ${{ steps.leaderboard.outputs.changes != '' }} - uses: peter-evans/create-pull-request@v3 + uses: peter-evans/create-pull-request@f1a7646cead32c950d90344a4fb5d4e926972a8f with: token: ${{ secrets.MINIKUBE_BOT_PAT }} commit-message: Update leaderboard diff --git a/.github/workflows/master.yml b/.github/workflows/master.yml index 81c61a5ac3..005367b273 100644 --- a/.github/workflows/master.yml +++ b/.github/workflows/master.yml @@ -14,15 +14,18 @@ on: - "!deploy/iso/**" env: GOPROXY: https://proxy.golang.org - GO_VERSION: '1.17.7' + GO_VERSION: '1.18' +permissions: + contents: read + jobs: # Runs before all other jobs # builds the minikube binaries build_minikube: runs-on: ubuntu-20.04 steps: - - uses: actions/checkout@v2 - - uses: actions/setup-go@v2 + - uses: actions/checkout@629c2de402a417ea7690ca6ce3f33229e27606a5 + - uses: actions/setup-go@f6164bd8c8acb4a71fb2791a8b6c4024ff038dab with: go-version: ${{env.GO_VERSION}} stable: true @@ -41,15 +44,15 @@ jobs: echo workspace $GITHUB_WORKSPACE echo "end of debug stuff" echo $(which jq) - - uses: actions/upload-artifact@v2 + - uses: actions/upload-artifact@6673cd052c4cd6fcf4b4e6e60ea986c889389535 with: name: minikube_binaries path: out lint: runs-on: ubuntu-20.04 steps: - - uses: actions/checkout@v2 - - uses: actions/setup-go@v2 + - uses: actions/checkout@629c2de402a417ea7690ca6ce3f33229e27606a5 + - uses: actions/setup-go@f6164bd8c8acb4a71fb2791a8b6c4024ff038dab with: go-version: ${{env.GO_VERSION}} stable: true @@ -67,8 +70,8 @@ jobs: unit_test: runs-on: ubuntu-20.04 steps: - - uses: actions/checkout@v2 - - uses: actions/setup-go@v2 + - uses: actions/checkout@629c2de402a417ea7690ca6ce3f33229e27606a5 + - uses: actions/setup-go@f6164bd8c8acb4a71fb2791a8b6c4024ff038dab with: go-version: ${{env.GO_VERSION}} stable: true @@ -86,6 +89,8 @@ jobs: # Run the following integration tests after the build_minikube # They will run in parallel and use the binaries in previous step functional_docker_ubuntu: + permissions: + contents: none needs: [build_minikube] env: TIME_ELAPSED: time @@ -115,7 +120,7 @@ jobs: 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 + - uses: actions/setup-go@f6164bd8c8acb4a71fb2791a8b6c4024ff038dab with: go-version: ${{env.GO_VERSION}} stable: true @@ -126,7 +131,7 @@ jobs: curl -LO https://github.com/medyagh/gopogh/releases/download/v0.9.0/gopogh-linux-amd64 sudo install gopogh-linux-amd64 /usr/local/bin/gopogh - name: Download Binaries - uses: actions/download-artifact@v1 + uses: actions/download-artifact@fdafc3f9f2e2a522dc1d230e6a03de57a1e71c95 with: name: minikube_binaries - name: Run Integration Test @@ -164,7 +169,7 @@ jobs: echo 'STAT<> $GITHUB_ENV echo "${STAT}" >> $GITHUB_ENV echo 'EOF' >> $GITHUB_ENV - - uses: actions/upload-artifact@v2 + - uses: actions/upload-artifact@6673cd052c4cd6fcf4b4e6e60ea986c889389535 with: name: functional_docker_ubuntu path: minikube_binaries/report @@ -185,6 +190,8 @@ jobs: 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_containerd_ubuntu: + permissions: + contents: none needs: [build_minikube] env: TIME_ELAPSED: time @@ -214,7 +221,7 @@ jobs: 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 + - uses: actions/setup-go@f6164bd8c8acb4a71fb2791a8b6c4024ff038dab with: go-version: ${{env.GO_VERSION}} stable: true @@ -225,7 +232,7 @@ jobs: curl -LO https://github.com/medyagh/gopogh/releases/download/v0.9.0/gopogh-linux-amd64 sudo install gopogh-linux-amd64 /usr/local/bin/gopogh - name: Download Binaries - uses: actions/download-artifact@v1 + uses: actions/download-artifact@fdafc3f9f2e2a522dc1d230e6a03de57a1e71c95 with: name: minikube_binaries - name: Run Integration Test @@ -263,7 +270,7 @@ jobs: echo 'STAT<> $GITHUB_ENV echo "${STAT}" >> $GITHUB_ENV echo 'EOF' >> $GITHUB_ENV - - uses: actions/upload-artifact@v2 + - uses: actions/upload-artifact@6673cd052c4cd6fcf4b4e6e60ea986c889389535 with: name: functional_docker_containerd_ubuntu path: minikube_binaries/report @@ -285,6 +292,8 @@ jobs: if [ "$numPass" -eq 0 ];then echo "*** Passed! ***";exit 0;fi functional_podman_ubuntu: + permissions: + contents: none needs: [ build_minikube ] env: TIME_ELAPSED: time @@ -317,7 +326,7 @@ jobs: podman 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 + - uses: actions/setup-go@f6164bd8c8acb4a71fb2791a8b6c4024ff038dab with: go-version: ${{env.GO_VERSION}} stable: true @@ -327,7 +336,7 @@ jobs: curl -LO https://github.com/medyagh/gopogh/releases/download/v0.9.0/gopogh-linux-amd64 sudo install gopogh-linux-amd64 /usr/local/bin/gopogh - name: Download Binaries - uses: actions/download-artifact@v1 + uses: actions/download-artifact@fdafc3f9f2e2a522dc1d230e6a03de57a1e71c95 with: name: minikube_binaries - name: Run Integration Test @@ -365,7 +374,7 @@ jobs: echo 'STAT<> $GITHUB_ENV echo "${STAT}" >> $GITHUB_ENV echo 'EOF' >> $GITHUB_ENV - - uses: actions/upload-artifact@v2 + - uses: actions/upload-artifact@6673cd052c4cd6fcf4b4e6e60ea986c889389535 with: name: functional_podman_ubuntu path: minikube_binaries/report @@ -387,6 +396,8 @@ jobs: if [ "$numPass" -eq 0 ];then echo "*** Passed! ***";exit 0;fi functional_virtualbox_macos: + permissions: + contents: none needs: [build_minikube] env: TIME_ELAPSED: time @@ -402,7 +413,7 @@ jobs: sudo install kubectl /usr/local/bin/kubectl kubectl version --client=true # go 1.14.6+ is needed because of this bug https://github.com/golang/go/issues/39308 - - uses: actions/setup-go@v2 + - uses: actions/setup-go@f6164bd8c8acb4a71fb2791a8b6c4024ff038dab with: go-version: ${{env.GO_VERSION}} stable: true @@ -428,7 +439,7 @@ jobs: sudo /usr/libexec/ApplicationFirewall/socketfilterfw --setglobalstate off sudo /usr/libexec/ApplicationFirewall/socketfilterfw -k - name: Download Binaries - uses: actions/download-artifact@v1 + uses: actions/download-artifact@fdafc3f9f2e2a522dc1d230e6a03de57a1e71c95 with: name: minikube_binaries - name: Run Integration Test @@ -464,7 +475,7 @@ jobs: echo 'STAT<> $GITHUB_ENV echo "${STAT}" >> $GITHUB_ENV echo 'EOF' >> $GITHUB_ENV - - uses: actions/upload-artifact@v2 + - uses: actions/upload-artifact@6673cd052c4cd6fcf4b4e6e60ea986c889389535 with: name: functional_virtualbox_macos path: minikube_binaries/report @@ -485,6 +496,8 @@ jobs: if [ "$numPass" -lt 33 ];then echo "*** Failed to pass at least 33 ! ***";exit 2;fi if [ "$numPass" -eq 0 ];then echo "*** Passed! ***";exit 0;fi functional_baremetal_ubuntu18_04: + permissions: + contents: none needs: [build_minikube] env: TIME_ELAPSED: time @@ -511,7 +524,7 @@ jobs: curl -L https://github.com/kubernetes-sigs/cri-tools/releases/download/$VERSION/crictl-${VERSION}-linux-amd64.tar.gz --output crictl-${VERSION}-linux-amd64.tar.gz sudo tar zxvf crictl-$VERSION-linux-amd64.tar.gz -C /usr/local/bin # go 1.14.6+ is needed because of this bug https://github.com/golang/go/issues/39308 - - uses: actions/setup-go@v2 + - uses: actions/setup-go@f6164bd8c8acb4a71fb2791a8b6c4024ff038dab with: go-version: ${{env.GO_VERSION}} stable: true @@ -522,7 +535,7 @@ jobs: curl -LO https://github.com/medyagh/gopogh/releases/download/v0.9.0/gopogh-linux-amd64 sudo install gopogh-linux-amd64 /usr/local/bin/gopogh - name: Download Binaries - uses: actions/download-artifact@v1 + uses: actions/download-artifact@fdafc3f9f2e2a522dc1d230e6a03de57a1e71c95 with: name: minikube_binaries - name: Run Integration Test @@ -558,7 +571,7 @@ jobs: echo 'STAT<> $GITHUB_ENV echo "${STAT}" >> $GITHUB_ENV echo 'EOF' >> $GITHUB_ENV - - uses: actions/upload-artifact@v2 + - uses: actions/upload-artifact@6673cd052c4cd6fcf4b4e6e60ea986c889389535 with: name: none_ubuntu18_04 path: minikube_binaries/report @@ -581,6 +594,8 @@ jobs: # After all integration tests finished # collect all the reports and upload them upload_all_reports: + permissions: + contents: none if: always() needs: [ @@ -593,7 +608,7 @@ jobs: runs-on: ubuntu-20.04 steps: - name: download all reports - uses: actions/download-artifact@v2-preview + uses: actions/download-artifact@9fde3de0b74bd6bc202952485c264b551a4f9405 - name: upload all reports shell: bash {0} continue-on-error: true @@ -606,7 +621,7 @@ jobs: cp -r ./functional_virtualbox_macos ./all_reports/ cp -r ./functional_baremetal_ubuntu18_04 ./all_reports/ - - uses: actions/upload-artifact@v2 + - uses: actions/upload-artifact@6673cd052c4cd6fcf4b4e6e60ea986c889389535 with: name: all_reports path: all_reports diff --git a/.github/workflows/pr.yml b/.github/workflows/pr.yml index 0071977229..2e4edad5fc 100644 --- a/.github/workflows/pr.yml +++ b/.github/workflows/pr.yml @@ -12,15 +12,18 @@ on: - "!deploy/iso/**" env: GOPROXY: https://proxy.golang.org - GO_VERSION: '1.17.7' + GO_VERSION: '1.18' +permissions: + contents: read + jobs: # Runs before all other jobs # builds the minikube binaries build_minikube: runs-on: ubuntu-20.04 steps: - - uses: actions/checkout@v2 - - uses: actions/setup-go@v2 + - uses: actions/checkout@629c2de402a417ea7690ca6ce3f33229e27606a5 + - uses: actions/setup-go@f6164bd8c8acb4a71fb2791a8b6c4024ff038dab with: go-version: ${{env.GO_VERSION}} stable: true @@ -39,15 +42,15 @@ jobs: echo workspace $GITHUB_WORKSPACE echo "end of debug stuff" echo $(which jq) - - uses: actions/upload-artifact@v2 + - uses: actions/upload-artifact@6673cd052c4cd6fcf4b4e6e60ea986c889389535 with: name: minikube_binaries path: out lint: runs-on: ubuntu-20.04 steps: - - uses: actions/checkout@v2 - - uses: actions/setup-go@v2 + - uses: actions/checkout@629c2de402a417ea7690ca6ce3f33229e27606a5 + - uses: actions/setup-go@f6164bd8c8acb4a71fb2791a8b6c4024ff038dab with: go-version: ${{env.GO_VERSION}} stable: true @@ -65,8 +68,8 @@ jobs: unit_test: runs-on: ubuntu-20.04 steps: - - uses: actions/checkout@v2 - - uses: actions/setup-go@v2 + - uses: actions/checkout@629c2de402a417ea7690ca6ce3f33229e27606a5 + - uses: actions/setup-go@f6164bd8c8acb4a71fb2791a8b6c4024ff038dab with: go-version: ${{env.GO_VERSION}} stable: true @@ -84,6 +87,8 @@ jobs: # Run the following integration tests after the build_minikube # They will run in parallel and use the binaries in previous step functional_docker_ubuntu: + permissions: + contents: none needs: [build_minikube] env: TIME_ELAPSED: time @@ -113,7 +118,7 @@ jobs: 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 + - uses: actions/setup-go@f6164bd8c8acb4a71fb2791a8b6c4024ff038dab with: go-version: ${{env.GO_VERSION}} stable: true @@ -123,7 +128,7 @@ jobs: curl -LO https://github.com/medyagh/gopogh/releases/download/v0.9.0/gopogh-linux-amd64 sudo install gopogh-linux-amd64 /usr/local/bin/gopogh - name: Download Binaries - uses: actions/download-artifact@v1 + uses: actions/download-artifact@fdafc3f9f2e2a522dc1d230e6a03de57a1e71c95 with: name: minikube_binaries - name: Run Integration Test @@ -162,7 +167,7 @@ jobs: echo 'STAT<> $GITHUB_ENV echo "${STAT}" >> $GITHUB_ENV echo 'EOF' >> $GITHUB_ENV - - uses: actions/upload-artifact@v2 + - uses: actions/upload-artifact@6673cd052c4cd6fcf4b4e6e60ea986c889389535 with: name: functional_docker_ubuntu path: minikube_binaries/report @@ -183,6 +188,8 @@ jobs: 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_containerd_ubuntu: + permissions: + contents: none needs: [build_minikube] env: TIME_ELAPSED: time @@ -212,7 +219,7 @@ jobs: 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 + - uses: actions/setup-go@f6164bd8c8acb4a71fb2791a8b6c4024ff038dab with: go-version: ${{env.GO_VERSION}} stable: true @@ -223,7 +230,7 @@ jobs: curl -LO https://github.com/medyagh/gopogh/releases/download/v0.9.0/gopogh-linux-amd64 sudo install gopogh-linux-amd64 /usr/local/bin/gopogh - name: Download Binaries - uses: actions/download-artifact@v1 + uses: actions/download-artifact@fdafc3f9f2e2a522dc1d230e6a03de57a1e71c95 with: name: minikube_binaries - name: Run Integration Test @@ -262,7 +269,7 @@ jobs: echo 'STAT<> $GITHUB_ENV echo "${STAT}" >> $GITHUB_ENV echo 'EOF' >> $GITHUB_ENV - - uses: actions/upload-artifact@v2 + - uses: actions/upload-artifact@6673cd052c4cd6fcf4b4e6e60ea986c889389535 with: name: functional_docker_containerd_ubuntu path: minikube_binaries/report @@ -284,6 +291,8 @@ jobs: if [ "$numPass" -eq 0 ];then echo "*** Passed! ***";exit 0;fi functional_podman_ubuntu: + permissions: + contents: none needs: [ build_minikube ] env: TIME_ELAPSED: time @@ -316,7 +325,7 @@ jobs: podman 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 + - uses: actions/setup-go@f6164bd8c8acb4a71fb2791a8b6c4024ff038dab with: go-version: ${{env.GO_VERSION}} stable: true @@ -326,7 +335,7 @@ jobs: curl -LO https://github.com/medyagh/gopogh/releases/download/v0.9.0/gopogh-linux-amd64 sudo install gopogh-linux-amd64 /usr/local/bin/gopogh - name: Download Binaries - uses: actions/download-artifact@v1 + uses: actions/download-artifact@fdafc3f9f2e2a522dc1d230e6a03de57a1e71c95 with: name: minikube_binaries - name: Run Integration Test @@ -365,7 +374,7 @@ jobs: echo 'STAT<> $GITHUB_ENV echo "${STAT}" >> $GITHUB_ENV echo 'EOF' >> $GITHUB_ENV - - uses: actions/upload-artifact@v2 + - uses: actions/upload-artifact@6673cd052c4cd6fcf4b4e6e60ea986c889389535 with: name: functional_podman_ubuntu path: minikube_binaries/report @@ -387,6 +396,8 @@ jobs: if [ "$numPass" -eq 0 ];then echo "*** Passed! ***";exit 0;fi functional_virtualbox_macos: + permissions: + contents: none needs: [build_minikube] env: TIME_ELAPSED: time @@ -402,7 +413,7 @@ jobs: sudo install kubectl /usr/local/bin/kubectl kubectl version --client=true # go 1.14.6+ is needed because of this bug https://github.com/golang/go/issues/39308 - - uses: actions/setup-go@v2 + - uses: actions/setup-go@f6164bd8c8acb4a71fb2791a8b6c4024ff038dab with: go-version: ${{env.GO_VERSION}} stable: true @@ -428,7 +439,7 @@ jobs: sudo /usr/libexec/ApplicationFirewall/socketfilterfw --setglobalstate off sudo /usr/libexec/ApplicationFirewall/socketfilterfw -k - name: Download Binaries - uses: actions/download-artifact@v1 + uses: actions/download-artifact@fdafc3f9f2e2a522dc1d230e6a03de57a1e71c95 with: name: minikube_binaries - name: Run Integration Test @@ -465,7 +476,7 @@ jobs: echo 'STAT<> $GITHUB_ENV echo "${STAT}" >> $GITHUB_ENV echo 'EOF' >> $GITHUB_ENV - - uses: actions/upload-artifact@v2 + - uses: actions/upload-artifact@6673cd052c4cd6fcf4b4e6e60ea986c889389535 with: name: functional_virtualbox_macos path: minikube_binaries/report @@ -486,6 +497,8 @@ jobs: if [ "$numPass" -lt 33 ];then echo "*** Failed to pass at least 33 ! ***";exit 2;fi if [ "$numPass" -eq 0 ];then echo "*** Passed! ***";exit 0;fi functional_baremetal_ubuntu18_04: + permissions: + contents: none needs: [build_minikube] env: TIME_ELAPSED: time @@ -512,7 +525,7 @@ jobs: curl -L https://github.com/kubernetes-sigs/cri-tools/releases/download/$VERSION/crictl-${VERSION}-linux-amd64.tar.gz --output crictl-${VERSION}-linux-amd64.tar.gz sudo tar zxvf crictl-$VERSION-linux-amd64.tar.gz -C /usr/local/bin # go 1.14.6+ is needed because of this bug https://github.com/golang/go/issues/39308 - - uses: actions/setup-go@v2 + - uses: actions/setup-go@f6164bd8c8acb4a71fb2791a8b6c4024ff038dab with: go-version: ${{env.GO_VERSION}} stable: true @@ -523,7 +536,7 @@ jobs: curl -LO https://github.com/medyagh/gopogh/releases/download/v0.9.0/gopogh-linux-amd64 sudo install gopogh-linux-amd64 /usr/local/bin/gopogh - name: Download Binaries - uses: actions/download-artifact@v1 + uses: actions/download-artifact@fdafc3f9f2e2a522dc1d230e6a03de57a1e71c95 with: name: minikube_binaries - name: Run Integration Test @@ -560,7 +573,7 @@ jobs: echo 'STAT<> $GITHUB_ENV echo "${STAT}" >> $GITHUB_ENV echo 'EOF' >> $GITHUB_ENV - - uses: actions/upload-artifact@v2 + - uses: actions/upload-artifact@6673cd052c4cd6fcf4b4e6e60ea986c889389535 with: name: none_ubuntu18_04 path: minikube_binaries/report @@ -583,6 +596,8 @@ jobs: # After all integration tests finished # collect all the reports and upload them upload_all_reports: + permissions: + contents: none if: always() needs: [ @@ -595,7 +610,7 @@ jobs: runs-on: ubuntu-20.04 steps: - name: download all reports - uses: actions/download-artifact@v2-preview + uses: actions/download-artifact@9fde3de0b74bd6bc202952485c264b551a4f9405 - name: upload all reports shell: bash {0} continue-on-error: true @@ -608,7 +623,7 @@ jobs: cp -r ./functional_virtualbox_macos ./all_reports/ cp -r ./functional_baremetal_ubuntu18_04 ./all_reports/ - - uses: actions/upload-artifact@v2 + - uses: actions/upload-artifact@6673cd052c4cd6fcf4b4e6e60ea986c889389535 with: name: all_reports path: all_reports diff --git a/.github/workflows/sync-minikube.yml b/.github/workflows/sync-minikube.yml index edfc87df88..3c7bb46649 100644 --- a/.github/workflows/sync-minikube.yml +++ b/.github/workflows/sync-minikube.yml @@ -6,6 +6,9 @@ on: # every day at 7am & 7pm pacific - cron: "0 2,14 * * *" +permissions: + contents: read + jobs: sync-images: runs-on: ubuntu-latest @@ -13,13 +16,13 @@ jobs: run: working-directory: ./image-syncer steps: - - uses: actions/checkout@v2 + - uses: actions/checkout@629c2de402a417ea7690ca6ce3f33229e27606a5 with: repository: denverdino/image-syncer path: ./image-syncer - name: Set up Go - uses: actions/setup-go@v2 + uses: actions/setup-go@f6164bd8c8acb4a71fb2791a8b6c4024ff038dab with: go-version: 1.17 diff --git a/.github/workflows/time-to-k8s-public-chart.yml b/.github/workflows/time-to-k8s-public-chart.yml index 60ce9cd5b7..44b42ca892 100644 --- a/.github/workflows/time-to-k8s-public-chart.yml +++ b/.github/workflows/time-to-k8s-public-chart.yml @@ -6,7 +6,10 @@ on: - cron: "0 2,14 * * *" env: GOPROXY: https://proxy.golang.org - GO_VERSION: '1.17.7' + GO_VERSION: '1.18' +permissions: + contents: read + jobs: time-to-k8s-public-chart-docker: if: github.repository == 'kubernetes/minikube' @@ -16,8 +19,8 @@ jobs: AWS_SECRET_ACCESS_KEY: ${{ secrets.AWS_SECRET_ACCESS_KEY }} AWS_DEFAULT_REGION: 'us-west-1' steps: - - uses: actions/checkout@v2 - - uses: actions/setup-go@v2 + - uses: actions/checkout@629c2de402a417ea7690ca6ce3f33229e27606a5 + - uses: actions/setup-go@f6164bd8c8acb4a71fb2791a8b6c4024ff038dab with: go-version: ${{env.GO_VERSION}} stable: true @@ -35,14 +38,14 @@ jobs: AWS_SECRET_ACCESS_KEY: ${{ secrets.AWS_SECRET_ACCESS_KEY }} AWS_DEFAULT_REGION: 'us-west-1' steps: - - uses: actions/checkout@v2 + - uses: actions/checkout@629c2de402a417ea7690ca6ce3f33229e27606a5 - name: Install kubectl shell: bash run: | curl -LO https://storage.googleapis.com/kubernetes-release/release/v1.18.0/bin/darwin/amd64/kubectl sudo install kubectl /usr/local/bin/kubectl kubectl version --client=true - - uses: actions/setup-go@v2 + - uses: actions/setup-go@f6164bd8c8acb4a71fb2791a8b6c4024ff038dab with: go-version: ${{env.GO_VERSION}} stable: true diff --git a/.github/workflows/time-to-k8s.yml b/.github/workflows/time-to-k8s.yml index 7e44463ce5..e7e1eadcb3 100644 --- a/.github/workflows/time-to-k8s.yml +++ b/.github/workflows/time-to-k8s.yml @@ -5,15 +5,18 @@ on: types: [released] env: GOPROXY: https://proxy.golang.org - GO_VERSION: '1.17.7' + GO_VERSION: '1.18' +permissions: + contents: read + jobs: benchmark: runs-on: ubuntu-20.04 steps: - - uses: actions/checkout@v2 + - uses: actions/checkout@629c2de402a417ea7690ca6ce3f33229e27606a5 - name: Checkout submodules run: git submodule update --init - - uses: actions/setup-go@v2 + - uses: actions/setup-go@f6164bd8c8acb4a71fb2791a8b6c4024ff038dab with: go-version: ${{env.GO_VERSION}} stable: true @@ -23,7 +26,7 @@ jobs: ./hack/benchmark/time-to-k8s/time-to-k8s.sh echo "::set-output name=version::$(minikube version --short)" - name: Create PR - uses: peter-evans/create-pull-request@v3 + uses: peter-evans/create-pull-request@f1a7646cead32c950d90344a4fb5d4e926972a8f with: token: ${{ secrets.MINIKUBE_BOT_PAT }} commit-message: add time-to-k8s benchmark for ${{ steps.timeToK8sBenchmark.outputs.version }} diff --git a/.github/workflows/translations.yml b/.github/workflows/translations.yml index f1d6844571..34fadcc977 100644 --- a/.github/workflows/translations.yml +++ b/.github/workflows/translations.yml @@ -6,13 +6,16 @@ on: - "translations/**" env: GOPROXY: https://proxy.golang.org - GO_VERSION: '1.17.7' + GO_VERSION: '1.18' +permissions: + contents: read + jobs: unit_test: runs-on: ubuntu-20.04 steps: - - uses: actions/checkout@v2 - - uses: actions/setup-go@v2 + - uses: actions/checkout@629c2de402a417ea7690ca6ce3f33229e27606a5 + - uses: actions/setup-go@f6164bd8c8acb4a71fb2791a8b6c4024ff038dab with: go-version: ${{env.GO_VERSION}} stable: true diff --git a/.github/workflows/twitter-bot.yml b/.github/workflows/twitter-bot.yml index 6130796ac8..8bad19d64f 100644 --- a/.github/workflows/twitter-bot.yml +++ b/.github/workflows/twitter-bot.yml @@ -10,7 +10,7 @@ jobs: twitter-release: runs-on: ubuntu-20.04 steps: - - uses: ethomson/send-tweet-action@v1 + - uses: ethomson/send-tweet-action@288f9339e0412e3038dce350e0da5ecdf12133a6 with: status: "minikube ${GITHUB_REF_NAME} was just released! Check it out: https://github.com/kubernetes/minikube/blob/master/CHANGELOG.md" consumer-key: ${{ secrets.TWITTER_API_KEY }} diff --git a/.github/workflows/update-golang-version.yml b/.github/workflows/update-golang-version.yml index e2f1794568..cd3ac21713 100644 --- a/.github/workflows/update-golang-version.yml +++ b/.github/workflows/update-golang-version.yml @@ -6,13 +6,16 @@ on: - cron: "0 9 * * 1" env: GOPROXY: https://proxy.golang.org - GO_VERSION: '1.17.7' + GO_VERSION: '1.18' +permissions: + contents: read + jobs: bump-golang-version: runs-on: ubuntu-20.04 steps: - - uses: actions/checkout@v2 - - uses: actions/setup-go@v2 + - uses: actions/checkout@629c2de402a417ea7690ca6ce3f33229e27606a5 + - uses: actions/setup-go@f6164bd8c8acb4a71fb2791a8b6c4024ff038dab with: go-version: ${{env.GO_VERSION}} stable: true @@ -23,7 +26,7 @@ jobs: echo "::set-output name=changes::$(git status --porcelain)" - name: Create PR if: ${{ steps.bumpGolang.outputs.changes != '' }} - uses: peter-evans/create-pull-request@v3 + uses: peter-evans/create-pull-request@f1a7646cead32c950d90344a4fb5d4e926972a8f with: token: ${{ secrets.MINIKUBE_BOT_PAT }} commit-message: bump golang versions diff --git a/.github/workflows/update-golint-version.yml b/.github/workflows/update-golint-version.yml index 6a319cf2df..ce7d850daa 100644 --- a/.github/workflows/update-golint-version.yml +++ b/.github/workflows/update-golint-version.yml @@ -6,13 +6,16 @@ on: - cron: "0 10 * * 1" env: GOPROXY: https://proxy.golang.org - GO_VERSION: '1.17.7' + GO_VERSION: '1.18' +permissions: + contents: read + jobs: bump-golint-version: runs-on: ubuntu-20.04 steps: - - uses: actions/checkout@v2 - - uses: actions/setup-go@v2 + - uses: actions/checkout@629c2de402a417ea7690ca6ce3f33229e27606a5 + - uses: actions/setup-go@f6164bd8c8acb4a71fb2791a8b6c4024ff038dab with: go-version: ${{env.GO_VERSION}} stable: true @@ -23,7 +26,7 @@ jobs: echo "::set-output name=changes::$(git status --porcelain)" - name: Create PR if: ${{ steps.bumpGolint.outputs.changes != '' }} - uses: peter-evans/create-pull-request@v3 + uses: peter-evans/create-pull-request@f1a7646cead32c950d90344a4fb5d4e926972a8f with: token: ${{ secrets.MINIKUBE_BOT_PAT }} commit-message: bump golint versions diff --git a/.github/workflows/update-k8s-versions.yml b/.github/workflows/update-k8s-versions.yml index 6aa16f41a6..949f295d1b 100644 --- a/.github/workflows/update-k8s-versions.yml +++ b/.github/workflows/update-k8s-versions.yml @@ -6,13 +6,16 @@ on: - cron: "0 8 * * 1" env: GOPROXY: https://proxy.golang.org - GO_VERSION: '1.17.7' + GO_VERSION: '1.18' +permissions: + contents: read + jobs: bump-k8s-versions: runs-on: ubuntu-20.04 steps: - - uses: actions/checkout@v2 - - uses: actions/setup-go@v2 + - uses: actions/checkout@629c2de402a417ea7690ca6ce3f33229e27606a5 + - uses: actions/setup-go@f6164bd8c8acb4a71fb2791a8b6c4024ff038dab with: go-version: ${{env.GO_VERSION}} stable: true @@ -28,7 +31,7 @@ jobs: echo "::set-output name=changes::$c" - name: Create PR if: ${{ steps.bumpk8s.outputs.changes != '' }} - uses: peter-evans/create-pull-request@v3 + uses: peter-evans/create-pull-request@f1a7646cead32c950d90344a4fb5d4e926972a8f with: token: ${{ secrets.MINIKUBE_BOT_PAT }} commit-message: bump default/newest kubernetes versions diff --git a/.github/workflows/update-kubadm-constants.yml b/.github/workflows/update-kubadm-constants.yml index 85b6a40daa..182fbe2bf3 100644 --- a/.github/workflows/update-kubadm-constants.yml +++ b/.github/workflows/update-kubadm-constants.yml @@ -6,13 +6,16 @@ on: - cron: "0 6 * * 1" env: GOPROXY: https://proxy.golang.org - GO_VERSION: '1.17.7' + GO_VERSION: '1.18' +permissions: + contents: read + jobs: bump-k8s-versions: runs-on: ubuntu-20.04 steps: - - uses: actions/checkout@v2 - - uses: actions/setup-go@v2 + - uses: actions/checkout@629c2de402a417ea7690ca6ce3f33229e27606a5 + - uses: actions/setup-go@f6164bd8c8acb4a71fb2791a8b6c4024ff038dab with: go-version: ${{env.GO_VERSION}} stable: true @@ -26,7 +29,7 @@ jobs: echo "::set-output name=changes::$c" - name: Create PR if: ${{ steps.bumpKubAdmConsts.outputs.changes != '' }} - uses: peter-evans/create-pull-request@v3 + uses: peter-evans/create-pull-request@f1a7646cead32c950d90344a4fb5d4e926972a8f with: token: ${{ secrets.MINIKUBE_BOT_PAT }} commit-message: update image constants for kubeadm images diff --git a/Makefile b/Makefile index bd6f44a901..4cfc49561d 100644 --- a/Makefile +++ b/Makefile @@ -23,7 +23,7 @@ KUBERNETES_VERSION ?= $(shell egrep "DefaultKubernetesVersion =" pkg/minikube/co KIC_VERSION ?= $(shell egrep "Version =" pkg/drivers/kic/types.go | cut -d \" -f2) # Default to .0 for higher cache hit rates, as build increments typically don't require new ISO versions -ISO_VERSION ?= v1.25.2 +ISO_VERSION ?= v1.25.2-1648512003-13860 # Dashes are valid in semver, but not Linux packaging. Use ~ to delimit alpha/beta DEB_VERSION ?= $(subst -,~,$(RAW_VERSION)) DEB_REVISION ?= 0 @@ -33,7 +33,7 @@ RPM_REVISION ?= 0 # used by hack/jenkins/release_build_and_upload.sh and KVM_BUILD_IMAGE, see also BUILD_IMAGE below # update this only by running `make update-golang-version` -GO_VERSION ?= 1.17.7 +GO_VERSION ?= 1.18 # update this only by running `make update-golang-version` GO_K8S_VERSION_PREFIX ?= v1.24.0 @@ -76,7 +76,7 @@ MINIKUBE_RELEASES_URL=https://github.com/kubernetes/minikube/releases/download KERNEL_VERSION ?= 4.19.224 # latest from https://github.com/golangci/golangci-lint/releases # update this only by running `make update-golint-version` -GOLINT_VERSION ?= v1.44.2 +GOLINT_VERSION ?= v1.45.2 # Limit number of default jobs, to avoid the CI builds running out of memory GOLINT_JOBS ?= 4 # see https://github.com/golangci/golangci-lint#memory-usage-of-golangci-lint @@ -868,6 +868,7 @@ else $(if $(quiet),@echo " GO $@") $(Q)GOARCH=arm64 \ go build \ + -buildvcs=false \ -installsuffix "static" \ -ldflags="$(KVM2_LDFLAGS)" \ -tags "libvirt.1.3.1 without_lxc" \ diff --git a/cmd/auto-pause/auto-pause.go b/cmd/auto-pause/auto-pause.go index b5d816a9bc..e877878e89 100644 --- a/cmd/auto-pause/auto-pause.go +++ b/cmd/auto-pause/auto-pause.go @@ -103,6 +103,7 @@ func runPause() { mu.Lock() defer mu.Unlock() if runtimePaused { + out.Styled(style.AddonEnable, "Auto-pause is already enabled.") return } diff --git a/cmd/drivers/hyperkit/main.go b/cmd/drivers/hyperkit/main.go index c281bffb14..4bff1b3d62 100644 --- a/cmd/drivers/hyperkit/main.go +++ b/cmd/drivers/hyperkit/main.go @@ -1,5 +1,4 @@ //go:build darwin && !arm64 -// +build darwin,!arm64 /* Copyright 2016 The Kubernetes Authors All rights reserved. diff --git a/cmd/drivers/kvm/main-nolinux.go b/cmd/drivers/kvm/main-nolinux.go index 68567605e3..902c69488c 100644 --- a/cmd/drivers/kvm/main-nolinux.go +++ b/cmd/drivers/kvm/main-nolinux.go @@ -1,5 +1,4 @@ //go:build !linux -// +build !linux /* Copyright 2016 The Kubernetes Authors All rights reserved. diff --git a/cmd/drivers/kvm/main.go b/cmd/drivers/kvm/main.go index 579138eb4b..7251f68365 100644 --- a/cmd/drivers/kvm/main.go +++ b/cmd/drivers/kvm/main.go @@ -1,5 +1,4 @@ //go:build linux -// +build linux /* Copyright 2016 The Kubernetes Authors All rights reserved. diff --git a/cmd/minikube/cmd/config/enable.go b/cmd/minikube/cmd/config/enable.go index fb88e32188..28da1eb43f 100644 --- a/cmd/minikube/cmd/config/enable.go +++ b/cmd/minikube/cmd/config/enable.go @@ -49,6 +49,9 @@ var addonsEnableCmd = &cobra.Command{ if addon == "ambassador" { out.Styled(style.Warning, "The ambassador addon has stopped working as of v1.23.0, for more details visit: https://github.com/datawire/ambassador-operator/issues/73") } + if addon == "olm" { + out.Styled(style.Warning, "The OLM addon has stopped working, for more details visit: https://github.com/operator-framework/operator-lifecycle-manager/issues/2534") + } viper.Set(config.AddonImages, images) viper.Set(config.AddonRegistries, registries) err := addons.SetAndSave(ClusterFlagValue(), addon, "true") diff --git a/cmd/minikube/cmd/config/set_test.go b/cmd/minikube/cmd/config/set_test.go index 6795438ed3..d789595b4a 100644 --- a/cmd/minikube/cmd/config/set_test.go +++ b/cmd/minikube/cmd/config/set_test.go @@ -66,29 +66,18 @@ func TestSetOK(t *testing.T) { func createTestConfig(t *testing.T) { t.Helper() - td, err := os.MkdirTemp("", "config") - if err != nil { - t.Fatalf("tempdir: %v", err) - } + td := t.TempDir() - err = os.Setenv(localpath.MinikubeHome, td) - if err != nil { + if err := os.Setenv(localpath.MinikubeHome, td); err != nil { t.Fatalf("error setting up test environment. could not set %s due to %+v", localpath.MinikubeHome, err) } // Not necessary, but it is a handy random alphanumeric - if err = os.MkdirAll(localpath.MakeMiniPath("config"), 0777); err != nil { + if err := os.MkdirAll(localpath.MakeMiniPath("config"), 0777); err != nil { t.Fatalf("error creating temporary directory: %+v", err) } - if err = os.MkdirAll(localpath.MakeMiniPath("profiles"), 0777); err != nil { + if err := os.MkdirAll(localpath.MakeMiniPath("profiles"), 0777); err != nil { t.Fatalf("error creating temporary profiles directory: %+v", err) } - - t.Cleanup(func() { - err := os.RemoveAll(td) - if err != nil { - t.Errorf("failed to clean up temp folder %q", td) - } - }) } diff --git a/cmd/minikube/cmd/delete_test.go b/cmd/minikube/cmd/delete_test.go index cdf0cb7495..2626f3a69a 100644 --- a/cmd/minikube/cmd/delete_test.go +++ b/cmd/minikube/cmd/delete_test.go @@ -63,20 +63,9 @@ func fileNames(path string) ([]string, error) { } func TestDeleteProfile(t *testing.T) { - td, err := os.MkdirTemp("", "single") - if err != nil { - t.Fatalf("tempdir: %v", err) - } + td := t.TempDir() - t.Cleanup(func() { - err := os.RemoveAll(td) - if err != nil { - t.Errorf("failed to clean up temp folder %q", td) - } - }) - - err = copy.Copy("../../../pkg/minikube/config/testdata/delete-single", td) - if err != nil { + if err := copy.Copy("../../../pkg/minikube/config/testdata/delete-single", td); err != nil { t.Fatalf("copy: %v", err) } @@ -97,8 +86,7 @@ func TestDeleteProfile(t *testing.T) { for _, tt := range tests { t.Run(tt.name, func(t *testing.T) { - err = os.Setenv(localpath.MinikubeHome, td) - if err != nil { + if err := os.Setenv(localpath.MinikubeHome, td); err != nil { t.Errorf("setenv: %v", err) } @@ -169,24 +157,13 @@ func deleteContextTest() error { } func TestDeleteAllProfiles(t *testing.T) { - td, err := os.MkdirTemp("", "all") - if err != nil { - t.Fatalf("tempdir: %v", err) - } - defer func() { // clean up tempdir - err := os.RemoveAll(td) - if err != nil { - t.Errorf("failed to clean up temp folder %q", td) - } - }() + td := t.TempDir() - err = copy.Copy("../../../pkg/minikube/config/testdata/delete-all", td) - if err != nil { + if err := copy.Copy("../../../pkg/minikube/config/testdata/delete-all", td); err != nil { t.Fatalf("copy: %v", err) } - err = os.Setenv(localpath.MinikubeHome, td) - if err != nil { + if err := os.Setenv(localpath.MinikubeHome, td); err != nil { t.Errorf("error setting up test environment. could not set %s", localpath.MinikubeHome) } diff --git a/cmd/minikube/cmd/generate-docs_test.go b/cmd/minikube/cmd/generate-docs_test.go index daf0b19785..412c6a0c0f 100644 --- a/cmd/minikube/cmd/generate-docs_test.go +++ b/cmd/minikube/cmd/generate-docs_test.go @@ -26,15 +26,10 @@ import ( ) func TestGenerateTestDocs(t *testing.T) { - tempdir, err := os.MkdirTemp("", "") - if err != nil { - t.Fatalf("creating temp dir failed: %v", err) - } - defer os.RemoveAll(tempdir) + tempdir := t.TempDir() docPath := filepath.Join(tempdir, "tests.md") - err = generate.TestDocs(docPath, "../../../test/integration") - if err != nil { + if err := generate.TestDocs(docPath, "../../../test/integration"); err != nil { t.Fatalf("error generating test docs: %v", err) } actualContents, err := os.ReadFile(docPath) diff --git a/cmd/minikube/cmd/logs.go b/cmd/minikube/cmd/logs.go index 80b9d2c14b..76e3bc9cbe 100644 --- a/cmd/minikube/cmd/logs.go +++ b/cmd/minikube/cmd/logs.go @@ -19,14 +19,17 @@ package cmd import ( "os" + "github.com/docker/machine/libmachine/state" "github.com/spf13/cobra" "github.com/spf13/viper" "k8s.io/klog/v2" cmdcfg "k8s.io/minikube/cmd/minikube/cmd/config" "k8s.io/minikube/pkg/minikube/cluster" + "k8s.io/minikube/pkg/minikube/config" "k8s.io/minikube/pkg/minikube/cruntime" "k8s.io/minikube/pkg/minikube/exit" "k8s.io/minikube/pkg/minikube/logs" + "k8s.io/minikube/pkg/minikube/machine" "k8s.io/minikube/pkg/minikube/mustload" "k8s.io/minikube/pkg/minikube/out" "k8s.io/minikube/pkg/minikube/reason" @@ -73,6 +76,10 @@ var logsCmd = &cobra.Command{ logs.OutputOffline(numberOfLines, logOutput) + if shouldSilentFail() { + return + } + co := mustload.Running(ClusterFlagValue()) bs, err := cluster.Bootstrapper(co.API, viper.GetString(cmdcfg.Bootstrapper), *co.Config, co.CP.Runner) @@ -105,6 +112,30 @@ var logsCmd = &cobra.Command{ }, } +// shouldSilentFail returns true if the user specifies the --file flag and the host isn't running +// This is to prevent outputting the message 'The control plane node must be running for this command' which confuses +// many users while gathering logs to report their issue as the message makes them think the log file wasn't generated +func shouldSilentFail() bool { + if fileOutput == "" { + return false + } + + api, cc := mustload.Partial(ClusterFlagValue()) + + cp, err := config.PrimaryControlPlane(cc) + if err != nil { + return false + } + + machineName := config.MachineName(*cc, cp) + hs, err := machine.Status(api, machineName) + if err != nil { + return false + } + + return hs != state.Running.String() +} + func init() { logsCmd.Flags().BoolVarP(&followLogs, "follow", "f", false, "Show only the most recent journal entries, and continuously print new entries as they are appended to the journal.") logsCmd.Flags().BoolVar(&showProblems, "problems", false, "Show only log entries which point to known problems") diff --git a/cmd/minikube/cmd/root_test.go b/cmd/minikube/cmd/root_test.go index af7d34e254..328dd65753 100644 --- a/cmd/minikube/cmd/root_test.go +++ b/cmd/minikube/cmd/root_test.go @@ -34,8 +34,7 @@ func runCommand(f func(*cobra.Command, []string)) { func TestPreRunDirectories(t *testing.T) { // Make sure we create the required directories. - tempDir := tests.MakeTempDir() - defer tests.RemoveTempDir(tempDir) + tests.MakeTempDir(t) runCommand(RootCmd.PersistentPreRun) diff --git a/cmd/minikube/cmd/start.go b/cmd/minikube/cmd/start.go index ee8483447f..228d6d4499 100644 --- a/cmd/minikube/cmd/start.go +++ b/cmd/minikube/cmd/start.go @@ -43,6 +43,8 @@ import ( gopshost "github.com/shirou/gopsutil/v3/host" "github.com/spf13/cobra" "github.com/spf13/viper" + "golang.org/x/text/cases" + "golang.org/x/text/language" "k8s.io/klog/v2" cmdcfg "k8s.io/minikube/cmd/minikube/cmd/config" @@ -108,7 +110,7 @@ func platform() string { // Show the distro version if possible hi, err := gopshost.Info() if err == nil { - s.WriteString(fmt.Sprintf("%s %s", strings.Title(hi.Platform), hi.PlatformVersion)) + s.WriteString(fmt.Sprintf("%s %s", cases.Title(language.Und).String(hi.Platform), hi.PlatformVersion)) klog.Infof("hostinfo: %+v", hi) } else { klog.Warningf("gopshost.Info returned error: %v", err) diff --git a/cmd/minikube/cmd/start_flags.go b/cmd/minikube/cmd/start_flags.go index fa25e9cd53..cbabf6d71a 100644 --- a/cmd/minikube/cmd/start_flags.go +++ b/cmd/minikube/cmd/start_flags.go @@ -121,6 +121,7 @@ const ( kicBaseImage = "base-image" ports = "ports" network = "network" + subnet = "subnet" startNamespace = "namespace" trace = "trace" sshIPAddress = "ssh-ip-address" @@ -251,6 +252,7 @@ func initDriverFlags() { // docker & podman startCmd.Flags().String(listenAddress, "", "IP Address to use to expose ports (docker and podman driver only)") startCmd.Flags().StringSlice(ports, []string{}, "List of ports that should be exposed (docker and podman driver only)") + startCmd.Flags().String(subnet, "", "Subnet to be used on kic cluster. If left empty, minikube will choose subnet address, beginning from 192.168.49.0. (docker and podman driver only)") } // initNetworkingFlags inits the commandline flags for connectivity related flags for start @@ -470,6 +472,7 @@ func generateNewConfigFromFlags(cmd *cobra.Command, k8sVersion string, rtime str MinikubeISO: viper.GetString(isoURL), KicBaseImage: viper.GetString(kicBaseImage), Network: viper.GetString(network), + Subnet: viper.GetString(subnet), Memory: getMemorySize(cmd, drvName), CPUs: getCPUCount(drvName), DiskSize: getDiskSize(), diff --git a/cmd/minikube/main.go b/cmd/minikube/main.go index 496ec6e9fd..6f12f844b0 100644 --- a/cmd/minikube/main.go +++ b/cmd/minikube/main.go @@ -60,6 +60,8 @@ var ( // unexpected errors from libmachine to the user. machineLogErrorRe = regexp.MustCompile(`VirtualizationException`) machineLogWarningRe = regexp.MustCompile(`(?i)warning`) + // This regex is to filter out logs that contain environment variables which could contain sensitive information + machineLogEnvironmentRe = regexp.MustCompile(`&exec\.Cmd`) ) func main() { @@ -122,7 +124,9 @@ type machineLogBridge struct{} // Write passes machine driver logs to klog func (lb machineLogBridge) Write(b []byte) (n int, err error) { - if machineLogErrorRe.Match(b) { + if machineLogEnvironmentRe.Match(b) { + return len(b), nil + } else if machineLogErrorRe.Match(b) { klog.Errorf("libmachine: %s", b) } else if machineLogWarningRe.Match(b) { klog.Warningf("libmachine: %s", b) diff --git a/deploy/addons/metrics-server/metrics-apiservice.yaml.tmpl b/deploy/addons/metrics-server/metrics-apiservice.yaml.tmpl index 324294329b..31b5b8feaf 100644 --- a/deploy/addons/metrics-server/metrics-apiservice.yaml.tmpl +++ b/deploy/addons/metrics-server/metrics-apiservice.yaml.tmpl @@ -5,12 +5,13 @@ metadata: labels: kubernetes.io/minikube-addons: metrics-server addonmanager.kubernetes.io/mode: Reconcile + k8s-app: metrics-server spec: + group: metrics.k8s.io + groupPriorityMinimum: 100 + insecureSkipTLSVerify: true service: name: metrics-server namespace: kube-system - group: metrics.k8s.io version: v1beta1 - insecureSkipTLSVerify: true - groupPriorityMinimum: 100 versionPriority: 100 diff --git a/deploy/addons/metrics-server/metrics-server-deployment.yaml.tmpl b/deploy/addons/metrics-server/metrics-server-deployment.yaml.tmpl index f7b7cd3f0c..e8ed7029e4 100644 --- a/deploy/addons/metrics-server/metrics-server-deployment.yaml.tmpl +++ b/deploy/addons/metrics-server/metrics-server-deployment.yaml.tmpl @@ -40,7 +40,7 @@ spec: resources: requests: cpu: 100m - memory: 300Mi + memory: 200Mi ports: - name: https containerPort: 4443 diff --git a/deploy/addons/metrics-server/metrics-server-rbac.yaml.tmpl b/deploy/addons/metrics-server/metrics-server-rbac.yaml.tmpl index eb8ad76699..8966849200 100644 --- a/deploy/addons/metrics-server/metrics-server-rbac.yaml.tmpl +++ b/deploy/addons/metrics-server/metrics-server-rbac.yaml.tmpl @@ -1,87 +1,102 @@ +apiVersion: v1 +kind: ServiceAccount +metadata: + labels: + k8s-app: metrics-server + addonmanager.kubernetes.io/mode: Reconcile + name: metrics-server + namespace: kube-system +--- apiVersion: rbac.authorization.k8s.io/v1 kind: ClusterRole metadata: name: system:aggregated-metrics-reader labels: - rbac.authorization.k8s.io/aggregate-to-view: "true" - rbac.authorization.k8s.io/aggregate-to-edit: "true" + k8s-app: metrics-server rbac.authorization.k8s.io/aggregate-to-admin: "true" + rbac.authorization.k8s.io/aggregate-to-edit: "true" + rbac.authorization.k8s.io/aggregate-to-view: "true" addonmanager.kubernetes.io/mode: Reconcile rules: -- apiGroups: ["metrics.k8s.io"] - resources: ["pods", "nodes"] - verbs: ["get", "list", "watch"] ---- -apiVersion: v1 -kind: ServiceAccount -metadata: - name: metrics-server - namespace: kube-system - labels: - addonmanager.kubernetes.io/mode: Reconcile +- apiGroups: + - metrics.k8s.io + resources: + - pods + - nodes + verbs: + - get + - list + - watch --- apiVersion: rbac.authorization.k8s.io/v1 kind: RoleBinding metadata: + labels: + k8s-app: metrics-server + addonmanager.kubernetes.io/mode: Reconcile name: metrics-server-auth-reader namespace: kube-system - labels: - addonmanager.kubernetes.io/mode: Reconcile roleRef: apiGroup: rbac.authorization.k8s.io kind: Role name: extension-apiserver-authentication-reader subjects: - - kind: ServiceAccount - name: metrics-server - namespace: kube-system +- kind: ServiceAccount + name: metrics-server + namespace: kube-system --- apiVersion: rbac.authorization.k8s.io/v1 kind: ClusterRoleBinding metadata: name: metrics-server:system:auth-delegator labels: + k8s-app: metrics-server addonmanager.kubernetes.io/mode: Reconcile roleRef: apiGroup: rbac.authorization.k8s.io kind: ClusterRole name: system:auth-delegator subjects: - - kind: ServiceAccount - name: metrics-server - namespace: kube-system +- kind: ServiceAccount + name: metrics-server + namespace: kube-system --- apiVersion: rbac.authorization.k8s.io/v1 kind: ClusterRole metadata: name: system:metrics-server labels: + k8s-app: metrics-server addonmanager.kubernetes.io/mode: Reconcile rules: - - apiGroups: - - "" - resources: - - pods - - nodes - - nodes/stats - - namespaces - - configmaps - verbs: - - get - - list - - watch +- apiGroups: + - "" + resources: + - nodes/metrics + verbs: + - get +- apiGroups: + - "" + resources: + - pods + - nodes + verbs: + - get + - list + - watch --- apiVersion: rbac.authorization.k8s.io/v1 kind: ClusterRoleBinding metadata: - name: system:metrics-server labels: + k8s-app: metrics-server addonmanager.kubernetes.io/mode: Reconcile + name: system:metrics-server roleRef: apiGroup: rbac.authorization.k8s.io kind: ClusterRole name: system:metrics-server subjects: - - kind: ServiceAccount - name: metrics-server - namespace: kube-system +- kind: ServiceAccount + name: metrics-server + namespace: kube-system diff --git a/deploy/addons/metrics-server/metrics-server-service.yaml.tmpl b/deploy/addons/metrics-server/metrics-server-service.yaml.tmpl index 84c4a570db..6de750a8c0 100644 --- a/deploy/addons/metrics-server/metrics-server-service.yaml.tmpl +++ b/deploy/addons/metrics-server/metrics-server-service.yaml.tmpl @@ -4,6 +4,7 @@ metadata: name: metrics-server namespace: kube-system labels: + k8s-app: metrics-server kubernetes.io/name: "Metrics-server" kubernetes.io/minikube-addons: metrics-server kubernetes.io/minikube-addons-endpoint: metrics-server diff --git a/deploy/iso/minikube-iso/package/Config.in b/deploy/iso/minikube-iso/package/Config.in index 549129c0e2..7fc3d3aad6 100644 --- a/deploy/iso/minikube-iso/package/Config.in +++ b/deploy/iso/minikube-iso/package/Config.in @@ -1,5 +1,6 @@ menu "System tools" source "$BR2_EXTERNAL_MINIKUBE_PATH/package/runc-master/Config.in" + source "$BR2_EXTERNAL_MINIKUBE_PATH/package/crun/Config.in" source "$BR2_EXTERNAL_MINIKUBE_PATH/package/podman/Config.in" source "$BR2_EXTERNAL_MINIKUBE_PATH/package/conmon/Config.in" source "$BR2_EXTERNAL_MINIKUBE_PATH/package/crio-bin/Config.in" diff --git a/deploy/iso/minikube-iso/package/containerd-bin/containerd-bin.hash b/deploy/iso/minikube-iso/package/containerd-bin/containerd-bin.hash index b13fd3cd60..b28b52aabe 100644 --- a/deploy/iso/minikube-iso/package/containerd-bin/containerd-bin.hash +++ b/deploy/iso/minikube-iso/package/containerd-bin/containerd-bin.hash @@ -12,3 +12,5 @@ sha256 ac62c64664bf62fd44df0891c896eecdb6d93def3438271d7892dca75bc069d1 v1.4.4.t sha256 285a3f4c00a87538bd7d0a82a0a8a758458c02b925349f44f3189f480c326038 v1.4.6.tar.gz sha256 3bb9f54be022067847f5930d21ebbfe4e7a67f589d78930aa0ac713492c28bcc v1.4.9.tar.gz sha256 85a531725f15e2d136131119d42af4507a5389e0947015152075c4c93816fb5c v1.4.12.tar.gz +sha256 7507913ba169c103ab67bc51bec31cd977d4348d7bc842da32b7eab5f930a14b v1.5.10.tar.gz +sha256 6a289406c1c0583763e5a9754e31a1eced55cd5f162a7bc2a3a315d5eb05c7a1 v1.5.11.tar.gz diff --git a/deploy/iso/minikube-iso/package/containerd-bin/containerd-bin.mk b/deploy/iso/minikube-iso/package/containerd-bin/containerd-bin.mk index ab743d7df3..54c6a2fd0e 100644 --- a/deploy/iso/minikube-iso/package/containerd-bin/containerd-bin.mk +++ b/deploy/iso/minikube-iso/package/containerd-bin/containerd-bin.mk @@ -3,8 +3,8 @@ # containerd # ################################################################################ -CONTAINERD_BIN_VERSION = v1.4.12 -CONTAINERD_BIN_COMMIT = 7b11cfaabd73bb80907dd23182b9347b4245eb5d +CONTAINERD_BIN_VERSION = v1.5.11 +CONTAINERD_BIN_COMMIT = 3df54a852345ae127d1fa3092b95168e4a88e2f8 CONTAINERD_BIN_SITE = https://github.com/containerd/containerd/archive CONTAINERD_BIN_SOURCE = $(CONTAINERD_BIN_VERSION).tar.gz CONTAINERD_BIN_DEPENDENCIES = host-go libgpgme diff --git a/deploy/iso/minikube-iso/package/crio-bin/Config.in b/deploy/iso/minikube-iso/package/crio-bin/Config.in index 22d2c45e9d..68b666cdc5 100644 --- a/deploy/iso/minikube-iso/package/crio-bin/Config.in +++ b/deploy/iso/minikube-iso/package/crio-bin/Config.in @@ -9,6 +9,7 @@ config BR2_PACKAGE_CRIO_BIN depends on !BR2_STATIC_LIBS # lvm2 depends on !BR2_TOOLCHAIN_USES_MUSL # lvm2 select BR2_PACKAGE_RUNC_MASTER + select BR2_PACKAGE_CRUN select BR2_PACKAGE_CONMON select BR2_PACKAGE_BTRFS_PROGS select BR2_PACKAGE_LIBSECCOMP diff --git a/deploy/iso/minikube-iso/package/crio-bin/crio-bin.hash b/deploy/iso/minikube-iso/package/crio-bin/crio-bin.hash index bd509b0e4e..82c62806a8 100644 --- a/deploy/iso/minikube-iso/package/crio-bin/crio-bin.hash +++ b/deploy/iso/minikube-iso/package/crio-bin/crio-bin.hash @@ -24,3 +24,5 @@ sha256 76fd7543bc92d4364a11060f43a5131893a76c6e6e9d6de3a6bb6292c110b631 v1.20.0. sha256 36d9f4cf4966342e2d4099e44d8156c55c6a10745c67ce4f856aa9f6dcc2d9ba v1.20.2.tar.gz sha256 bc53ea8977e252bd9812974c33ff654ee22076598e901464468c5c105a5ef773 v1.22.0.tar.gz sha256 6e1c0e393cd16af907fabb24e4cc068e27c606c5f1071060d46efdcd29cb5c0d v1.22.1.tar.gz +sha256 34097a0f535aa79cf990aaee5d3ff6226663587b188cbee11089f120e7f869e4 v1.22.2.tar.gz +sha256 52836549cfa27a688659576be9266f4837357a6fa162b1d0a05fa8da62c724b3 v1.22.3.tar.gz diff --git a/deploy/iso/minikube-iso/package/crio-bin/crio-bin.mk b/deploy/iso/minikube-iso/package/crio-bin/crio-bin.mk index 3d87e44ae0..8d6bad04d6 100644 --- a/deploy/iso/minikube-iso/package/crio-bin/crio-bin.mk +++ b/deploy/iso/minikube-iso/package/crio-bin/crio-bin.mk @@ -4,8 +4,8 @@ # ################################################################################ -CRIO_BIN_VERSION = v1.22.1 -CRIO_BIN_COMMIT = 63ca93845d5fe05cdca826367afcb601ece8d7ad +CRIO_BIN_VERSION = v1.22.3 +CRIO_BIN_COMMIT = d93b2dfb8d0f2ad0f8b9061d941e3b216baa5814 CRIO_BIN_SITE = https://github.com/cri-o/cri-o/archive CRIO_BIN_SOURCE = $(CRIO_BIN_VERSION).tar.gz CRIO_BIN_DEPENDENCIES = host-go libgpgme diff --git a/deploy/iso/minikube-iso/package/crun/Config.in b/deploy/iso/minikube-iso/package/crun/Config.in new file mode 100644 index 0000000000..63b6085da5 --- /dev/null +++ b/deploy/iso/minikube-iso/package/crun/Config.in @@ -0,0 +1,8 @@ +config BR2_PACKAGE_CRUN + bool "crun" + select BR2_PACKAGE_YAJL + help + A fast and low-memory footprint OCI Container Runtime + fully written in C. + + https://github.com/containers/crun diff --git a/deploy/iso/minikube-iso/package/crun/crun.hash b/deploy/iso/minikube-iso/package/crun/crun.hash new file mode 100644 index 0000000000..8c5787dba9 --- /dev/null +++ b/deploy/iso/minikube-iso/package/crun/crun.hash @@ -0,0 +1,8 @@ +# Locally computed +sha256 8065b73ae37ccfb960915fa10051e2bf27850d1c2c69ffeb9eec17c6f198d1c9 crun-0.19.tar.gz +sha256 7b190ff934355e69636e24c12864326a6ebccdbb12af1f14bead217118eb19cb crun-0.19.1.tar.gz +sha256 93423c730ac8deb8dacf805fb15dc5c3ac12e47f8a3eb36dd42166ccfd023d00 crun-0.20.tar.gz +sha256 84a31b25169d92b59a2611fe256a2cc48b05edd9aee8eab4e3dabb60d88f5a23 crun-0.20.1.tar.gz +sha256 e1745172bf603c6832e1a77ee2b7ac9ad4644cd0f4349704df84b66385bbbe61 crun-1.0.tar.gz +sha256 5f2d98a13bdd7ab3c83620abc7dc29cfaf7b8f7487b5b3722453bc9619d3ea0b crun-1.1.tar.gz +sha256 1032a69878c18ddeeb97cd26251c2819afb76e0d4a50c047139829b00d147978 crun-1.2.tar.gz diff --git a/deploy/iso/minikube-iso/package/crun/crun.mk b/deploy/iso/minikube-iso/package/crun/crun.mk new file mode 100644 index 0000000000..2f98c8a1bd --- /dev/null +++ b/deploy/iso/minikube-iso/package/crun/crun.mk @@ -0,0 +1,38 @@ +################################################################################ +# +# crun +# +################################################################################ + +CRUN_VERSION = 1.2 +CRUN_COMMIT = 4f6c8e0583c679bfee6a899c05ac6b916022561b +# need the pre-generated release tarball with the git submodules and configure +CRUN_SITE = https://github.com/containers/crun/releases/download/$(CRUN_VERSION) +CRUN_LICENSE = GPL-2.0 +CRUN_LICENSE_FILES = COPYING + +CRUN_DEPENDENCIES += host-python3 + +CRUN_MAKE_OPTS = crun + +ifeq ($(BR2_PACKAGE_LIBCAP),y) +CRUN_DEPENDENCIES += libcap +else +CRUN_CONF_OPTS += --disable-caps +endif + +ifeq ($(BR2_PACKAGE_LIBSECCOMP),y) +CRUN_CONF_OPTS += --enable-seccomp +CRUN_DEPENDENCIES += libseccomp host-pkgconf +else +CRUN_CONF_OPTS += --disable-seccomp +endif + +ifeq ($(BR2_PACKAGE_SYSTEMD),y) +CRUN_CONF_OPTS += --enable-systemd +CRUN_DEPENDENCIES += systemd host-pkgconf +else +CRUN_CONF_OPTS += --disable-systemd +endif + +$(eval $(autotools-package)) 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 62e60271d7..e6c61f195a 100644 --- a/deploy/iso/minikube-iso/package/docker-bin/docker-bin.hash +++ b/deploy/iso/minikube-iso/package/docker-bin/docker-bin.hash @@ -33,3 +33,5 @@ sha256 e3b6c3b11518281a51fb0eee73138482b83041e908f01adf8abd3a24b34ea21e docker- sha256 34ad50146fce29b28e5115a1e8510dd5232459c9a4a9f28f65909f92cca314d9 docker-20.10.7.tgz sha256 7ea11ecb100fdc085dbfd9ab1ff380e7f99733c890ed815510a5952e5d6dd7e0 docker-20.10.8.tgz sha256 ee9b5be14e54bf92f48c82c2e6a83fbdd1c5329e8f247525a9ed2fe90d9f89a5 docker-20.10.12.tgz +sha256 39edf7c8d773939ff5e4d318ae565691a9c7e754ed768e172757e58898fb7079 docker-20.10.13.tgz +sha256 7ca4aeeed86619909ae584ce3405da3766d495f98904ffbd9d859add26b83af5 docker-20.10.14.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 dae096c148..ae2cb45a6b 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.12 +DOCKER_BIN_VERSION = 20.10.14 DOCKER_BIN_SITE = https://download.docker.com/linux/static/stable/x86_64 DOCKER_BIN_SOURCE = docker-$(DOCKER_BIN_VERSION).tgz diff --git a/deploy/iso/minikube-iso/package/podman/Config.in b/deploy/iso/minikube-iso/package/podman/Config.in index d73162af7f..fbd71c5e13 100644 --- a/deploy/iso/minikube-iso/package/podman/Config.in +++ b/deploy/iso/minikube-iso/package/podman/Config.in @@ -6,6 +6,7 @@ config BR2_PACKAGE_PODMAN depends on BR2_PACKAGE_HOST_GO_TARGET_CGO_LINKING_SUPPORTS depends on BR2_TOOLCHAIN_HAS_THREADS select BR2_PACKAGE_RUNC_MASTER + select BR2_PACKAGE_CRUN select BR2_PACKAGE_CONMON select BR2_PACKAGE_LIBSECCOMP select BR2_PACKAGE_LIBGPGME diff --git a/deploy/iso/minikube-iso/package/podman/podman.hash b/deploy/iso/minikube-iso/package/podman/podman.hash index 4f5158b977..27cdae3dfc 100644 --- a/deploy/iso/minikube-iso/package/podman/podman.hash +++ b/deploy/iso/minikube-iso/package/podman/podman.hash @@ -2,3 +2,5 @@ sha256 a16846fe076aaf2c9ea2e854c3baba9fb838d916be7fb4b5be332e6c92d907d4 v1.9.3.t sha256 5ebaa6e0dbd7fd1863f70d2bc71dc8a94e195c3339c17e3cac4560c9ec5747f8 v2.1.1.tar.gz sha256 ec5473e51fa28f29af323473fc484f742dc7df23d06d8ba9f217f13382893a71 v2.2.0.tar.gz sha256 3212bad60d945c1169b27da03959f36d92d1d8964645c701a5a82a89118e96d1 v2.2.1.tar.gz +sha256 5a0d42e03d15e32c5c54a147da5ef1b8928ec00982ac9e3f1edc82c5e614b6d2 v3.1.2.tar.gz +sha256 b0c4f9a11eb500b1d440d5e51a6c0c632aa4ac458e2dc0362f50f999eb7fbf31 v3.4.2.tar.gz diff --git a/deploy/iso/minikube-iso/package/podman/podman.mk b/deploy/iso/minikube-iso/package/podman/podman.mk index a2170ba395..5361066577 100644 --- a/deploy/iso/minikube-iso/package/podman/podman.mk +++ b/deploy/iso/minikube-iso/package/podman/podman.mk @@ -1,5 +1,5 @@ -PODMAN_VERSION = v2.2.1 -PODMAN_COMMIT = a0d478edea7f775b7ce32f8eb1a01e75374486cb +PODMAN_VERSION = v3.4.2 +PODMAN_COMMIT = 2ad1fd3555de12de34e20898cc2ef901f08fe5ed PODMAN_SITE = https://github.com/containers/podman/archive PODMAN_SOURCE = $(PODMAN_VERSION).tar.gz PODMAN_LICENSE = Apache-2.0 diff --git a/deploy/iso/minikube-iso/package/runc-master/runc-master.hash b/deploy/iso/minikube-iso/package/runc-master/runc-master.hash index c04a16b990..4d904c3782 100644 --- a/deploy/iso/minikube-iso/package/runc-master/runc-master.hash +++ b/deploy/iso/minikube-iso/package/runc-master/runc-master.hash @@ -12,3 +12,4 @@ sha256 144973344b73627b5f69aa88b9e6655d692447ec317a0d5fa9777496a8ac186e 12644e61 sha256 821ff8629329b4b7e4ccf24b5bf369c9739887736be30ba06a0d8053eb0e0b23 b9ee9c6314599f1b4a7f497e1f1f856fe433d3b7.tar.gz sha256 50cc479cabf6e7edb9070a7c28b3460b0acc2a01650fc5934f5037cb96b9e2cf 4144b63817ebcc5b358fc2c8ef95f7cddd709aa7.tar.gz sha256 1f47e3ff66cdcca1f890b15e74e884c4ff81d16d1044cc9900a1eb10cfb3d8e7 52b36a2dd837e8462de8e01458bf02cf9eea47dd.tar.gz +sha256 91525356b71fbf8e05deddc955d3f40e0d4aedcb15d26bdd2850a9986852ae5b f46b6ba2c9314cfc8caae24a32ec5fe9ef1059fe.tar.gz diff --git a/deploy/iso/minikube-iso/package/runc-master/runc-master.mk b/deploy/iso/minikube-iso/package/runc-master/runc-master.mk index 278c8b0d61..9f52e8c8e9 100644 --- a/deploy/iso/minikube-iso/package/runc-master/runc-master.mk +++ b/deploy/iso/minikube-iso/package/runc-master/runc-master.mk @@ -4,8 +4,8 @@ # ################################################################################ -# As of 2021-08-20, v1.0.2 -RUNC_MASTER_VERSION = 52b36a2dd837e8462de8e01458bf02cf9eea47dd +# As of 2021-12-03, v1.0.3 +RUNC_MASTER_VERSION = f46b6ba2c9314cfc8caae24a32ec5fe9ef1059fe RUNC_MASTER_SITE = https://github.com/opencontainers/runc/archive RUNC_MASTER_SOURCE = $(RUNC_MASTER_VERSION).tar.gz RUNC_MASTER_LICENSE = Apache-2.0 diff --git a/deploy/kicbase/Dockerfile b/deploy/kicbase/Dockerfile index 4de80bc800..7983889b8b 100644 --- a/deploy/kicbase/Dockerfile +++ b/deploy/kicbase/Dockerfile @@ -19,7 +19,7 @@ # multi-tage docker build so we can build auto-pause for arm64 -FROM golang:1.16 +FROM golang:1.17 WORKDIR /src # becaue auto-pause binary depends on minikube's code we need to pass the whole source code as the context ADD . . @@ -33,7 +33,7 @@ RUN git clone -n https://github.com/Mirantis/cri-dockerd && \ # start from ubuntu 20.04, this image is reasonably small as a starting point # for a kubernetes node image, it doesn't contain much we don't need -FROM ubuntu:focal-20210401 +FROM ubuntu:focal-20220316 ARG BUILDKIT_VERSION="v0.9.3" ARG FUSE_OVERLAYFS_VERSION="v1.7.1" @@ -126,9 +126,7 @@ RUN clean-install \ openssh-server \ dnsutils \ # libglib2.0-0 is required for conmon, which is required for podman - libglib2.0-0 \ - # fuse3 is required for fuse-overlayfs - fuse3 + libglib2.0-0 # install docker # use the bionic packages for arm32 @@ -139,19 +137,6 @@ RUN export ARCH=$(dpkg --print-architecture | sed 's/armhf/arm-v7/') && \ apt-key add - < docker.key && \ clean-install docker-ce docker-ce-cli containerd.io -# install fuse-overlayfs (used by rootless; apt-get version is old) -RUN curl -sSL --retry 5 --output /usr/local/bin/fuse-overlayfs https://github.com/containers/fuse-overlayfs/releases/download/${FUSE_OVERLAYFS_VERSION}/fuse-overlayfs-$(uname -m) \ - && chmod +x /usr/local/bin/fuse-overlayfs - -# install containerd-fuse-overlayfs (used by rootless) -RUN export ARCH=$(dpkg --print-architecture | sed 's/ppc64el/ppc64le/' | sed 's/armhf/arm-v7/') \ - && echo "Installing containerd-fuse-overlayfs..." \ - && export CONTAINERD_FUSE_OVERLAYFS_BASE_URL="https://github.com/containerd/fuse-overlayfs-snapshotter/releases/download/v${CONTAINERD_FUSE_OVERLAYFS_VERSION}" \ - && curl -sSL --retry 5 --output /tmp/containerd-fuse-overlayfs.tgz "${CONTAINERD_FUSE_OVERLAYFS_BASE_URL}/containerd-fuse-overlayfs-${CONTAINERD_FUSE_OVERLAYFS_VERSION}-linux-${ARCH}.tar.gz" \ - && tar -C /usr/local/bin -xzvf /tmp/containerd-fuse-overlayfs.tgz \ - && rm -rf /tmp/containerd-fuse-overlayfs.tgz -COPY deploy/kicbase/containerd-fuse-overlayfs.service /etc/systemd/system/containerd-fuse-overlayfs.service - # install buildkit RUN export ARCH=$(dpkg --print-architecture | sed 's/ppc64el/ppc64le/' | sed 's/armhf/arm-v7/') \ && echo "Installing buildkit ..." \ diff --git a/deploy/kicbase/containerd-fuse-overlayfs.service b/deploy/kicbase/containerd-fuse-overlayfs.service deleted file mode 100644 index a3d12bd567..0000000000 --- a/deploy/kicbase/containerd-fuse-overlayfs.service +++ /dev/null @@ -1,13 +0,0 @@ -# From https://github.com/kubernetes-sigs/kind/blob/0d3780371091b2dc9ff6eea1b6054f14ff5d970a/images/base/files/etc/systemd/system/containerd-fuse-overlayfs.service -[Unit] -Description=containerd fuse-overlayfs snapshotter -PartOf=containerd.service - -[Service] -ExecStart=/usr/local/bin/containerd-fuse-overlayfs-grpc /run/containerd-fuse-overlayfs.sock /var/lib/containerd-fuse-overlayfs -Type=notify -Restart=always -RestartSec=1 - -[Install] -WantedBy=multi-user.target diff --git a/deploy/minikube/schema_check.go b/deploy/minikube/schema_check.go index b92c15eb41..ba473e0156 100644 --- a/deploy/minikube/schema_check.go +++ b/deploy/minikube/schema_check.go @@ -19,7 +19,6 @@ package main import ( "encoding/json" "fmt" - "io/ioutil" "log" "os" @@ -40,7 +39,7 @@ func validateSchema(schemaPathString, docPathString string) { log.Fatal(err) } - data, err := ioutil.ReadFile(docPathString) + data, err := os.ReadFile(docPathString) if err != nil { log.Fatal(err) } diff --git a/go.mod b/go.mod index 982e641cac..25292b1d0a 100644 --- a/go.mod +++ b/go.mod @@ -1,13 +1,13 @@ module k8s.io/minikube -go 1.17 +go 1.18 require ( - cloud.google.com/go/storage v1.20.0 + cloud.google.com/go/storage v1.21.0 contrib.go.opencensus.io/exporter/stackdriver v0.13.10 github.com/Delta456/box-cli-maker/v2 v2.2.2 github.com/GoogleCloudPlatform/docker-credential-gcr v0.0.0-20210713212222-faed5e8b8ca2 - github.com/GoogleCloudPlatform/opentelemetry-operations-go/exporter/trace v1.0.0 + github.com/GoogleCloudPlatform/opentelemetry-operations-go/exporter/trace v1.3.0 github.com/Microsoft/hcsshim v0.8.17 // indirect github.com/Parallels/docker-machine-parallels/v2 v2.0.1 github.com/VividCortex/godaemon v1.0.0 @@ -16,10 +16,8 @@ require ( github.com/c4milo/gotoolkit v0.0.0-20190525173301-67483a18c17a // indirect github.com/cenkalti/backoff/v4 v4.1.2 github.com/cheggaaa/pb/v3 v3.0.8 - github.com/cloudevents/sdk-go/v2 v2.8.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/docker/docker v20.10.12+incompatible + github.com/cloudevents/sdk-go/v2 v2.9.0 + github.com/docker/docker v20.10.14+incompatible github.com/docker/go-units v0.4.0 github.com/docker/machine v0.16.2 github.com/elazarl/goproxy v0.0.0-20210110162100-a92cc753f88e @@ -64,41 +62,44 @@ 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/v3 v3.22.1 - github.com/spf13/cobra v1.3.0 + github.com/shirou/gopsutil/v3 v3.22.3 + github.com/spf13/cobra v1.4.0 github.com/spf13/pflag v1.0.5 github.com/spf13/viper v1.10.1 github.com/zchee/go-vmnet v0.0.0-20161021174912-97ebf9174097 go.opencensus.io v0.23.0 - go.opentelemetry.io/otel v1.4.1 - go.opentelemetry.io/otel/sdk v1.4.0 - go.opentelemetry.io/otel/trace v1.4.1 + go.opentelemetry.io/otel v1.6.1 + go.opentelemetry.io/otel/sdk v1.6.1 + go.opentelemetry.io/otel/trace v1.6.1 golang.org/x/build v0.0.0-20190927031335-2835ba2e683f golang.org/x/crypto v0.0.0-20210817164053-32db794688a5 golang.org/x/exp v0.0.0-20210220032938-85be41e4509f golang.org/x/mod v0.5.1 - golang.org/x/oauth2 v0.0.0-20220223155221-ee480838109b + golang.org/x/oauth2 v0.0.0-20220309155454-6242fa91716a golang.org/x/sync v0.0.0-20210220032951-036812b2e83c - golang.org/x/sys v0.0.0-20220227234510-4e6760a101f9 + golang.org/x/sys v0.0.0-20220328115105-d36c6a25d886 golang.org/x/term v0.0.0-20210927222741-03fcf44c2211 golang.org/x/text v0.3.7 - gonum.org/v1/plot v0.10.0 - google.golang.org/api v0.71.0 + gonum.org/v1/plot v0.11.0 + google.golang.org/api v0.74.0 gopkg.in/mgo.v2 v2.0.0-20190816093944-a6b53ec6cb22 // indirect gopkg.in/yaml.v2 v2.4.0 - k8s.io/api v0.23.4 - k8s.io/apimachinery v0.23.4 - k8s.io/client-go v0.23.4 + k8s.io/api v0.23.5 + k8s.io/apimachinery v0.23.5 + k8s.io/client-go v0.23.5 k8s.io/cluster-bootstrap v0.0.0 - k8s.io/component-base v0.23.4 - k8s.io/klog/v2 v2.40.1 - k8s.io/kubectl v0.22.2 + k8s.io/component-base v0.23.5 + k8s.io/klog/v2 v2.60.1 + k8s.io/kubectl v0.23.5 k8s.io/utils v0.0.0-20211116205334-6203023598ed - libvirt.org/go/libvirt v1.7010.0 + libvirt.org/go/libvirt v1.8002.0 sigs.k8s.io/sig-storage-lib-external-provisioner/v6 v6.3.0 ) -require github.com/santhosh-tekuri/jsonschema/v5 v5.0.0 +require ( + github.com/Xuanwo/go-locale v1.1.0 + github.com/santhosh-tekuri/jsonschema/v5 v5.0.0 +) require ( cloud.google.com/go v0.100.2 // indirect @@ -106,11 +107,12 @@ require ( cloud.google.com/go/iam v0.1.1 // indirect cloud.google.com/go/monitoring v1.1.0 // indirect cloud.google.com/go/trace v1.0.0 // indirect + git.sr.ht/~sbinet/gg v0.3.1 // indirect github.com/Azure/go-ansiterm v0.0.0-20210617225240-d185dfc1b5a1 // indirect github.com/MakeNowJust/heredoc v0.0.0-20170808103936-bb23615498cd // indirect github.com/Microsoft/go-winio v0.5.0 // indirect github.com/VividCortex/ewma v1.1.1 // indirect - github.com/ajstarks/svgo v0.0.0-20210923152817-c3b6e2f0c527 // indirect + github.com/ajstarks/svgo v0.0.0-20211024235047-1546f124cd8b // indirect github.com/aws/aws-sdk-go v1.38.49 // indirect github.com/beorn7/perks v1.0.1 // indirect github.com/bgentry/go-netrc v0.0.0-20140422174119-9fd32a8b3d3d // indirect @@ -127,14 +129,13 @@ require ( github.com/docker/go-connections v0.4.0 // indirect github.com/evanphx/json-patch v4.12.0+incompatible // indirect github.com/fatih/color v1.13.0 // indirect - github.com/fogleman/gg v1.3.0 // indirect github.com/fsnotify/fsnotify v1.5.1 // indirect github.com/go-fonts/liberation v0.2.0 // indirect github.com/go-latex/latex v0.0.0-20210823091927-c0d11ff05a81 // indirect - github.com/go-logr/logr v1.2.2 // indirect + github.com/go-logr/logr v1.2.3 // indirect github.com/go-logr/stdr v1.2.2 // indirect github.com/go-ole/go-ole v1.2.6 // indirect - github.com/go-pdf/fpdf v0.5.0 // indirect + github.com/go-pdf/fpdf v0.6.0 // indirect github.com/gogo/protobuf v1.3.2 // indirect github.com/golang/freetype v0.0.0-20170609003504-e2365dfdc4a0 // indirect github.com/golang/groupcache v0.0.0-20210331224755-41bb18bfe9da // indirect @@ -142,7 +143,7 @@ require ( github.com/golang/snappy v0.0.3 // indirect github.com/google/go-querystring v1.0.0 // indirect github.com/google/gofuzz v1.1.0 // indirect - github.com/googleapis/gax-go/v2 v2.1.1 // indirect + github.com/googleapis/gax-go/v2 v2.2.0 // indirect github.com/googleapis/gnostic v0.5.5 // indirect github.com/gookit/color v1.4.2 // indirect github.com/hashicorp/go-cleanhttp v0.5.2 // indirect @@ -184,21 +185,21 @@ require ( github.com/spf13/cast v1.4.1 // indirect github.com/spf13/jwalterweatherman v1.1.0 // indirect github.com/subosito/gotenv v1.2.0 // indirect - github.com/tklauser/go-sysconf v0.3.9 // indirect - github.com/tklauser/numcpus v0.3.0 // indirect + github.com/tklauser/go-sysconf v0.3.10 // indirect + github.com/tklauser/numcpus v0.4.0 // indirect github.com/ulikunitz/xz v0.5.8 // indirect github.com/xo/terminfo v0.0.0-20210125001918-ca9a967f8778 // indirect github.com/yusufpapurcu/wmi v1.2.2 // indirect go.uber.org/atomic v1.7.0 // indirect go.uber.org/multierr v1.6.0 // indirect go.uber.org/zap v1.19.0 // indirect - golang.org/x/image v0.0.0-20210628002857-a66eb6448b8d // indirect - golang.org/x/net v0.0.0-20220225172249-27dd8689420f // indirect + golang.org/x/image v0.0.0-20220302094943-723b81ca9867 // indirect + golang.org/x/net v0.0.0-20220325170049-de3da57026de // indirect golang.org/x/time v0.0.0-20210723032227-1f47c861a9ac // indirect golang.org/x/xerrors v0.0.0-20200804184101-5ec99f83aff1 // indirect google.golang.org/appengine v1.6.7 // indirect - google.golang.org/genproto v0.0.0-20220304144024-325a89244dc8 // indirect - google.golang.org/grpc v1.44.0 // indirect + google.golang.org/genproto v0.0.0-20220324131243-acbaeb5b85eb // indirect + google.golang.org/grpc v1.45.0 // indirect google.golang.org/protobuf v1.27.1 // indirect gopkg.in/inf.v0 v0.9.1 // indirect gopkg.in/ini.v1 v1.66.2 // indirect diff --git a/go.sum b/go.sum index 08ef077cae..136aba648b 100644 --- a/go.sum +++ b/go.sum @@ -23,12 +23,10 @@ cloud.google.com/go v0.81.0/go.mod h1:mk/AM35KwGk/Nm2YSeZbxXdrNK3KZOYHmLkOqC2V6E cloud.google.com/go v0.83.0/go.mod h1:Z7MJUsANfY0pYPdw0lbnivPx4/vhy/e2FEkSkF7vAVY= cloud.google.com/go v0.84.0/go.mod h1:RazrYuxIK6Kb7YrzzhPoLmCVzl7Sup4NrbKPg8KHSUM= cloud.google.com/go v0.87.0/go.mod h1:TpDYlFy7vuLzZMMZ+B6iRiELaY7z/gJPaqbMx6mlWcY= -cloud.google.com/go v0.88.0/go.mod h1:dnKwfYbP9hQhefiUvpbcAyoGSHUrOxR20JVElLiUvEY= cloud.google.com/go v0.90.0/go.mod h1:kRX0mNRHe0e2rC6oNakvwQqzyDmg57xJ+SZU1eT2aDQ= cloud.google.com/go v0.93.3/go.mod h1:8utlLll2EF5XMAV15woO4lSbWQlk8rer9aLOfLh7+YI= cloud.google.com/go v0.94.1/go.mod h1:qAlAugsXlC+JWO+Bke5vCtc9ONxjQT3drlTTnAplMW4= cloud.google.com/go v0.97.0/go.mod h1:GF7l59pYBVlXQIBLx3a761cZ41F9bBH3JUlihCt2Udc= -cloud.google.com/go v0.98.0/go.mod h1:ua6Ush4NALrHk5QXDWnjvZHN93OuF0HfuEPq9I1X0cM= cloud.google.com/go v0.99.0/go.mod h1:w0Xx2nLzqWJPuozYQX+hFfCSI8WioryfRDzkoI/Y2ZA= cloud.google.com/go v0.100.1/go.mod h1:fs4QogzfH5n2pBXBP9vRiU+eCny7lD2vmFZy79Iuw1U= cloud.google.com/go v0.100.2 h1:t9Iw5QH5v4XtlEQaCtUY7x6sCABps8sW0acw7e2WQ6Y= @@ -40,13 +38,13 @@ cloud.google.com/go/bigquery v1.5.0/go.mod h1:snEHRnqQbz117VIFhE8bmtwIDY80NLUZUM 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/compute v0.1.0/go.mod h1:GAesmwr110a34z04OlxYkATPBEfVhkymfTBXtfbBFow= +cloud.google.com/go/compute v1.2.0/go.mod h1:xlogom/6gr8RJGBe7nT2eGsQYAFUbbv8dbC29qE3Xmw= cloud.google.com/go/compute v1.3.0/go.mod h1:cCZiE1NHEtai4wiufUhW8I8S1JKkAnhnQJWM7YD99wM= cloud.google.com/go/compute v1.5.0 h1:b1zWmYuuHz7gO9kDcM/EpHGr06UgsYNRpNJzI2kFiLM= cloud.google.com/go/compute v1.5.0/go.mod h1:9SMHyhJlzhlkJqrPAc839t2BZFTSk6Jdj6mkzQJeu0M= cloud.google.com/go/datastore v1.0.0/go.mod h1:LXYbyblFSglQ5pkeyhO+Qmw7ukd3C+pD7TKLgZqpHYE= 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/firestore v1.6.1/go.mod h1:asNXNOzBdyVQmEU+ggO8UPodTkEVFW5Qx+rwHnAz+EY= cloud.google.com/go/iam v0.1.1 h1:4CapQyNFjiksks1/x7jsvsygFPhihslYk5GptIrlX68= cloud.google.com/go/iam v0.1.1/go.mod h1:CKqrcnI/suGpybEHxZ7BMehL0oA4LpdyJdUlTl9jVMw= cloud.google.com/go/monitoring v1.1.0 h1:ZnyNdf/XRcynMmKzRSNTOdOyYPs6G7do1l2D2hIvIKo= @@ -60,15 +58,16 @@ cloud.google.com/go/storage v1.5.0/go.mod h1:tpKbwo567HUNpVclU5sGELwQWBDZ8gh0Zeo cloud.google.com/go/storage v1.6.0/go.mod h1:N7U0C8pVQ/+NIKOBQyamJIeKQKkZ+mxpohlUTyfDhBk= cloud.google.com/go/storage v1.8.0/go.mod h1:Wv1Oy7z6Yz3DshWRJFhqM/UCfaWIRTdp0RXyy7KQOVs= cloud.google.com/go/storage v1.10.0/go.mod h1:FLPqc6j+Ki4BU591ie1oL6qBQGu2Bl/tZ9ullr3+Kg0= -cloud.google.com/go/storage v1.20.0 h1:kv3rQ3clEQdxqokkCCgQo+bxPqcuXiROjxvnKb8Oqdk= -cloud.google.com/go/storage v1.20.0/go.mod h1:TiC1o6FxNCG8y5gB7rqCsFZCIYPMPZCO81ppOoEPLGI= +cloud.google.com/go/storage v1.21.0 h1:HwnT2u2D309SFDHQII6m18HlrCi3jAXhUMTLOWXYH14= +cloud.google.com/go/storage v1.21.0/go.mod h1:XmRlxkgPjlBONznT2dDUU/5XlpU2OjMnKuqnZI01LAA= cloud.google.com/go/trace v1.0.0 h1:laKx2y7IWMjguCe5zZx6n7qLtREk4kyE69SXVC0VSN8= cloud.google.com/go/trace v1.0.0/go.mod h1:4iErSByzxkyHWzzlAj63/Gmjz0NH1ASqhJguHpGcr6A= contrib.go.opencensus.io/exporter/stackdriver v0.13.10 h1:a9+GZPUe+ONKUwULjlEOucMMG0qfSCCenlji0Nhqbys= contrib.go.opencensus.io/exporter/stackdriver v0.13.10/go.mod h1:I5htMbyta491eUxufwwZPQdcKvvgzMB4O9ni41YnIM8= dmitri.shuralyov.com/gpu/mtl v0.0.0-20190408044501-666a987793e9/go.mod h1:H6x//7gZCb22OMCxBHrMx7a5I7Hp++hsVxbQ4BYO7hU= dmitri.shuralyov.com/gpu/mtl v0.0.0-20201218220906-28db891af037/go.mod h1:H6x//7gZCb22OMCxBHrMx7a5I7Hp++hsVxbQ4BYO7hU= -gioui.org v0.0.0-20210308172011-57750fc8a0a6/go.mod h1:RSH6KIUZ0p2xy5zHDxgAM4zumjgTw83q2ge/PI+yyw8= +git.sr.ht/~sbinet/gg v0.3.1 h1:LNhjNn8DerC8f9DHLz6lS0YYul/b602DUxDgGkd/Aik= +git.sr.ht/~sbinet/gg v0.3.1/go.mod h1:KGYtlADtqsqANL9ueOFkWymvzUvLMQllU5Ixo+8v3pc= github.com/Azure/azure-sdk-for-go v16.2.1+incompatible/go.mod h1:9XXNKU+eRnpl9moKnB4QOLf1HestfXbmab5FXxiDBjc= github.com/Azure/go-ansiterm v0.0.0-20170929234023-d6e3b3328b78/go.mod h1:LmzpDX56iTiv29bbRTIsUNlaFfuhWRQBWjQdVyAevI8= github.com/Azure/go-ansiterm v0.0.0-20210608223527-2377c96fe795/go.mod h1:LmzpDX56iTiv29bbRTIsUNlaFfuhWRQBWjQdVyAevI8= @@ -100,13 +99,12 @@ github.com/Azure/go-autorest/tracing v0.5.0/go.mod h1:r/s2XiOKccPW3HrqB+W0TQzfbt github.com/Azure/go-autorest/tracing v0.6.0/go.mod h1:+vhtPC754Xsa23ID7GlGsrdKBpUA79WCAKPPZVC2DeU= github.com/BurntSushi/toml v0.3.1/go.mod h1:xHWCNGjB5oqiDr8zfno3MHue2Ht5sIBksp03qcyfWMU= github.com/BurntSushi/xgb v0.0.0-20160522181843-27f122750802/go.mod h1:IVnqGOEym/WlBOVXweHU+Q+/VP0lqqI8lqeDx9IjBqo= -github.com/DataDog/datadog-go v3.2.0+incompatible/go.mod h1:LButxg5PwREeZtORoXG3tL4fMGNddJ+vMq1mwgfaqoQ= github.com/Delta456/box-cli-maker/v2 v2.2.2 h1:CpSLcPgi5pY4+arzpyuWN2+nU8gHqto2Y+OO7VbELQ0= github.com/Delta456/box-cli-maker/v2 v2.2.2/go.mod h1:idItIMZeyx3bg73XwSgsLeZd+gdpD2IvGbR3FC8a9TU= github.com/GoogleCloudPlatform/docker-credential-gcr v0.0.0-20210713212222-faed5e8b8ca2 h1:rMamBsR6iCT9Y5m2Il6vFGJvY7FAgck4AoA/LobheKU= github.com/GoogleCloudPlatform/docker-credential-gcr v0.0.0-20210713212222-faed5e8b8ca2/go.mod h1:BB1eHdMLYEFuFdBlRMb0N7YGVdM5s6Pt0njxgvfbGGs= -github.com/GoogleCloudPlatform/opentelemetry-operations-go/exporter/trace v1.0.0 h1:38fNtfhHY6bs22b/D6+hDzO6JR0rDzpGPD36dY2uPL4= -github.com/GoogleCloudPlatform/opentelemetry-operations-go/exporter/trace v1.0.0/go.mod h1:jE23wM1jvwSKgdGcoOkj5j9n1VWtncW36pL2bK1JU+0= +github.com/GoogleCloudPlatform/opentelemetry-operations-go/exporter/trace v1.3.0 h1:JLLDOHEcoREA54hzOnjr8KQcZCvX0E8KhosjE0F1jaQ= +github.com/GoogleCloudPlatform/opentelemetry-operations-go/exporter/trace v1.3.0/go.mod h1:Pe8G2QFgCaohbU/zHRBjn0YaFh9z8/HtuEDh/Lyo04E= github.com/MakeNowJust/heredoc v0.0.0-20170808103936-bb23615498cd h1:sjQovDkwrZp8u+gxLtPgKGjk5hCxuy2hrRejBTA9xFU= github.com/MakeNowJust/heredoc v0.0.0-20170808103936-bb23615498cd/go.mod h1:64YHyfSL2R96J44Nlwm39UHepQbyR5q10x7iYa1ks2E= github.com/Microsoft/go-winio v0.4.11/go.mod h1:VhR8bwka0BXejwEJY73c50VrPtXAaKcyvVC4A4RozmA= @@ -143,9 +141,12 @@ github.com/VividCortex/ewma v1.1.1 h1:MnEK4VOv6n0RSY4vtRe3h11qjxL3+t0B8yOL8iMXdc github.com/VividCortex/ewma v1.1.1/go.mod h1:2Tkkvm3sRDVXaiyucHiACn4cqf7DpdyLvmxzcbUokwA= github.com/VividCortex/godaemon v1.0.0 h1:aHYrScWvgaSOdAoYCdObWXLm+e1rldP9Pwb1ZvuZkQw= github.com/VividCortex/godaemon v1.0.0/go.mod h1:hBWe/72KbGt/lb95E+Sh9ersdYbB57Dt6CG66S1YPno= -github.com/ajstarks/svgo v0.0.0-20180226025133-644b8db467af/go.mod h1:K08gAheRH3/J6wwsYMMT4xOr94bZjxIelGM0+d/wbFw= -github.com/ajstarks/svgo v0.0.0-20210923152817-c3b6e2f0c527 h1:NImof/JkF93OVWZY+PINgl6fPtQyF6f+hNUtZ0QZA1c= -github.com/ajstarks/svgo v0.0.0-20210923152817-c3b6e2f0c527/go.mod h1:K08gAheRH3/J6wwsYMMT4xOr94bZjxIelGM0+d/wbFw= +github.com/Xuanwo/go-locale v1.1.0 h1:51gUxhxl66oXAjI9uPGb2O0qwPECpriKQb2hl35mQkg= +github.com/Xuanwo/go-locale v1.1.0/go.mod h1:UKrHoZB3FPIk9wIG2/tVSobnHgNnceGSH3Y8DY5cASs= +github.com/ajstarks/deck v0.0.0-20200831202436-30c9fc6549a9/go.mod h1:JynElWSGnm/4RlzPXRlREEwqTHAN3T56Bv2ITsFT3gY= +github.com/ajstarks/deck/generate v0.0.0-20210309230005-c3f852c02e19/go.mod h1:T13YZdzov6OU0A1+RfKZiZN9ca6VeKdBdyDV+BY97Tk= +github.com/ajstarks/svgo v0.0.0-20211024235047-1546f124cd8b h1:slYM766cy2nI3BwyRiyQj/Ud48djTMtMebDqepE95rw= +github.com/ajstarks/svgo v0.0.0-20211024235047-1546f124cd8b/go.mod h1:1KcenG0jGWcpt8ov532z81sp/kMMUG485J2InIOyADM= 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/go.mod h1:ybxpYRFXyAe+OPACYpWeL0wqObRcbAqCMya13uyzqw0= @@ -159,9 +160,7 @@ github.com/antihax/optional v1.0.0/go.mod h1:uupD/76wgC+ih3iEmQUL+0Ugr19nfwCT1kd github.com/armon/circbuf v0.0.0-20150827004946-bbbad097214e/go.mod h1:3U/XgcO3hCbHZ8TKRvWD2dDTCfh9M9ya+I9JpbB7O8o= github.com/armon/consul-api v0.0.0-20180202201655-eb2c6b5be1b6/go.mod h1:grANhF5doyWs3UAsr3K4I6qtAmlQcZDesFNEHPZAzj8= github.com/armon/go-metrics v0.0.0-20180917152333-f0300d1749da/go.mod h1:Q73ZrmVTwzkszR9V5SSuryQ31EELlFMUz1kKyl939pY= -github.com/armon/go-metrics v0.3.10/go.mod h1:4O98XIr/9W0sxpJ8UaYkvjk10Iff7SnFrb4QAOwNTFc= github.com/armon/go-radix v0.0.0-20180808171621-7fddfc383310/go.mod h1:ufUuZ+zHj4x4TnLV4JWEpy2hxWSpsRywHrMgIH9cCH8= -github.com/armon/go-radix v1.0.0/go.mod h1:ufUuZ+zHj4x4TnLV4JWEpy2hxWSpsRywHrMgIH9cCH8= github.com/asaskevich/govalidator v0.0.0-20190424111038-f61b66f89f4a/go.mod h1:lB+ZfQJz7igIIfQNfa7Ml4HSf2uFQQRzpGGRXenZAgY= github.com/aws/aws-sdk-go v1.15.11/go.mod h1:mFuSZ37Z9YOHbQEwBWztmVzqXrEkub65tZoCYDt7FT0= github.com/aws/aws-sdk-go v1.15.78/go.mod h1:E3/ieXAlvM0XWO57iftYVDLLvQ824smPP3ATZkfNZeM= @@ -181,10 +180,8 @@ github.com/bgentry/go-netrc v0.0.0-20140422174119-9fd32a8b3d3d/go.mod h1:6QX/PXZ github.com/bgentry/speakeasy v0.1.0/go.mod h1:+zsyZBPWlz7T6j88CTgSN5bM796AkVf0kBD4zp0CCIs= github.com/bitly/go-simplejson v0.5.0/go.mod h1:cXHtHw4XUPsvGaxgjIAn8PhEWG9NfngEKAMDJEczWVA= github.com/bits-and-blooms/bitset v1.2.0/go.mod h1:gIdJ4wp64HaoK2YrL1Q5/N7Y16edYb8uY+O0FJTyyDA= -github.com/bketelsen/crypt v0.0.3-0.20200106085610-5cbc8cc4026c/go.mod h1:MKsuJmJgSg28kpZDP6UIiPt0e0Oz0kqKNGyRaWEPv84= github.com/bketelsen/crypt v0.0.4/go.mod h1:aI6NrJ0pMGgvZKL1iVgXLnfIFJtfV+bKCoqOes/6LfM= github.com/blang/semver v3.1.0+incompatible/go.mod h1:kRBLl5iJ+tD4TcOOxsy/0fnwebNt5EWlYSAyrTnjyyk= -github.com/blang/semver v3.5.1+incompatible h1:cQNTCjp13qL8KC3Nbxr/y2Bqb63oX6wdnnjpJbkM4JQ= github.com/blang/semver v3.5.1+incompatible/go.mod h1:kRBLl5iJ+tD4TcOOxsy/0fnwebNt5EWlYSAyrTnjyyk= github.com/blang/semver/v4 v4.0.0 h1:1PFHFE6yCCTv8C1TeyNNarDzntLi7wMI5i/pzqYIsAM= github.com/blang/semver/v4 v4.0.0/go.mod h1:IbckMUScFkM3pff0VJDNKRiT6TG/YpiHIM2yvyW5YoQ= @@ -204,7 +201,6 @@ github.com/cenkalti/backoff/v4 v4.1.2/go.mod h1:scbssz8iZGpm3xbr14ovlUdkxfGXNInq github.com/census-instrumentation/opencensus-proto v0.2.1/go.mod h1:f6KPmirojxKA12rnyqOA5BBL4O983OfeGPqjHWSTneU= github.com/census-instrumentation/opencensus-proto v0.3.0 h1:t/LhUZLVitR1Ow2YOnduCsavhwFUklBMoGVYUCqmCqk= github.com/census-instrumentation/opencensus-proto v0.3.0/go.mod h1:f6KPmirojxKA12rnyqOA5BBL4O983OfeGPqjHWSTneU= -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/go.mod h1:VGX0DQ3Q6kWi7AoAeZDth3/j3BFtOZR5XLFGgcrjCOs= github.com/cespare/xxhash/v2 v2.1.2 h1:YRXhKfTDauu4ajMg1TPgFO5jnlC2HCbmLXMcTG5cbYE= @@ -212,7 +208,6 @@ github.com/cespare/xxhash/v2 v2.1.2/go.mod h1:VGX0DQ3Q6kWi7AoAeZDth3/j3BFtOZR5XL github.com/chai2010/gettext-go v0.0.0-20160711120539-c6fed771bfd5/go.mod h1:/iP1qXHoty45bqomnu2LM+VVyAEdWN+vtSHGlQgyxbw= github.com/checkpoint-restore/go-criu/v4 v4.1.0/go.mod h1:xUQBLp4RLc5zJtWY++yjOoMoB5lihDt7fai+75m+rGw= github.com/checkpoint-restore/go-criu/v5 v5.0.0/go.mod h1:cfwC0EG7HMUenopBsUf9d89JlCLQIfgVcNsNN0t6T2M= -github.com/cheggaaa/pb v1.0.27 h1:wIkZHkNfC7R6GI5w7l/PdAdzXzlrbcI3p8OAlnkTsnc= github.com/cheggaaa/pb v1.0.27/go.mod h1:pQciLPpbU0oxA0h+VJYYLxO+XeDQb5pZijXscXHm81s= github.com/cheggaaa/pb/v3 v3.0.8 h1:bC8oemdChbke2FHIIGy9mn4DPJ2caZYQnfbRqwmdCoA= github.com/cheggaaa/pb/v3 v3.0.8/go.mod h1:UICbiLec/XO6Hw6k+BHEtHeQFzzBH4i2/qk/ow1EJTA= @@ -224,15 +219,9 @@ github.com/cilium/ebpf v0.0.0-20200702112145-1c8d4c9ef775/go.mod h1:7cR51M8ViRLI github.com/cilium/ebpf v0.2.0/go.mod h1:To2CFviqOWL/M0gIMsvSMlqe7em/l1ALkX1PyjrX2Qs= github.com/cilium/ebpf v0.4.0/go.mod h1:4tRaxcgiL706VnOzHOdBlY8IEAIdxINsQBcU4xJJXRs= github.com/cilium/ebpf v0.6.2/go.mod h1:4tRaxcgiL706VnOzHOdBlY8IEAIdxINsQBcU4xJJXRs= -github.com/circonus-labs/circonus-gometrics v2.3.1+incompatible/go.mod h1:nmEj6Dob7S7YxXgwXpfOuvO54S+tGdZdw9fuRZt25Ag= -github.com/circonus-labs/circonusllhist v0.1.3/go.mod h1:kMXHVDlOchFAehlya5ePtbp5jckzBHf4XRpQvBOLI+I= github.com/client9/misspell v0.3.4/go.mod h1:qj6jICC3Q7zFZvVWo7KLAzC3yx5G7kyvSDkc90ppPyw= -github.com/cloudevents/sdk-go/v2 v2.8.0 h1:kmRaLbsafZmidZ0rZ6h7WOMqCkRMcVTLV5lxV/HKQ9Y= -github.com/cloudevents/sdk-go/v2 v2.8.0/go.mod h1:GpCBmUj7DIRiDhVvsK5d6WCbgTWs8DxAWTRtAwQmIXs= -github.com/cloudfoundry-attic/jibber_jabber v0.0.0-20151120183258-bcc4c8345a21 h1:Yg2hDs4b13Evkpj42FU2idX2cVXVFqQSheXYKM86Qsk= -github.com/cloudfoundry-attic/jibber_jabber v0.0.0-20151120183258-bcc4c8345a21/go.mod h1:MgJyK38wkzZbiZSKeIeFankxxSA8gayko/nr5x5bgBA= -github.com/cloudfoundry/jibber_jabber v0.0.0-20151120183258-bcc4c8345a21 h1:tuijfIjZyjZaHq9xDUh0tNitwXshJpbLkqMOJv4H3do= -github.com/cloudfoundry/jibber_jabber v0.0.0-20151120183258-bcc4c8345a21/go.mod h1:po7NpZ/QiTKzBKyrsEAxwnTamCoh8uDk/egRpQ7siIc= +github.com/cloudevents/sdk-go/v2 v2.9.0 h1:StQ9q2JuGvclGFoT7kpTdQm+qjW0LQzg51CgUF4ncpY= +github.com/cloudevents/sdk-go/v2 v2.9.0/go.mod h1:GpCBmUj7DIRiDhVvsK5d6WCbgTWs8DxAWTRtAwQmIXs= github.com/cncf/udpa/go v0.0.0-20191209042840-269d4d468f6f/go.mod h1:M8M6+tZqaGXZJjfX53e64911xZQV5JYwmTeXPW+k8Sc= github.com/cncf/udpa/go v0.0.0-20200629203442-efcf912fb354/go.mod h1:WmhPx2Nbnhtbo57+VJT5O0JRkEi1Wbu0z5j0R8u5Hbk= github.com/cncf/udpa/go v0.0.0-20201120205902-5459f2c99403/go.mod h1:WmhPx2Nbnhtbo57+VJT5O0JRkEi1Wbu0z5j0R8u5Hbk= @@ -240,9 +229,7 @@ github.com/cncf/udpa/go v0.0.0-20210930031921-04548b0d99d4/go.mod h1:6pvJx4me5XP github.com/cncf/xds/go v0.0.0-20210312221358-fbca930ec8ed/go.mod h1:eXthEFrGJvWHgFFCl3hGmgk+/aYT6PnTQLykKQRLhEs= github.com/cncf/xds/go v0.0.0-20210805033703-aa0b78936158/go.mod h1:eXthEFrGJvWHgFFCl3hGmgk+/aYT6PnTQLykKQRLhEs= github.com/cncf/xds/go v0.0.0-20210922020428-25de7278fc84/go.mod h1:eXthEFrGJvWHgFFCl3hGmgk+/aYT6PnTQLykKQRLhEs= -github.com/cncf/xds/go v0.0.0-20211001041855-01bcc9b48dfe/go.mod h1:eXthEFrGJvWHgFFCl3hGmgk+/aYT6PnTQLykKQRLhEs= github.com/cncf/xds/go v0.0.0-20211011173535-cb28da3451f1/go.mod h1:eXthEFrGJvWHgFFCl3hGmgk+/aYT6PnTQLykKQRLhEs= -github.com/cncf/xds/go v0.0.0-20211130200136-a8f946100490/go.mod h1:eXthEFrGJvWHgFFCl3hGmgk+/aYT6PnTQLykKQRLhEs= github.com/cockroachdb/datadriven v0.0.0-20190809214429-80d97fb3cbaa/go.mod h1:zn76sxSg3SzpJ0PPJaLDCu+Bu0Lg3sKTORVIj19EIF8= github.com/containerd/aufs v0.0.0-20200908144142-dab0cbea06f4/go.mod h1:nukgQABAEopAHvB6j7cnP5zJ+/3aVcE7hCYqvIwAHyE= github.com/containerd/aufs v0.0.0-20201003224125-76a6863f2989/go.mod h1:AkGGQs9NM2vtYHaUen+NljV0/baGCAPELGm2q9ZXpWU= @@ -333,7 +320,6 @@ github.com/containers/ocicrypt v1.1.0/go.mod h1:b8AOe0YR67uU8OqfVNcznfFpAzu3rdgU github.com/containers/ocicrypt v1.1.1/go.mod h1:Dm55fwWm1YZAjYRaJ94z2mfZikIyIN4B0oB3dj3jFxY= github.com/coreos/bbolt v1.3.2/go.mod h1:iRUV2dpdMOn7Bo10OQBFzIJO9kkE559Wcmn+qkEiiKk= github.com/coreos/etcd v3.3.10+incompatible/go.mod h1:uF7uidLiAD3TWHmW31ZFd/JWoc32PjwdhPthX9715RE= -github.com/coreos/etcd v3.3.13+incompatible/go.mod h1:uF7uidLiAD3TWHmW31ZFd/JWoc32PjwdhPthX9715RE= github.com/coreos/go-iptables v0.4.5/go.mod h1:/mVI274lEDI2ns62jHCDnCyBF9Iwsmekav8Dbxlm1MU= github.com/coreos/go-iptables v0.5.0/go.mod h1:/mVI274lEDI2ns62jHCDnCyBF9Iwsmekav8Dbxlm1MU= github.com/coreos/go-oidc v2.1.0+incompatible/go.mod h1:CgnwVTmzoESiwO9qyAFEMiHoZ1nMCKZlZ9V6mm3/LKc= @@ -379,8 +365,8 @@ github.com/docker/distribution v2.7.1+incompatible/go.mod h1:J2gT2udsDAN96Uj4Kfc github.com/docker/docker v17.12.0-ce-rc1.0.20181225093023-5ddb1d410a8b+incompatible/go.mod h1:eEKB0N0r5NX/I1kEveEz05bcu8tLC/8azJZsviup8Sk= github.com/docker/docker v17.12.0-ce-rc1.0.20190115220918-5ec31380a5d3+incompatible/go.mod h1:eEKB0N0r5NX/I1kEveEz05bcu8tLC/8azJZsviup8Sk= github.com/docker/docker v20.10.7+incompatible/go.mod h1:eEKB0N0r5NX/I1kEveEz05bcu8tLC/8azJZsviup8Sk= -github.com/docker/docker v20.10.12+incompatible h1:CEeNmFM0QZIsJCZKMkZx0ZcahTiewkrgiwfYD+dfl1U= -github.com/docker/docker v20.10.12+incompatible/go.mod h1:eEKB0N0r5NX/I1kEveEz05bcu8tLC/8azJZsviup8Sk= +github.com/docker/docker v20.10.14+incompatible h1:+T9/PRYWNDo5SZl5qS1r9Mo/0Q8AwxKKPtu9S1yxM0w= +github.com/docker/docker v20.10.14+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.4.0 h1:El9xVISelRB7BuFusrZozjnkIM5YnzCViNKohAFqRJQ= @@ -411,9 +397,7 @@ github.com/envoyproxy/go-control-plane v0.9.9-0.20201210154907-fd9021fe5dad/go.m github.com/envoyproxy/go-control-plane v0.9.9-0.20210217033140-668b12f5399d/go.mod h1:cXg6YxExXjJnVBQHBLXeUAgxn2UodCpnH306RInaBQk= github.com/envoyproxy/go-control-plane v0.9.9-0.20210512163311-63b5d3c536b0/go.mod h1:hliV/p42l8fGbc6Y9bQ70uLwIvmJyVE5k4iMKlh8wCQ= github.com/envoyproxy/go-control-plane v0.9.10-0.20210907150352-cf90f659a021/go.mod h1:AFq3mo9L8Lqqiid3OhADV3RfLJnjiw63cSpi+fDTRC0= -github.com/envoyproxy/go-control-plane v0.10.1/go.mod h1:AY7fTTXNdv/aJ2O5jwpxAPOWUZ7hQAEvzN5Pf27BkQQ= github.com/envoyproxy/protoc-gen-validate v0.1.0/go.mod h1:iSmxcyjqTsJpI2R4NaDN7+kN2VEUnK/pcBlmesArF7c= -github.com/envoyproxy/protoc-gen-validate v0.6.2/go.mod h1:2t7qjJNvHPx8IjnBOzl9E9/baC+qXE/TeeyBRzgJDws= github.com/evanphx/json-patch v4.9.0+incompatible/go.mod h1:50XU6AFN0ol/bzJsmQLiYLvXMP4fmwYFNcr97nuDLSk= github.com/evanphx/json-patch v4.11.0+incompatible/go.mod h1:50XU6AFN0ol/bzJsmQLiYLvXMP4fmwYFNcr97nuDLSk= github.com/evanphx/json-patch v4.12.0+incompatible h1:4onqiflcdA9EOZ4RxV643DvftH5pOlLGNtQ5lPWQu84= @@ -421,7 +405,6 @@ github.com/evanphx/json-patch v4.12.0+incompatible/go.mod h1:50XU6AFN0ol/bzJsmQL github.com/exponent-io/jsonpath v0.0.0-20151013193312-d6023ce2651d/go.mod h1:ZZMPRZwes7CROmyNKgQzC3XPs6L/G2EJLHddWejkmf4= github.com/fatih/camelcase v1.0.0/go.mod h1:yN2Sb0lFhZJUdVvtELVWefmrXpuZESvPmqwoZc+/fpc= github.com/fatih/color v1.7.0/go.mod h1:Zm6kSWBoL9eyXnKyktHP6abPY2pDugNf5KwzbycvMj4= -github.com/fatih/color v1.9.0/go.mod h1:eQcE1qtQxscV5RaZvpXrrb8Drkc3/DdQ+uUYCNjL+zU= github.com/fatih/color v1.10.0/go.mod h1:ELkj/draVOlAH/xkhN6mQ50Qd0MPOk5AAr3maGEBuJM= github.com/fatih/color v1.13.0 h1:8LOYc1KYPPmyKMuN8QV2DNRWNbLo6LZ0iLs8+mlH53w= github.com/fatih/color v1.13.0/go.mod h1:kLAiJbzzSOZDVNGyDpeOxJ47H46qBXwg5ILebYFFOfk= @@ -429,8 +412,6 @@ github.com/felixge/httpsnoop v1.0.1/go.mod h1:m8KPJKqk1gH5J9DgRY2ASl2lWCfGKXixSw github.com/felixge/httpsnoop v1.0.2 h1:+nS9g82KMXccJ/wp0zyRW9ZBHFETmMGtkk+2CTTrW4o= github.com/felixge/httpsnoop v1.0.2/go.mod h1:m8KPJKqk1gH5J9DgRY2ASl2lWCfGKXixSwevea8zH2U= github.com/flynn/go-shlex v0.0.0-20150515145356-3f9db97f8568/go.mod h1:xEzjJPgXI435gkrCt3MPfRiAkVrwSbHsst4LCFVfpJc= -github.com/fogleman/gg v1.2.1-0.20190220221249-0403632d5b90/go.mod h1:R/bRT+9gY/C5z7JzPU0zXsXHKM4/ayA+zqcVNZzPa1k= -github.com/fogleman/gg v1.3.0 h1:/7zJX8F6AaYQc57WQCyN9cAIz+4bCJGO9B+dyW29am8= github.com/fogleman/gg v1.3.0/go.mod h1:R/bRT+9gY/C5z7JzPU0zXsXHKM4/ayA+zqcVNZzPa1k= github.com/form3tech-oss/jwt-go v3.2.2+incompatible/go.mod h1:pbq4aXjuKjdthFRnoDwaVPLA+WlJuPGy+QneDUgJi2k= github.com/form3tech-oss/jwt-go v3.2.3+incompatible/go.mod h1:pbq4aXjuKjdthFRnoDwaVPLA+WlJuPGy+QneDUgJi2k= @@ -451,7 +432,6 @@ github.com/go-fonts/dejavu v0.1.0 h1:JSajPXURYqpr+Cu8U9bt8K+XcACIHWqWrvWCKyeFmVQ github.com/go-fonts/dejavu v0.1.0/go.mod h1:4Wt4I4OU2Nq9asgDCteaAaWZOV24E+0/Pwo0gppep4g= github.com/go-fonts/latin-modern v0.2.0 h1:5/Tv1Ek/QCr20C6ZOz15vw3g7GELYL98KWr8Hgo+3vk= github.com/go-fonts/latin-modern v0.2.0/go.mod h1:rQVLdDMK+mK1xscDwsqM5J8U2jrRa3T0ecnM9pNujks= -github.com/go-fonts/liberation v0.1.1/go.mod h1:K6qoJYypsmfVjWg8KOVDQhLc8UDgIK2HYqyqAO9z7GY= github.com/go-fonts/liberation v0.2.0 h1:jAkAWJP4S+OsrPLZM4/eC9iW7CtHy+HBXrEwZXWo5VM= github.com/go-fonts/liberation v0.2.0/go.mod h1:K6qoJYypsmfVjWg8KOVDQhLc8UDgIK2HYqyqAO9z7GY= github.com/go-fonts/stix v0.1.0/go.mod h1:w/c1f0ldAUlJmLBvlbkvVXLAD+tAMqobIIQpmnUIzUY= @@ -462,7 +442,6 @@ github.com/go-ini/ini v1.25.4/go.mod h1:ByCAeIL28uOIIG0E3PJtZPDL8WnHpFKFOtgjp+3I github.com/go-kit/kit v0.8.0/go.mod h1:xBxKIO96dXMWWy0MnWVtmwkA9/13aqxPnvrjFYMA2as= github.com/go-kit/kit v0.9.0/go.mod h1:xBxKIO96dXMWWy0MnWVtmwkA9/13aqxPnvrjFYMA2as= github.com/go-kit/log v0.1.0/go.mod h1:zbhenjAZHb184qTLMA9ZjW7ThYL0H2mk7Q6pNt4vbaY= -github.com/go-latex/latex v0.0.0-20210118124228-b3d85cf34e07/go.mod h1:CO1AlKB2CSIqUrmQPqA0gdRIlnLEY0gK5JGjh37zN5U= github.com/go-latex/latex v0.0.0-20210823091927-c0d11ff05a81 h1:6zl3BbBhdnMkpSj2YY30qV3gDcVBGtFgVsV3+/i+mKQ= github.com/go-latex/latex v0.0.0-20210823091927-c0d11ff05a81/go.mod h1:SX0U8uGpxhq9o2S/CELCSUxEWWAuoCUcVCQWv7G2OCk= github.com/go-logfmt/logfmt v0.3.0/go.mod h1:Qt1PoO58o5twSAckw1HlFXLmHsOX5/0LbT9GBnD5lWE= @@ -472,8 +451,11 @@ github.com/go-logr/logr v0.1.0/go.mod h1:ixOQHD9gLJUVQQ2ZOR7zLEifBX6tGkNJF4QyIY7 github.com/go-logr/logr v0.2.0/go.mod h1:z6/tIYblkpsD+a4lm/fGIIU9mZ+XfAiaFtq7xTgseGU= github.com/go-logr/logr v0.4.0/go.mod h1:z6/tIYblkpsD+a4lm/fGIIU9mZ+XfAiaFtq7xTgseGU= github.com/go-logr/logr v1.2.0/go.mod h1:jdQByPbusPIv2/zmleS9BjJVeZ6kBagPoEUsqbVz/1A= -github.com/go-logr/logr v1.2.2 h1:ahHml/yUpnlb96Rp8HCvtYVPY8ZYpxq3g7UYchIYwbs= +github.com/go-logr/logr v1.2.1/go.mod h1:jdQByPbusPIv2/zmleS9BjJVeZ6kBagPoEUsqbVz/1A= github.com/go-logr/logr v1.2.2/go.mod h1:jdQByPbusPIv2/zmleS9BjJVeZ6kBagPoEUsqbVz/1A= +github.com/go-logr/logr v1.2.3 h1:2DntVwHkVopvECVRSlL5PSo9eG+cAkDCuckLubN+rq0= +github.com/go-logr/logr v1.2.3/go.mod h1:jdQByPbusPIv2/zmleS9BjJVeZ6kBagPoEUsqbVz/1A= +github.com/go-logr/stdr v1.2.0/go.mod h1:YkVgnZu1ZjjL7xTxrfm/LLZBfkhTqSR1ydtm6jTKKwI= github.com/go-logr/stdr v1.2.2 h1:hSWxHoqTgW2S2qGc0LTAI563KZ5YKYRhT3MFKZMbjag= github.com/go-logr/stdr v1.2.2/go.mod h1:mMo/vtBO5dYbehREoey6XUKy/eSumjCCveDpRre4VKE= github.com/go-logr/zapr v1.2.0/go.mod h1:Qa4Bsj2Vb+FAVeAKsLD8RLQ+YRJB8YDmOAKxaBQf7Ro= @@ -493,8 +475,9 @@ github.com/go-openapi/swag v0.0.0-20160704191624-1d0bd113de87/go.mod h1:DXUve3Dp github.com/go-openapi/swag v0.19.2/go.mod h1:POnQmlKehdgb5mhVOsnJFsivZCEZ/vjK9gh66Z9tfKk= github.com/go-openapi/swag v0.19.5/go.mod h1:POnQmlKehdgb5mhVOsnJFsivZCEZ/vjK9gh66Z9tfKk= github.com/go-openapi/swag v0.19.14/go.mod h1:QYRuS/SOXUCsnplDa677K7+DxSOj6IPNl/eQntq43wQ= -github.com/go-pdf/fpdf v0.5.0 h1:GHpcYsiDV2hdo77VTOuTF9k1sN8F8IY7NjnCo9x+NPY= github.com/go-pdf/fpdf v0.5.0/go.mod h1:HzcnA+A23uwogo0tp9yU+l3V+KXhiESpt1PMayhOh5M= +github.com/go-pdf/fpdf v0.6.0 h1:MlgtGIfsdMEEQJr2le6b/HNr1ZlQwxyWr77r2aj2U/8= +github.com/go-pdf/fpdf v0.6.0/go.mod h1:HzcnA+A23uwogo0tp9yU+l3V+KXhiESpt1PMayhOh5M= github.com/go-stack/stack v1.8.0/go.mod h1:v0f6uXyyMGvRgIKkXu+yp6POWl0qKG85gN/melR3HDY= github.com/godbus/dbus v0.0.0-20151105175453-c7fdd8b5cd55/go.mod h1:/YcGZj5zSblfDWMMoOzV4fas9FZnQYTkDnsGvmh2Grw= github.com/godbus/dbus v0.0.0-20180201030542-885f9cc04c9c/go.mod h1:/YcGZj5zSblfDWMMoOzV4fas9FZnQYTkDnsGvmh2Grw= @@ -572,7 +555,6 @@ github.com/google/go-cmp v0.5.7 h1:81/ik6ipDQS2aGcBfIN5dHDB36BwrStyeAQquSYCV4o= github.com/google/go-cmp v0.5.7/go.mod h1:n+brtR0CgQNWTVd5ZUFpTBC8YFBDLK/h/bpaJ8/DtOE= github.com/google/go-containerregistry v0.6.0 h1:niQ+8XD//kKgArIFwDVBXsWVWbde16LPdHMyNwSC8h4= github.com/google/go-containerregistry v0.6.0/go.mod h1:euCCtNbZ6tKqi1E72vwDj2xZcN5ttKpZLfa/wSo5iLw= -github.com/google/go-github v17.0.0+incompatible h1:N0LgJ1j65A7kfXrZnUDaYCs/Sf4rEjNlfyDHW9dolSY= github.com/google/go-github v17.0.0+incompatible/go.mod h1:zLgOLi98H3fifZn+44m+umXrS52loVEgC2AApnigrVQ= github.com/google/go-github/v36 v36.0.0 h1:ndCzM616/oijwufI7nBRa+5eZHLldT+4yIB68ib5ogs= github.com/google/go-github/v36 v36.0.0/go.mod h1:LFlKC047IOqiglRGNqNb9s/iAPTnnjtlshm+bxp+kwk= @@ -600,7 +582,6 @@ github.com/google/pprof v0.0.0-20210122040257-d980be63207e/go.mod h1:kpwsk12EmLe github.com/google/pprof v0.0.0-20210226084205-cbba55b83ad5/go.mod h1:kpwsk12EmLew5upagYY7GY0pfYCcupk39gWOCRROcvE= github.com/google/pprof v0.0.0-20210601050228-01bbb1931b22/go.mod h1:kpwsk12EmLew5upagYY7GY0pfYCcupk39gWOCRROcvE= github.com/google/pprof v0.0.0-20210609004039-a478d1d731e9/go.mod h1:kpwsk12EmLew5upagYY7GY0pfYCcupk39gWOCRROcvE= -github.com/google/pprof v0.0.0-20210715191844-86eeefc3e471/go.mod h1:kpwsk12EmLew5upagYY7GY0pfYCcupk39gWOCRROcvE= github.com/google/pprof v0.0.0-20210720184732-4bb14d4b1be1/go.mod h1:kpwsk12EmLew5upagYY7GY0pfYCcupk39gWOCRROcvE= github.com/google/renameio v0.1.0/go.mod h1:KWCgfxg9yswjAJkECMjeO8J8rahYeXnNhOm40UhjYkI= github.com/google/shlex v0.0.0-20191202100458-e7afc7fbc510/go.mod h1:pupxD2MaaD3pAXIBCelhxNneeOaAeabZDe5s4K6zSpQ= @@ -615,8 +596,9 @@ github.com/google/uuid v1.3.0/go.mod h1:TIyPZe4MgqvfeYDBFedMoGGpEw/LqOeaOT+nhxU+ github.com/googleapis/gax-go/v2 v2.0.4/go.mod h1:0Wqv26UfaUD9n4G6kQubkQ+KchISgw+vpHVxEJEs9eg= github.com/googleapis/gax-go/v2 v2.0.5/go.mod h1:DWXyrwAJ9X0FpwwEdw+IPEYBICEFu5mhpdKc/us6bOk= github.com/googleapis/gax-go/v2 v2.1.0/go.mod h1:Q3nei7sK6ybPYH7twZdmQpAd1MKb7pfu6SK+H1/DsU0= -github.com/googleapis/gax-go/v2 v2.1.1 h1:dp3bWCh+PPO1zjRRiCSczJav13sBvG4UhNyVTa1KqdU= github.com/googleapis/gax-go/v2 v2.1.1/go.mod h1:hddJymUZASv3XPyGkUpKj8pPO47Rmb0eJc8R6ouapiM= +github.com/googleapis/gax-go/v2 v2.2.0 h1:s7jOdKSaksJVOxE0Y/S32otcfiP+UQ0cL8/GTKaONwE= +github.com/googleapis/gax-go/v2 v2.2.0/go.mod h1:as02EH8zWkzwUoLbBaFeQ+arQaj/OthfcblKl4IGNaM= github.com/googleapis/gnostic v0.4.1/go.mod h1:LRhVm6pbyptWbWbuZ38d1eyptfvIytN3ir6b65WBswg= github.com/googleapis/gnostic v0.5.1/go.mod h1:6U4PtQXGIEt/Z3h5MAT7FNofLnw9vXk2cUuW7uA/OeU= github.com/googleapis/gnostic v0.5.5 h1:9fHAtK0uDfpveeqqo1hkEZJcFvYXAiCN3UutL8F9xHw= @@ -625,6 +607,7 @@ github.com/googleinterns/cloud-operations-api-mock v0.0.0-20200709193332-a1e58c2 github.com/googleinterns/cloud-operations-api-mock v0.0.0-20200709193332-a1e58c29bdd3/go.mod h1:h/KNeRx7oYU4SpA4SoY7W2/NxDKEEVuwA6j9A27L4OI= github.com/gookit/color v1.4.2 h1:tXy44JFSFkKnELV6WaMo/lLfu/meqITX3iAV52do7lk= github.com/gookit/color v1.4.2/go.mod h1:fqRyamkC1W8uxl+lxCQxOT09l/vYfZ+QeiX3rKQHCoQ= +github.com/gopherjs/gopherjs v0.0.0-20181017120253-0766667cb4d1 h1:EGx4pi6eqNxGaHF6qqu48+N2wcFQ5qg5FXgOdqsJ5d8= github.com/gopherjs/gopherjs v0.0.0-20181017120253-0766667cb4d1/go.mod h1:wJfORRmW1u3UXTncJ5qlYoELFm8eSnnEO6hX4iZ3EWY= github.com/gorilla/handlers v0.0.0-20150720190736-60c7bfde3e33/go.mod h1:Qkdc/uu4tH4g6mTK6auzZ766c4CA0Ng8+o/OAirnOIQ= github.com/gorilla/mux v1.7.2/go.mod h1:1lud6UwP+6orDFRuTfBEV8e9/aOM/c4fVVCaMa2zaAs= @@ -642,33 +625,23 @@ github.com/grpc-ecosystem/grpc-gateway v1.9.0/go.mod h1:vNeuVxBJEsws4ogUvrchl83t github.com/grpc-ecosystem/grpc-gateway v1.9.5/go.mod h1:vNeuVxBJEsws4ogUvrchl83t/GYV9WGTSLVdBhOQFDY= github.com/grpc-ecosystem/grpc-gateway v1.16.0/go.mod h1:BDjrQk3hbvj6Nolgz8mAMFbcEtjT1g+wF4CSlocrBnw= github.com/hashicorp/consul/api v1.1.0/go.mod h1:VmuI/Lkw1nC05EYQWNKwWGbkg+FbDBtguAZLlVdkD9Q= -github.com/hashicorp/consul/api v1.11.0/go.mod h1:XjsvQN+RJGWI2TWy1/kqaE16HrR2J/FWgkYjdZQsX9M= -github.com/hashicorp/consul/api v1.12.0/go.mod h1:6pVBMo0ebnYdt2S3H87XhekM/HHrUoTD2XXb/VrZVy0= github.com/hashicorp/consul/sdk v0.1.1/go.mod h1:VKf9jXwCTEY1QZP2MOLRhb5i/I/ssyNV1vwHyQBF0x8= -github.com/hashicorp/consul/sdk v0.8.0/go.mod h1:GBvyrGALthsZObzUGsfgHZQDXjg4lOjagTIwIR1vPms= github.com/hashicorp/errwrap v0.0.0-20141028054710-7554cd9344ce/go.mod h1:YH+1FKiLXxHSkmPseP+kNlulaMuP3n2brvKWEqk/Jc4= github.com/hashicorp/errwrap v1.0.0/go.mod h1:YH+1FKiLXxHSkmPseP+kNlulaMuP3n2brvKWEqk/Jc4= -github.com/hashicorp/go-cleanhttp v0.5.0/go.mod h1:JpRdi6/HCYpAwUzNwuwqhbovhLtngrth3wmdIIUrZ80= github.com/hashicorp/go-cleanhttp v0.5.1/go.mod h1:JpRdi6/HCYpAwUzNwuwqhbovhLtngrth3wmdIIUrZ80= github.com/hashicorp/go-cleanhttp v0.5.2 h1:035FKYIWjmULyFRBKPs8TBQoi0x6d9G4xc9neXJWAZQ= github.com/hashicorp/go-cleanhttp v0.5.2/go.mod h1:kO/YDlP8L1346E6Sodw+PrpBSV4/SoxCXGY6BqNFT48= github.com/hashicorp/go-getter v1.5.11 h1:wioTuNmaBU3IE9vdFtFMcmZWj0QzLc6DYaP6sNe5onY= github.com/hashicorp/go-getter v1.5.11/go.mod h1:9i48BP6wpWweI/0/+FBjqLrp9S8XtwUGjiu0QkWHEaY= github.com/hashicorp/go-hclog v0.9.2/go.mod h1:5CU+agLiy3J7N7QjHK5d05KxGsuXiQLrjA0H7acj2lQ= -github.com/hashicorp/go-hclog v0.12.0/go.mod h1:whpDNt7SSdeAju8AWKIWsul05p54N/39EeqMAyrmvFQ= github.com/hashicorp/go-hclog v1.0.0 h1:bkKf0BeBXcSYa7f5Fyi9gMuQ8gNsxeiNpZjR6VxNZeo= -github.com/hashicorp/go-hclog v1.0.0/go.mod h1:whpDNt7SSdeAju8AWKIWsul05p54N/39EeqMAyrmvFQ= github.com/hashicorp/go-immutable-radix v1.0.0/go.mod h1:0y9vanUI8NX6FsYoO3zeMjhV/C5i9g4Q3DwcSNZ4P60= -github.com/hashicorp/go-immutable-radix v1.3.1/go.mod h1:0y9vanUI8NX6FsYoO3zeMjhV/C5i9g4Q3DwcSNZ4P60= github.com/hashicorp/go-msgpack v0.5.3/go.mod h1:ahLV/dePpqEmjfWmKiqvPkv/twdG7iPBM1vqhUKIvfM= github.com/hashicorp/go-multierror v0.0.0-20161216184304-ed905158d874/go.mod h1:JMRHfdO9jKNzS/+BTlxCjKNQHg/jZAft8U7LloJvN7I= github.com/hashicorp/go-multierror v1.0.0/go.mod h1:dHtQlpGsu+cZNNAkkCN/P3hoUDHhCYQXV3UM06sGGrk= -github.com/hashicorp/go-multierror v1.1.0/go.mod h1:spPvp8C1qA32ftKqdAHm4hHTbPw+vmowP0z+KUhOZdA= -github.com/hashicorp/go-retryablehttp v0.5.3/go.mod h1:9B5zBasrRhHXnJnui7y6sL7es7NDiJgTc6Er0maI1Xs= github.com/hashicorp/go-retryablehttp v0.7.0 h1:eu1EI/mbirUgP5C8hVsTNaGZreBDlYiwC1FZWkvQPQ4= github.com/hashicorp/go-retryablehttp v0.7.0/go.mod h1:vAew36LZh98gCBJNLH42IQ1ER/9wtLZZ8meHqQvEYWY= github.com/hashicorp/go-rootcerts v1.0.0/go.mod h1:K6zTfqpRlCUIjkwsN4Z+hiSfzSTQa6eBIzfwKfwNnHU= -github.com/hashicorp/go-rootcerts v1.0.2/go.mod h1:pqUvnprVnM5bf7AOirdbb01K4ccR319Vf4pU3K5EGc8= github.com/hashicorp/go-safetemp v1.0.0 h1:2HR189eFNrjHQyENnQMMpCiBAsRxzbTMIgBhEyExpmo= github.com/hashicorp/go-safetemp v1.0.0/go.mod h1:oaerMy3BhqiTbVye6QuFhFtIceqFoDHxNAB65b+Rj1I= github.com/hashicorp/go-sockaddr v1.0.0/go.mod h1:7Xibr9yA9JjQq1JpNB2Vw7kxv8xerXegt+ozgdvDeDU= @@ -681,19 +654,12 @@ github.com/hashicorp/go-version v1.2.1/go.mod h1:fltr4n8CU8Ke44wwGCBoEymUuxUHl09 github.com/hashicorp/go.net v0.0.1/go.mod h1:hjKkEWcCURg++eb33jQU7oqQcI9XDCnUzHA0oac0k90= github.com/hashicorp/golang-lru v0.5.0/go.mod h1:/m3WP610KZHVQ1SGc6re/UDhFvYD7pJ4Ao+sR/qLZy8= github.com/hashicorp/golang-lru v0.5.1/go.mod h1:/m3WP610KZHVQ1SGc6re/UDhFvYD7pJ4Ao+sR/qLZy8= -github.com/hashicorp/golang-lru v0.5.4/go.mod h1:iADmTwqILo4mZ8BN3D2Q6+9jd8WM5uGBxy+E8yxSoD4= github.com/hashicorp/hcl v1.0.0 h1:0Anlzjpi4vEasTeNFn2mLJgTSwt0+6sfsiTG8qcWGx4= github.com/hashicorp/hcl v1.0.0/go.mod h1:E5yfLk+7swimpb2L/Alb/PJmXilQ/rhwaUYs4T20WEQ= github.com/hashicorp/logutils v1.0.0/go.mod h1:QIAnNjmIWmVIIkWDTG1z5v++HQmx9WQRO+LraFDTW64= github.com/hashicorp/mdns v1.0.0/go.mod h1:tL+uN++7HEJ6SQLQ2/p+z2pH24WQKWjBPkE0mNTz8vQ= -github.com/hashicorp/mdns v1.0.1/go.mod h1:4gW7WsVCke5TE7EPeYliwHlRUyBtfCwuFwuMg2DmyNY= -github.com/hashicorp/mdns v1.0.4/go.mod h1:mtBihi+LeNXGtG8L9dX59gAEa12BDtBQSp4v/YAJqrc= github.com/hashicorp/memberlist v0.1.3/go.mod h1:ajVTdAv/9Im8oMAAj5G31PhhMCZJV2pPBoIllUwCN7I= -github.com/hashicorp/memberlist v0.2.2/go.mod h1:MS2lj3INKhZjWNqd3N0m3J+Jxf3DAOnAH9VT3Sh9MUE= -github.com/hashicorp/memberlist v0.3.0/go.mod h1:MS2lj3INKhZjWNqd3N0m3J+Jxf3DAOnAH9VT3Sh9MUE= github.com/hashicorp/serf v0.8.2/go.mod h1:6hOLApaqBFA1NXqRQAsxw9QxuDEvNxSQRwA/JwenrHc= -github.com/hashicorp/serf v0.9.5/go.mod h1:UWDWwZeL5cuWDJdl0C6wrvrUwEqtQ4ZKBKKENpqIUyk= -github.com/hashicorp/serf v0.9.6/go.mod h1:TXZNMjZQijwlDvp+r0b63xZ45H7JmCmgg4gpTwn9UV4= github.com/hectane/go-acl v0.0.0-20190604041725-da78bae5fc95 h1:S4qyfL2sEm5Budr4KVMyEniCy+PbS55651I/a+Kn/NQ= github.com/hectane/go-acl v0.0.0-20190604041725-da78bae5fc95/go.mod h1:QiyDdbZLaJ/mZP4Zwc9g2QsfaEA4o7XvvgZegSci5/E= github.com/hooklift/assert v0.0.0-20170704181755-9d1defd6d214 h1:WgfvpuKg42WVLkxNwzfFraXkTXPK36bMqXvMFN67clI= @@ -701,7 +667,6 @@ github.com/hooklift/assert v0.0.0-20170704181755-9d1defd6d214/go.mod h1:kj6hFWqf github.com/hooklift/iso9660 v0.0.0-20170318115843-1cf07e5970d8 h1:ARl0RuGZTqBOMXQIfXen0twVSJ8kMojd7ThJf4EBcrc= github.com/hooklift/iso9660 v0.0.0-20170318115843-1cf07e5970d8/go.mod h1:sOC47ru8lB0DlU0EZ7BJ0KCP5rDqOvx0c/5K5ADm8H0= github.com/hpcloud/tail v1.0.0/go.mod h1:ab1qPbhIpdTxEkNHXyeSf5vhxWSCs/tWer42PpOxQnU= -github.com/iancoleman/strcase v0.2.0/go.mod h1:iwCmte+B7n89clKwxIoIXy/HfoL7AsD47ZCWhYzw7ho= github.com/ianlancetaylor/demangle v0.0.0-20181102032728-5e5cf60278f6/go.mod h1:aSSvb/t6k1mPoxDqO4vJh6VOCGPwU4O0C2/Eqndh1Sc= github.com/ianlancetaylor/demangle v0.0.0-20200824232613-28f6c0f3b639/go.mod h1:aSSvb/t6k1mPoxDqO4vJh6VOCGPwU4O0C2/Eqndh1Sc= github.com/imdario/mergo v0.3.5/go.mod h1:2EnlNZ0deacrJVfApfmtdGgDfMuh/nq6Ok1EcJh5FfA= @@ -736,6 +701,7 @@ github.com/json-iterator/go v1.1.12 h1:PV8peI4a0ysnczrg+LtxykD8LfKY9ML6u2jnxaEnr github.com/json-iterator/go v1.1.12/go.mod h1:e30LSqwooZae/UwlEbR2852Gd8hjQvJoHmT4TnhNGBo= github.com/jstemmer/go-junit-report v0.0.0-20190106144839-af01ea7f8024/go.mod h1:6v2b51hI/fHJwM22ozAgKL4VKDeJcHhJFhtBdhmNjmU= github.com/jstemmer/go-junit-report v0.9.1/go.mod h1:Brl9GWCQeLvo8nXZwPNNblvFj/XSXhF0NWZEnDohbsk= +github.com/jtolds/gls v4.20.0+incompatible h1:xdiiI2gbIgH/gLH7ADydsJ1uDOEzR8yvV7C0MuV77Wo= github.com/jtolds/gls v4.20.0+incompatible/go.mod h1:QJZ7F/aHp+rZTRtaJ1ow/lLfFfVYBRgL+9YlvaHOwJU= github.com/juju/clock v0.0.0-20190205081909-9c5c9712527c h1:3UvYABOQRhJAApj9MdCN+Ydv841ETSoy6xLzdmmr/9A= github.com/juju/clock v0.0.0-20190205081909-9c5c9712527c/go.mod h1:nD0vlnrUjcjJhqN5WuCWZyzfd5AHZAC9/ajvbSx69xA= @@ -758,7 +724,6 @@ github.com/juju/version v0.0.0-20180108022336-b64dbd566305/go.mod h1:kE8gK5X0CIm github.com/julienschmidt/httprouter v1.2.0/go.mod h1:SYymIcj16QtmaHHD7aYtjjsJG7VTCxuUUipMqKk8s4w= github.com/julienschmidt/httprouter v1.3.0/go.mod h1:JR6WtHb+2LUe8TCKY3cZOxFyyO8IZAc4RVcycCCAKdM= github.com/jung-kurt/gofpdf v1.0.0/go.mod h1:7Id9E/uU8ce6rXgefFLlgrJj/GYY22cpxn+r32jIOes= -github.com/jung-kurt/gofpdf v1.0.3-0.20190309125859-24315acbbda5/go.mod h1:7Id9E/uU8ce6rXgefFLlgrJj/GYY22cpxn+r32jIOes= github.com/kballard/go-shellquote v0.0.0-20180428030007-95032a82bc51 h1:Z9n2FFNUXsshfwJMBgNA0RU6/i7WVaAegv3PtuIHPMs= github.com/kballard/go-shellquote v0.0.0-20180428030007-95032a82bc51/go.mod h1:CzGEWj7cYgsdH8dAjBGEr58BoE7ScuLd+fwFZ44+/x8= github.com/kisielk/errcheck v1.1.0/go.mod h1:EZBBE59ingxPouuu3KfxchcWSUPOHkagtvWXihfKN4Q= @@ -792,13 +757,11 @@ github.com/liggitt/tabwriter v0.0.0-20181228230101-89fcab3d43de/go.mod h1:zAbeS9 github.com/lithammer/dedent v1.1.0/go.mod h1:jrXYCQtgg0nJiN+StA2KgR7w6CiQNv9Fd/Z9BP0jIOc= github.com/lufia/plan9stats v0.0.0-20211012122336-39d0f177ccd0 h1:6E+4a0GO5zZEnZ81pIr0yLvtUWk2if982qA3F3QD6H4= github.com/lufia/plan9stats v0.0.0-20211012122336-39d0f177ccd0/go.mod h1:zJYVVT2jmtg6P3p1VtQj7WsuWi/y4VnjVBn7F8KPB3I= -github.com/lyft/protoc-gen-star v0.5.3/go.mod h1:V0xaHgaf5oCCqmcxYcWiDfTiKsZsRc87/1qhoTACD8w= github.com/machine-drivers/docker-machine-driver-vmware v0.1.5 h1:51GqJ84u9EBATnn8rWsHNavcuRPlCLnDmvjzZVuliwY= github.com/machine-drivers/docker-machine-driver-vmware v0.1.5/go.mod h1:dTnTzUH3uzhMo0ddV1zRjGYWcVhQWwqiHPxz5l+HPd0= github.com/machine-drivers/machine v0.7.1-0.20211105063445-78a84df85426 h1:gVDPCmqwvHQ4ox/9svvnkomYJAAiV59smbPdTK4DIm4= github.com/machine-drivers/machine v0.7.1-0.20211105063445-78a84df85426/go.mod h1:79Uwa2hGd5S39LDJt58s8JZcIhGEK6pkq9bsuTbFWbk= github.com/magiconair/properties v1.8.0/go.mod h1:PppfXfuXeibc/6YijjN8zIbojt8czPbwD3XqdrwzmxQ= -github.com/magiconair/properties v1.8.1/go.mod h1:PppfXfuXeibc/6YijjN8zIbojt8czPbwD3XqdrwzmxQ= github.com/magiconair/properties v1.8.5 h1:b6kJs+EmPFMYGkow9GiUyCyOvIwYetYJ3fSaWak/Gls= github.com/magiconair/properties v1.8.5/go.mod h1:y3VJvCyxH9uVvJTWEGAELF3aiYNyPKd5NZ3oSwXrF60= github.com/mailru/easyjson v0.0.0-20160728113105-d5b7844b561a/go.mod h1:C1wdFJiN94OJF2b5HbByQZoLdCWB1Yqtg26g4irojpc= @@ -812,7 +775,6 @@ github.com/mattbaird/jsonpatch v0.0.0-20200820163806-098863c1fc24 h1:uYuGXJBAi1u github.com/mattbaird/jsonpatch v0.0.0-20200820163806-098863c1fc24/go.mod h1:M1qoD/MqPgTZIk0EWKB38wE28ACRfVcn+cU08jyArI0= github.com/mattn/go-colorable v0.0.9/go.mod h1:9vuHe8Xs5qXnSaW/c/ABM9alt+Vo+STaOChaDxuIBZU= 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/go.mod h1:u6P/XSegPjTcexA+o6vUJrdnUu04hMope9wVRipJSqc= github.com/mattn/go-colorable v0.1.8/go.mod h1:u6P/XSegPjTcexA+o6vUJrdnUu04hMope9wVRipJSqc= github.com/mattn/go-colorable v0.1.9/go.mod h1:u6P/XSegPjTcexA+o6vUJrdnUu04hMope9wVRipJSqc= @@ -821,8 +783,6 @@ github.com/mattn/go-colorable v0.1.12/go.mod h1:u5H1YNBxpqRaxsYJYSkiCWKzEfiAb1Gb 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.8/go.mod h1:Iq45c/XA43vh69/j3iqttzPXn0bhXyGjM0Hdxcsrc5s= -github.com/mattn/go-isatty v0.0.10/go.mod h1:qgIWMr58cqv1PHHyhnkY9lrL7etaEgOFcMEpPG5Rm84= -github.com/mattn/go-isatty v0.0.11/go.mod h1:PhnuNfih5lzO57/f3n+odYbM4JtupLOxQOAqxQCu2WE= github.com/mattn/go-isatty v0.0.12/go.mod h1:cbi8OIDigv2wuxKPP5vlRcQ1OAZbq2CE4Kysco4FUpU= github.com/mattn/go-isatty v0.0.14 h1:yVuAays6BHfxijgZPzw+3Zlu5yQgKGP2/hcQbHb7S9Y= github.com/mattn/go-isatty v0.0.14/go.mod h1:7GGIvUiUoEMVVmxf/4nioHXj79iQHKdU27kJ6hsGG94= @@ -839,14 +799,12 @@ github.com/matttproud/golang_protobuf_extensions v1.0.2-0.20181231171920-c182aff github.com/matttproud/golang_protobuf_extensions v1.0.2-0.20181231171920-c182affec369/go.mod h1:BSXmuO+STAnVfrANrmjBb36TMTDstsz7MSK+HVaYKv4= github.com/mgutz/ansi v0.0.0-20170206155736-9520e82c474b/go.mod h1:01TrycV0kFyexm33Z7vhZRXopbI8J3TDReVlkTgMUxE= github.com/miekg/dns v1.0.14/go.mod h1:W1PPwlIAgtquWBMBEV9nkV9Cazfe8ScdGz/Lj7v3Nrg= -github.com/miekg/dns v1.1.26/go.mod h1:bPDLeHnStXmXAq1m/Ch/hvfNHr14JKNPMBo3VZKjuso= github.com/miekg/dns v1.1.29/go.mod h1:KNUDUusw/aVsxyTYZM1oqvCicbwhgbNgztCETuNZ7xM= github.com/miekg/dns v1.1.41 h1:WMszZWJG0XmzbK9FEmzH2TVcqYzFesusSIB41b8KHxY= github.com/miekg/dns v1.1.41/go.mod h1:p6aan82bvRIyn+zDIv9xYNUpwa73JcSh9BKwknJysuI= github.com/miekg/pkcs11 v1.0.3/go.mod h1:XsNlhZGX73bx86s2hdc/FuaLm2CPZJemRLMA+WTFxgs= github.com/mistifyio/go-zfs v2.1.2-0.20190413222219-f784269be439+incompatible/go.mod h1:8AuVvqP/mXw1px98n46wfvcGfQ4ci2FwoAjKYxuo3Z4= github.com/mitchellh/cli v1.0.0/go.mod h1:hNIlj7HEI86fIcpObd7a0FcrxTWetlwJDGcceTlRvqc= -github.com/mitchellh/cli v1.1.0/go.mod h1:xcISNoH86gajksDmfB23e/pu+B+GeFRMYmoHXxx3xhI= 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= @@ -955,7 +913,6 @@ github.com/otiai10/mint v1.3.0/go.mod h1:F5AjcsTsWUqX+Na9fpHb52P8pcRX2CI6A3ctIT9 github.com/otiai10/mint v1.3.3 h1:7JgpsBaN0uMkyju4tbYHu0mnM55hNKVYLsXmwr15NQI= github.com/otiai10/mint v1.3.3/go.mod h1:/yxELlJQ0ufhjUwhshSj+wFjZ78CnZ48/1wtmBH1OTc= github.com/pascaldekloe/goe v0.0.0-20180627143212-57f6aae5913c/go.mod h1:lzWF7FIEvWOWxwDKqyGYQf6ZUaNfKdP144TG7ZOy1lc= -github.com/pascaldekloe/goe v0.1.0/go.mod h1:lzWF7FIEvWOWxwDKqyGYQf6ZUaNfKdP144TG7ZOy1lc= github.com/pborman/uuid v1.2.1 h1:+ZZIw58t/ozdjRaXh/3awHfmWRbzYxJoAdNJxe/3pvw= github.com/pborman/uuid v1.2.1/go.mod h1:X/NO0urCmaxf9VXbdlT7C2Yzkj2IKimNn4k+gtPdI/k= github.com/pelletier/go-toml v1.2.0/go.mod h1:5z9KED0ma1S8pY6P1sdut58dfprrGBbd/94hg7ilaic= @@ -982,7 +939,6 @@ github.com/pkg/sftp v1.10.1/go.mod h1:lYOWFsE0bwd1+KfKJaKeuokY15vzFx25BLbzYYoAxZ github.com/pmezard/go-difflib v1.0.0 h1:4DBwDE0NGyQoBHbLQYPwSUPoCMWR5BEzIk/f1lZbAQM= github.com/pmezard/go-difflib v1.0.0/go.mod h1:iKH77koFhYxTK1pcRnkKkqfTogsbg7gZNVY4sRDYZ/4= github.com/posener/complete v1.1.1/go.mod h1:em0nMJCgc9GFtwrmVmEMR/ZL6WyhyjMBndrE9hABlRI= -github.com/posener/complete v1.2.3/go.mod h1:WZIdtGGp+qx0sLrYKtIRAruyNpv6hFCicSgv7Sy7s/s= github.com/power-devops/perfstat v0.0.0-20210106213030-5aafc221ea8c h1:ncq/mPwQF4JjgDlrVEn3C11VoGHZN7m8qihwgMEtzYw= github.com/power-devops/perfstat v0.0.0-20210106213030-5aafc221ea8c/go.mod h1:OmDBASR4679mdNQnz2pUhc2G8CO2JrUAVFDRBDP/hJE= github.com/pquerna/cachecontrol v0.0.0-20171018203845-0dec1b30a021/go.mod h1:prYjPmNq4d1NPVmpShWobRqXY3q7Vp+80DqgxxUrUIA= @@ -991,7 +947,6 @@ github.com/prometheus/client_golang v0.9.1/go.mod h1:7SWBe2y4D6OKWSNQJUaRYU/AaXP github.com/prometheus/client_golang v0.9.3/go.mod h1:/TN21ttK/J9q6uSwhBd54HahCDft0ttaMvbicHlPoso= github.com/prometheus/client_golang v1.0.0/go.mod h1:db9x61etRT2tGnBNRi70OPL5FsnadC4Ky3P0J6CfImo= github.com/prometheus/client_golang v1.1.0/go.mod h1:I1FGZT9+L76gKKOs5djB6ezCbFQP1xR9D75/vuwEF3g= -github.com/prometheus/client_golang v1.4.0/go.mod h1:e9GMxYsXl05ICDXkRhurwBS4Q3OK1iX/F2sw+iXX5zU= github.com/prometheus/client_golang v1.5.1/go.mod h1:e9GMxYsXl05ICDXkRhurwBS4Q3OK1iX/F2sw+iXX5zU= github.com/prometheus/client_golang v1.7.1/go.mod h1:PY5Wy2awLA44sXw4AOSfFBetzPP4j5+D6mVACh+pe2M= github.com/prometheus/client_golang v1.11.0 h1:HNkLOAEQMIDv/K+04rukrLx6ch7msSRwf3/SASFAGtQ= @@ -1042,8 +997,6 @@ github.com/ruudk/golang-pdf417 v0.0.0-20181029194003-1af4ab5afa58/go.mod h1:6lfF github.com/ruudk/golang-pdf417 v0.0.0-20201230142125-a7e3863a1245/go.mod h1:pQAZKsJ8yyVxGRWYNEm9oFB8ieLgKFnamEyDmSA0BRk= github.com/ryanuber/columnize v0.0.0-20160712163229-9b3edd62028f/go.mod h1:sm1tb6uqfes/u+d4ooFouqFdy9/2g9QGwK3SQygK0Ts= github.com/safchain/ethtool v0.0.0-20190326074333-42ed695e3de8/go.mod h1:Z0q5wiBQGYcxhMZ6gUqHn6pYNLypFAvaL3UvgZLR0U4= -github.com/sagikazarmark/crypt v0.3.0/go.mod h1:uD/D+6UF4SrIR1uGEv7bBNkNqLGqUr43MRiaGWX1Nig= -github.com/sagikazarmark/crypt v0.4.0/go.mod h1:ALv2SRj7GxYV4HO9elxH9nS6M9gW+xDNxqmyJ6RfDFM= github.com/santhosh-tekuri/jsonschema/v5 v5.0.0 h1:TToq11gyfNlrMFZiYujSekIsPd9AmsA2Bj/iv+s4JHE= github.com/santhosh-tekuri/jsonschema/v5 v5.0.0/go.mod h1:FKdcjfQW6rpZSnxxUvEA5H/cDPdvJ/SZJQLWWXWGrZ0= github.com/satori/go.uuid v1.2.0/go.mod h1:dA0hQrYB0VpLJoorglMZABFdXlWrHn1NEOzdhQKdks0= @@ -1052,8 +1005,8 @@ github.com/sayboras/dockerclient v1.0.0/go.mod h1:mUmEoqt0b+uQg57s006FsvL4mybi+N github.com/sean-/seed v0.0.0-20170313163322-e2103e2c3529/go.mod h1:DxrIzT+xaE7yg65j358z/aeFdxmN0P9QXhEzd20vsDc= github.com/seccomp/libseccomp-golang v0.9.1/go.mod h1:GbW5+tmTXfcxTToHLXlScSlAvWlF4P2Ca7zGrPiEpWo= github.com/sergi/go-diff v1.1.0/go.mod h1:STckp+ISIX8hZLjrqAeVduY0gWCT9IjLuqbuNXdaHfM= -github.com/shirou/gopsutil/v3 v3.22.1 h1:33y31Q8J32+KstqPfscvFwBlNJ6xLaBy4xqBXzlYV5w= -github.com/shirou/gopsutil/v3 v3.22.1/go.mod h1:WapW1AOOPlHyXr+yOyw3uYx36enocrtSoSBy0L5vUHY= +github.com/shirou/gopsutil/v3 v3.22.3 h1:UebRzEomgMpv61e3hgD1tGooqX5trFbdU/ehphbHd00= +github.com/shirou/gopsutil/v3 v3.22.3/go.mod h1:D01hZJ4pVHPpCTZ3m3T2+wDF2YAGfd+H4ifUguaQzHM= github.com/shurcooL/sanitized_anchor_name v1.0.0/go.mod h1:1NzhyTcUVG4SuEtjjoZeVRXNmyL/1OwPU0+IJeTBvfc= github.com/sirupsen/logrus v1.0.4-0.20170822132746-89742aefa4b2/go.mod h1:pMByvHTf9Beacp5x1UXfOR9xyW/9antXMhjMPG0dEzc= github.com/sirupsen/logrus v1.0.6/go.mod h1:pMByvHTf9Beacp5x1UXfOR9xyW/9antXMhjMPG0dEzc= @@ -1065,14 +1018,16 @@ github.com/sirupsen/logrus v1.6.0/go.mod h1:7uNnSEd1DgxDLC74fIahvMZmmYsHGZGEOFrf github.com/sirupsen/logrus v1.7.0/go.mod h1:yWOB1SBYBC5VeMP7gHvWumXLIWorT60ONWic61uBYv0= github.com/sirupsen/logrus v1.8.1 h1:dJKuHgqk1NNQlqoA6BTlM1Wf9DOH3NBjQyu0h9+AZZE= github.com/sirupsen/logrus v1.8.1/go.mod h1:yWOB1SBYBC5VeMP7gHvWumXLIWorT60ONWic61uBYv0= +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/goconvey v0.0.0-20190330032615-68dc04aab96a/go.mod h1:syvi0/a8iFYH4r/RixwvyeAJjdLS9QV7WQ/tjFTllLA= github.com/smartystreets/goconvey v1.6.4/go.mod h1:syvi0/a8iFYH4r/RixwvyeAJjdLS9QV7WQ/tjFTllLA= +github.com/smartystreets/goconvey v1.6.7 h1:I6tZjLXD2Q1kjvNbIzB1wvQBsXmKXiVrhpRE8ZjP5jY= +github.com/smartystreets/goconvey v1.6.7/go.mod h1:syvi0/a8iFYH4r/RixwvyeAJjdLS9QV7WQ/tjFTllLA= github.com/soheilhy/cmux v0.1.4/go.mod h1:IM3LyeVVIOuxMH7sFAkER9+bJ4dT7Ms6E4xg4kGIyLM= github.com/spaolacci/murmur3 v0.0.0-20180118202830-f09979ecbc72/go.mod h1:JwIasOWyU6f++ZhiEuf87xNszmSA2myDM2Kzu9HwQUA= github.com/spf13/afero v1.1.2/go.mod h1:j4pytiNVoe2o6bmDsKpLACNPDBIoEAkihy7loJ1B0CQ= github.com/spf13/afero v1.2.2/go.mod h1:9ZxEEn6pIJ8Rxe320qSDBk6AsU0r9pR7Q4OcevTdifk= -github.com/spf13/afero v1.3.3/go.mod h1:5KUK8ByomD5Ti5Artl0RtHeI5pTF7MIDuXL3yY520V4= github.com/spf13/afero v1.6.0 h1:xoax2sJ2DT8S8xA2paPFjDCScCNeWsg75VG0DLRreiY= github.com/spf13/afero v1.6.0/go.mod h1:Ai8FlHk4v/PARR026UzYexafAt9roJ7LcLMAmO6Z93I= github.com/spf13/cast v1.3.0/go.mod h1:Qx5cxh0v+4UWYiBimWS+eyWzqEqokIECu5etghLkUJE= @@ -1082,10 +1037,9 @@ github.com/spf13/cast v1.4.1/go.mod h1:Qx5cxh0v+4UWYiBimWS+eyWzqEqokIECu5etghLkU github.com/spf13/cobra v0.0.2-0.20171109065643-2da4a54c5cee/go.mod h1:1l0Ry5zgKvJasoi3XT1TypsSe7PqH0Sj9dhYf7v3XqQ= github.com/spf13/cobra v0.0.3/go.mod h1:1l0Ry5zgKvJasoi3XT1TypsSe7PqH0Sj9dhYf7v3XqQ= github.com/spf13/cobra v1.0.0/go.mod h1:/6GTrnGXV9HjY+aR4k0oJ5tcvakLuG6EuKReYlHNrgE= -github.com/spf13/cobra v1.1.3/go.mod h1:pGADOWyqRD/YMrPZigI/zbliZ2wVD/23d+is3pSWzOo= github.com/spf13/cobra v1.2.1/go.mod h1:ExllRjgxM/piMAM+3tAZvg8fsklGAf3tPfi+i8t68Nk= -github.com/spf13/cobra v1.3.0 h1:R7cSvGu+Vv+qX0gW5R/85dx2kmmJT5z5NM8ifdYjdn0= -github.com/spf13/cobra v1.3.0/go.mod h1:BrRVncBjOJa/eUcVVm9CE+oC6as8k+VYr4NY7WCi9V4= +github.com/spf13/cobra v1.4.0 h1:y+wJpx64xcgO1V+RcnwW0LEHxTKRi2ZDPSBjWnrg88Q= +github.com/spf13/cobra v1.4.0/go.mod h1:Wo4iy3BUC+X2Fybo0PDqwJIv3dNRiZLHQymsfxlB84g= 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= @@ -1096,9 +1050,7 @@ github.com/spf13/pflag v1.0.3/go.mod h1:DYY7MBk1bdzusC3SYhjObp+wFpr4gzcvqqNjLnIn 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.4.0/go.mod h1:PTJ7Z/lr49W6bUbkmS1V3by4uWynFiR9p7+dSq/yZzE= -github.com/spf13/viper v1.7.0/go.mod h1:8WkrPz2fc9jxqZNCJI/76HCieCp4Q8HaLFoCha5qpdg= github.com/spf13/viper v1.8.1/go.mod h1:o0Pch8wJ9BVSWGQMbra6iw0oQ5oktSIBaujf1rJH9Ns= -github.com/spf13/viper v1.10.0/go.mod h1:SoyBPwAtKDzypXNDFKN5kzH7ppppbGZtls1UpIy5AsM= github.com/spf13/viper v1.10.1 h1:nuJZuYpG7gTj/XqiUwg8bA0cp1+M2mC3J4g5luUYBKk= github.com/spf13/viper v1.10.1/go.mod h1:IGlFPqhNAPKRxohIzWpI5QEy4kuI7tcl5WvR+8qy1rU= github.com/stefanberger/go-pkcs11uri v0.0.0-20201008174630-78d3cae3a980/go.mod h1:AO3tvPzVZ/ayst6UlUKUv6rcPQInYe3IknH3jYhAKu8= @@ -1113,8 +1065,9 @@ github.com/stretchr/testify v1.3.0/go.mod h1:M5WIy9Dh21IEIfnGCwXGc5bZfKNJtfHm1UV github.com/stretchr/testify v1.4.0/go.mod h1:j7eGeouHqKxXV5pUuKE4zz7dFj8WfuZ+81PSLYec5m4= github.com/stretchr/testify v1.5.1/go.mod h1:5W2xD1RspED5o8YsWQXVCued0rvSQ+mT+I5cxcmMvtA= github.com/stretchr/testify v1.6.1/go.mod h1:6Fq8oRcR53rry900zMqJjRRixrwX3KX962/h/Wwjteg= -github.com/stretchr/testify v1.7.0 h1:nwc3DEeHmmLAfoZucVR881uASk0Mfjw8xYJ99tb5CcY= github.com/stretchr/testify v1.7.0/go.mod h1:6Fq8oRcR53rry900zMqJjRRixrwX3KX962/h/Wwjteg= +github.com/stretchr/testify v1.7.1 h1:5TQK59W5E3v0r2duFAb7P95B6hEeOyEnHRa8MjYSMTY= +github.com/stretchr/testify v1.7.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-20170704070218-db04d3cc01c8/go.mod h1:hkRG7XYTFWNJGYcbNJQlaLq0fg1yr4J4t/NcTQtrfww= @@ -1122,13 +1075,12 @@ github.com/syndtr/gocapability v0.0.0-20180916011248-d98352740cb2/go.mod h1:hkRG github.com/syndtr/gocapability v0.0.0-20200815063812-42c35b437635/go.mod h1:hkRG7XYTFWNJGYcbNJQlaLq0fg1yr4J4t/NcTQtrfww= github.com/tarm/serial v0.0.0-20180830185346-98f6abe2eb07/go.mod h1:kDXzergiv9cbyO7IOYJZWg1U88JhDg3PB6klq9Hg2pA= github.com/tchap/go-patricia v2.2.6+incompatible/go.mod h1:bmLyhP68RS6kStMGxByiQ23RP/odRBOTVjwp2cDyi6I= -github.com/tklauser/go-sysconf v0.3.9 h1:JeUVdAOWhhxVcU6Eqr/ATFHgXk/mmiItdKeJPev3vTo= -github.com/tklauser/go-sysconf v0.3.9/go.mod h1:11DU/5sG7UexIrp/O6g35hrWzu0JxlwQ3LSFUzyeuhs= -github.com/tklauser/numcpus v0.3.0 h1:ILuRUQBtssgnxw0XXIjKUC56fgnOrFoQQ/4+DeU2biQ= -github.com/tklauser/numcpus v0.3.0/go.mod h1:yFGUr7TUHQRAhyqBcEg0Ge34zDBAsIvJJcyE6boqnA8= +github.com/tklauser/go-sysconf v0.3.10 h1:IJ1AZGZRWbY8T5Vfk04D9WOA5WSejdflXxP03OUqALw= +github.com/tklauser/go-sysconf v0.3.10/go.mod h1:C8XykCvCb+Gn0oNCWPIlcb0RuglQTYaQ2hGm7jmxEFk= +github.com/tklauser/numcpus v0.4.0 h1:E53Dm1HjH1/R2/aoCtXtPgzmElmn51aOkhCFSuZq//o= +github.com/tklauser/numcpus v0.4.0/go.mod h1:1+UI3pD8NW14VMwdgJNJ1ESk2UnwhAnz5hMwiKKqXCQ= github.com/tmc/grpc-websocket-proxy v0.0.0-20170815181823-89b8d40f7ca8/go.mod h1:ncp9v5uamzpCO7NfCPTXjqaC+bZgJeR0sMTm6dMHP7U= github.com/tmc/grpc-websocket-proxy v0.0.0-20190109142713-0ad062ec5ee5/go.mod h1:ncp9v5uamzpCO7NfCPTXjqaC+bZgJeR0sMTm6dMHP7U= -github.com/tv42/httpunix v0.0.0-20150427012821-b75d8614f926/go.mod h1:9ESjWnEqriFuLhtthL60Sar/7RFoluCcXsuvEwTV5KM= github.com/ugorji/go v1.1.4/go.mod h1:uQMGLiO92mf5W77hV/PUCpI3pbzQx3CRekS0kk+RGrc= github.com/ulikunitz/xz v0.5.8 h1:ERv8V6GKqVi23rgu5cj9pVfVzJbOqAY2Ntl88O6c2nQ= github.com/ulikunitz/xz v0.5.8/go.mod h1:nbz6k7qbPmH4IRqmfOplQw/tblSgqTqBwxkY0oWt/14= @@ -1173,11 +1125,8 @@ go.etcd.io/bbolt v1.3.3/go.mod h1:IbVyRI1SCnLcuJnV2u8VeU0CEYM7e686BmAb1XKL+uU= go.etcd.io/bbolt v1.3.5/go.mod h1:G5EMThwa9y8QZGBClrRx5EY+Yw9kAhnjy3bSjsnlVTQ= go.etcd.io/etcd v0.5.0-alpha.5.0.20200910180754-dd1b699fc489/go.mod h1:yVHk9ub3CSBatqGNg7GRmsnfLWtoW60w4eDYfh7vHDg= go.etcd.io/etcd/api/v3 v3.5.0/go.mod h1:cbVKeC6lCfl7j/8jBhAK6aIYO9XOjdptoxU/nLQcPvs= -go.etcd.io/etcd/api/v3 v3.5.1/go.mod h1:cbVKeC6lCfl7j/8jBhAK6aIYO9XOjdptoxU/nLQcPvs= go.etcd.io/etcd/client/pkg/v3 v3.5.0/go.mod h1:IJHfcCEKxYu1Os13ZdwCwIUTUVGYTSAM3YSwc9/Ac1g= -go.etcd.io/etcd/client/pkg/v3 v3.5.1/go.mod h1:IJHfcCEKxYu1Os13ZdwCwIUTUVGYTSAM3YSwc9/Ac1g= go.etcd.io/etcd/client/v2 v2.305.0/go.mod h1:h9puh54ZTgAKtEbut2oe9P4L/oqKCVB6xsXlzd7alYQ= -go.etcd.io/etcd/client/v2 v2.305.1/go.mod h1:pMEacxZW7o8pg4CrFE7pquyCJJzZvkvdD2RibOCCCGs= go.mozilla.org/pkcs7 v0.0.0-20200128120323-432b2356ecb1/go.mod h1:SNgMg+EgDFwmvSmLRTNKC5fegJjB7v23qTQ0XLGUNHk= go.opencensus.io v0.21.0/go.mod h1:mSImk1erAIZhrmZN+AvHh14ztQfjbGwt4TtuofqLduU= go.opencensus.io v0.22.0/go.mod h1:+kGneAE2xo2IficOXnaByMWTGM9T73dGwxeWcUqIpI8= @@ -1190,35 +1139,33 @@ go.opencensus.io v0.23.0/go.mod h1:XItmlyltB5F7CS4xOC1DcqMoFqwtC6OG2xF7mCv7P7E= go.opentelemetry.io/contrib v0.20.0 h1:ubFQUn0VCZ0gPwIoJfBJVpeBlyRMxu8Mm/huKWYd9p0= go.opentelemetry.io/contrib v0.20.0/go.mod h1:G/EtFaa6qaN7+LxqfIAT3GiZa7Wv5DTBUzl5H4LY0Kc= go.opentelemetry.io/contrib/instrumentation/net/http/otelhttp v0.20.0/go.mod h1:2AboqHi0CiIZU0qwhtUfCYD1GeUzvvIXWNkhDt7ZMG4= -go.opentelemetry.io/contrib/instrumentation/net/http/otelhttp v0.24.0 h1:qW6j1kJU24yo2xIu16Py4m4AXn1dd+s2uKllGnTFAm0= -go.opentelemetry.io/contrib/instrumentation/net/http/otelhttp v0.24.0/go.mod h1:7W3JSDYTtH3qKKHrS1fMiwLtK7iZFLPq1+7htfspX/E= +go.opentelemetry.io/contrib/instrumentation/net/http/otelhttp v0.26.0 h1:sdwza9BScvbOFaZLhvKDQc54vQ8CWM8jD9BO2t+rP4E= +go.opentelemetry.io/contrib/instrumentation/net/http/otelhttp v0.26.0/go.mod h1:4vatbW3QwS11DK0H0SB7FR31/VbthXcYorswdkVXdyg= go.opentelemetry.io/otel v0.20.0/go.mod h1:Y3ugLH2oa81t5QO+Lty+zXf8zC9L26ax4Nzoxm/dooo= -go.opentelemetry.io/otel v1.0.0-RC3/go.mod h1:Ka5j3ua8tZs4Rkq4Ex3hwgBgOchyPVq5S6P2lz//nKQ= -go.opentelemetry.io/otel v1.0.0/go.mod h1:AjRVh9A5/5DE7S+mZtTR6t8vpKKryam+0lREnfmS4cg= go.opentelemetry.io/otel v1.0.1/go.mod h1:OPEOD4jIT2SlZPMmwT6FqZz2C0ZNdQqiWcoK6M0SNFU= -go.opentelemetry.io/otel v1.4.0/go.mod h1:jeAqMFKy2uLIxCtKxoFj0FAL5zAPKQagc3+GtBWakzk= -go.opentelemetry.io/otel v1.4.1 h1:QbINgGDDcoQUoMJa2mMaWno49lja9sHwp6aoa2n3a4g= -go.opentelemetry.io/otel v1.4.1/go.mod h1:StM6F/0fSwpd8dKWDCdRr7uRvEPYdW0hBSlbdTiUde4= +go.opentelemetry.io/otel v1.1.0/go.mod h1:7cww0OW51jQ8IaZChIEdqLwgh+44+7uiTdWsAL0wQpA= +go.opentelemetry.io/otel v1.3.0/go.mod h1:PWIKzi6JCp7sM0k9yZ43VX+T345uNbAkDKwHVjb2PTs= +go.opentelemetry.io/otel v1.6.1 h1:6r1YrcTenBvYa1x491d0GGpTVBsNECmrc/K6b+zDeis= +go.opentelemetry.io/otel v1.6.1/go.mod h1:blzUabWHkX6LJewxvadmzafgh/wnvBSDBdOuwkAtrWQ= go.opentelemetry.io/otel/exporters/otlp v0.20.0/go.mod h1:YIieizyaN77rtLJra0buKiNBOm9XQfkPEKBeuhoMwAM= -go.opentelemetry.io/otel/internal/metric v0.23.0 h1:mPfzm9Iqhw7G2nDBmUAjFTfPqLZPbOW2k7QI57ITbaI= -go.opentelemetry.io/otel/internal/metric v0.23.0/go.mod h1:z+RPiDJe30YnCrOhFGivwBS+DU1JU/PiLKkk4re2DNY= +go.opentelemetry.io/otel/internal/metric v0.24.0 h1:O5lFy6kAl0LMWBjzy3k//M8VjEaTDWL9DPJuqZmWIAA= +go.opentelemetry.io/otel/internal/metric v0.24.0/go.mod h1:PSkQG+KuApZjBpC6ea6082ZrWUUy/w132tJ/LOU3TXk= go.opentelemetry.io/otel/metric v0.20.0/go.mod h1:598I5tYlH1vzBjn+BTuhzTCSb/9debfNp6R3s7Pr1eU= -go.opentelemetry.io/otel/metric v0.23.0 h1:mYCcDxi60P4T27/0jchIDFa1WHEfQeU3zH9UEMpnj2c= -go.opentelemetry.io/otel/metric v0.23.0/go.mod h1:G/Nn9InyNnIv7J6YVkQfpc0JCfKBNJaERBGw08nqmVQ= +go.opentelemetry.io/otel/metric v0.24.0 h1:Rg4UYHS6JKR1Sw1TxnI13z7q/0p/XAbgIqUTagvLJuU= +go.opentelemetry.io/otel/metric v0.24.0/go.mod h1:tpMFnCD9t+BEGiWY2bWF5+AwjuAdM0lSowQ4SBA3/K4= go.opentelemetry.io/otel/oteltest v0.20.0/go.mod h1:L7bgKf9ZB7qCwT9Up7i9/pn0PWIa9FqQ2IQ8LoxiGnw= go.opentelemetry.io/otel/sdk v0.20.0/go.mod h1:g/IcepuwNsoiX5Byy2nNV0ySUF1em498m7hBWC279Yc= -go.opentelemetry.io/otel/sdk v1.0.1/go.mod h1:HrdXne+BiwsOHYYkBE5ysIcv2bvdZstxzmCQhxTcZkI= -go.opentelemetry.io/otel/sdk v1.4.0 h1:LJE4SW3jd4lQTESnlpQZcBhQ3oci0U2MLR5uhicfTHQ= -go.opentelemetry.io/otel/sdk v1.4.0/go.mod h1:71GJPNJh4Qju6zJuYl1CrYtXbrgfau/M9UAggqiy1UE= +go.opentelemetry.io/otel/sdk v1.3.0/go.mod h1:rIo4suHNhQwBIPg9axF8V9CA72Wz2mKF1teNrup8yzs= +go.opentelemetry.io/otel/sdk v1.6.1 h1:ZmcNyMhcuAYIb/Nr6QhBPTMopMTbov/47wHt1gibkoY= +go.opentelemetry.io/otel/sdk v1.6.1/go.mod h1:IVYrddmFZ+eJqu2k38qD3WezFR2pymCzm8tdxyh3R4E= go.opentelemetry.io/otel/sdk/export/metric v0.20.0/go.mod h1:h7RBNMsDJ5pmI1zExLi+bJK+Dr8NQCh0qGhm1KDnNlE= go.opentelemetry.io/otel/sdk/metric v0.20.0/go.mod h1:knxiS8Xd4E/N+ZqKmUPf3gTTZ4/0TjTXukfxjzSTpHE= go.opentelemetry.io/otel/trace v0.20.0/go.mod h1:6GjCW8zgDjwGHGa6GkyeB8+/5vjT16gUEi0Nf1iBdgw= -go.opentelemetry.io/otel/trace v1.0.0-RC3/go.mod h1:VUt2TUYd8S2/ZRX09ZDFZQwn2RqfMB5MzO17jBojGxo= -go.opentelemetry.io/otel/trace v1.0.0/go.mod h1:PXTWqayeFUlJV1YDNhsJYB184+IvAH814St6o6ajzIs= go.opentelemetry.io/otel/trace v1.0.1/go.mod h1:5g4i4fKLaX2BQpSBsxw8YYcgKpMMSW3x7ZTuYBr3sUk= -go.opentelemetry.io/otel/trace v1.4.0/go.mod h1:uc3eRsqDfWs9R7b92xbQbU42/eTNz4N+gLP8qJCi4aE= -go.opentelemetry.io/otel/trace v1.4.1 h1:O+16qcdTrT7zxv2J6GejTPFinSwA++cYerC5iSiF8EQ= -go.opentelemetry.io/otel/trace v1.4.1/go.mod h1:iYEVbroFCNut9QkwEczV9vMRPHNKSSwYZjulEtsmhFc= +go.opentelemetry.io/otel/trace v1.1.0/go.mod h1:i47XtdcBQiktu5IsrPqOHe8w+sBmnLwwHt8wiUsWGTI= +go.opentelemetry.io/otel/trace v1.3.0/go.mod h1:c/VDhno8888bvQYmbYLqe41/Ldmr/KKunbvWM4/fEjk= +go.opentelemetry.io/otel/trace v1.6.1 h1:f8c93l5tboBYZna1nWk0W9DYyMzJXDWdZcJZ0Kb400U= +go.opentelemetry.io/otel/trace v1.6.1/go.mod h1:RkFRM1m0puWIq10oxImnGEduNBzxiN7TXluRBtE+5j0= go.opentelemetry.io/proto/otlp v0.7.0/go.mod h1:PqfVotwruBrMGOCsRd/89rSnXhoiJIqeYNgFYFoEGnI= go.starlark.net v0.0.0-20200306205701-8dd3e2ee1dd5/go.mod h1:nmDLcffg48OtT/PSW0Hg7FvpRQsQh5OSqIylirxKC7o= go.uber.org/atomic v1.3.2/go.mod h1:gD2HeocX3+yG+ygLZcrzQJaqmWj9AIm7n08wl/qW/PE= @@ -1249,7 +1196,6 @@ golang.org/x/crypto v0.0.0-20190605123033-f99c8df09eb5/go.mod h1:yigFU9vqHzYiE8U golang.org/x/crypto v0.0.0-20190611184440-5c40567a22f8/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI= golang.org/x/crypto v0.0.0-20190701094942-4def268fd1a4/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI= golang.org/x/crypto v0.0.0-20190820162420-60c769a6c586/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI= -golang.org/x/crypto v0.0.0-20190923035154-9ee001bba392/go.mod h1:/lpIB1dKB+9EgE3H3cr1v9wB50oz8l4C4h62xy7jSTY= golang.org/x/crypto v0.0.0-20191011191535-87dc89f01550/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI= golang.org/x/crypto v0.0.0-20191206172530-e9b2fee46413/go.mod h1:LzIPMQfyMNhhGPhUkYOs5KpL4U8rLKemX1yGLhDgUto= golang.org/x/crypto v0.0.0-20200622213623-75b288015ac9/go.mod h1:LzIPMQfyMNhhGPhUkYOs5KpL4U8rLKemX1yGLhDgUto= @@ -1260,15 +1206,11 @@ golang.org/x/crypto v0.0.0-20210220033148-5ea612d1eb83/go.mod h1:jdWPYTVW3xRLrWP golang.org/x/crypto v0.0.0-20210322153248-0c34fe9e7dc2/go.mod h1:T9bdIzuCu7OtxOm1hfPfRQxPLYneinmdGuTeoZ9dtd4= golang.org/x/crypto v0.0.0-20210817164053-32db794688a5 h1:HWj/xjIHfjYU5nVXpTM0s39J9CbLn7Cc5a7IC5rwsMQ= golang.org/x/crypto v0.0.0-20210817164053-32db794688a5/go.mod h1:GvvjBRRGRdwPK5ydBHafDWAxML/pGHZbMvKqRZ5+Abc= -golang.org/x/exp v0.0.0-20180321215751-8460e604b9de/go.mod h1:CJ0aWSM057203Lf6IL+f9T1iT9GByDxfZKAQTCR3kQA= -golang.org/x/exp v0.0.0-20180807140117-3d87b88a115f/go.mod h1:CJ0aWSM057203Lf6IL+f9T1iT9GByDxfZKAQTCR3kQA= golang.org/x/exp v0.0.0-20190121172915-509febef88a4/go.mod h1:CJ0aWSM057203Lf6IL+f9T1iT9GByDxfZKAQTCR3kQA= -golang.org/x/exp v0.0.0-20190125153040-c74c464bbbf2/go.mod h1:CJ0aWSM057203Lf6IL+f9T1iT9GByDxfZKAQTCR3kQA= golang.org/x/exp v0.0.0-20190306152737-a1d7652674e8/go.mod h1:CJ0aWSM057203Lf6IL+f9T1iT9GByDxfZKAQTCR3kQA= golang.org/x/exp v0.0.0-20190510132918-efd6b22b2522/go.mod h1:ZjyILWgesfNpC6sMxTJOJm9Kp84zZh5NQWvqDGG3Qr8= golang.org/x/exp v0.0.0-20190731235908-ec7cb31e5a56/go.mod h1:JhuoJpWY28nO4Vef9tZUw9qufEGTyX1+7lmHxV5q5G4= golang.org/x/exp v0.0.0-20190829153037-c13cbed26979/go.mod h1:86+5VVa7VpoJ4kLfm080zCjGlMRFzhUhsZKEZO7MGek= -golang.org/x/exp v0.0.0-20191002040644-a1355ae1e2c3/go.mod h1:NOZ3BPKG0ec/BKJQgnvsSFpcKLM5xXVWnvZS97DWHgE= golang.org/x/exp v0.0.0-20191030013958-a1ab85dbe136/go.mod h1:JXzH8nQsPlswgeRAPE3MuO9GYsAcnJvJ4vnMwN/5qkY= golang.org/x/exp v0.0.0-20191129062945-2f5052295587/go.mod h1:2RIsYlXP63K8oxa1u096TMicItID8zy7Y6sNkU49FU4= golang.org/x/exp v0.0.0-20191227195350-da58074b4299/go.mod h1:2RIsYlXP63K8oxa1u096TMicItID8zy7Y6sNkU49FU4= @@ -1277,18 +1219,17 @@ golang.org/x/exp v0.0.0-20200207192155-f17229e696bd/go.mod h1:J/WKrq2StrnmMY6+EH golang.org/x/exp v0.0.0-20200224162631-6cc2880d07d6/go.mod h1:3jZMyOhIsHpP37uCMkUooju7aAi5cS1Q23tOzKc+0MU= golang.org/x/exp v0.0.0-20210220032938-85be41e4509f h1:GrkO5AtFUU9U/1f5ctbIBXtBGeSJbWwIYfIsTcFMaX4= golang.org/x/exp v0.0.0-20210220032938-85be41e4509f/go.mod h1:I6l2HNBLBZEcrOoCpyKLdY2lHoRZ8lI4x60KMCQDft4= -golang.org/x/image v0.0.0-20180708004352-c73c2afc3b81/go.mod h1:ux5Hcp/YLpHSI86hEcLt0YII63i6oz57MZXIpbrjZUs= golang.org/x/image v0.0.0-20190227222117-0694c2d4d067/go.mod h1:kZ7UVZpmo3dzQBMxlp+ypCbDeSB+sBbTgSJuh5dn5js= golang.org/x/image v0.0.0-20190802002840-cff245a6509b/go.mod h1:FeLwcggjj3mMvU+oOTbSwawSJRM1uh48EjtB4UJZlP0= golang.org/x/image v0.0.0-20190910094157-69e4b8554b2a/go.mod h1:FeLwcggjj3mMvU+oOTbSwawSJRM1uh48EjtB4UJZlP0= golang.org/x/image v0.0.0-20200119044424-58c23975cae1/go.mod h1:FeLwcggjj3mMvU+oOTbSwawSJRM1uh48EjtB4UJZlP0= golang.org/x/image v0.0.0-20200430140353-33d19683fad8/go.mod h1:FeLwcggjj3mMvU+oOTbSwawSJRM1uh48EjtB4UJZlP0= -golang.org/x/image v0.0.0-20200618115811-c13761719519/go.mod h1:FeLwcggjj3mMvU+oOTbSwawSJRM1uh48EjtB4UJZlP0= golang.org/x/image v0.0.0-20201208152932-35266b937fa6/go.mod h1:FeLwcggjj3mMvU+oOTbSwawSJRM1uh48EjtB4UJZlP0= -golang.org/x/image v0.0.0-20210216034530-4410531fe030/go.mod h1:FeLwcggjj3mMvU+oOTbSwawSJRM1uh48EjtB4UJZlP0= golang.org/x/image v0.0.0-20210607152325-775e3b0c77b9/go.mod h1:023OzeP/+EPmXeapQh35lcL3II3LrY8Ic+EFFKVhULM= -golang.org/x/image v0.0.0-20210628002857-a66eb6448b8d h1:RNPAfi2nHY7C2srAV8A49jpsYr0ADedCk1wq6fTMTvs= golang.org/x/image v0.0.0-20210628002857-a66eb6448b8d/go.mod h1:023OzeP/+EPmXeapQh35lcL3II3LrY8Ic+EFFKVhULM= +golang.org/x/image v0.0.0-20211028202545-6944b10bf410/go.mod h1:023OzeP/+EPmXeapQh35lcL3II3LrY8Ic+EFFKVhULM= +golang.org/x/image v0.0.0-20220302094943-723b81ca9867 h1:TcHcE0vrmgzNH1v3ppjcMGbhG5+9fMuvOmUYwNEF4q4= +golang.org/x/image v0.0.0-20220302094943-723b81ca9867/go.mod h1:023OzeP/+EPmXeapQh35lcL3II3LrY8Ic+EFFKVhULM= golang.org/x/lint v0.0.0-20181026193005-c67002cb31c3/go.mod h1:UVdnD1Gm6xHRNCYTkRU2/jEulfH38KcIWyp/GAMgvoE= golang.org/x/lint v0.0.0-20190227174305-5b3e6a55c961/go.mod h1:wehouNa3lNwaWXcvxsM5YxQ5yQlVC4a0KAMCusXpPoU= golang.org/x/lint v0.0.0-20190301231843-5614ed5bae6f/go.mod h1:UVdnD1Gm6xHRNCYTkRU2/jEulfH38KcIWyp/GAMgvoE= @@ -1316,7 +1257,6 @@ golang.org/x/mod v0.3.1-0.20200828183125-ce943fd02449/go.mod h1:s0Qsj1ACt9ePp/hM golang.org/x/mod v0.4.0/go.mod h1:s0Qsj1ACt9ePp/hMypM3fl4fZqREWJwdYDEqhRiZZUA= golang.org/x/mod v0.4.1/go.mod h1:s0Qsj1ACt9ePp/hMypM3fl4fZqREWJwdYDEqhRiZZUA= golang.org/x/mod v0.4.2/go.mod h1:s0Qsj1ACt9ePp/hMypM3fl4fZqREWJwdYDEqhRiZZUA= -golang.org/x/mod v0.5.0/go.mod h1:5OXOZSfqPIIbmVBIIKWRFfZjPR0E5r58TLhUjH0a2Ro= golang.org/x/mod v0.5.1 h1:OJxoQ/rynoF0dcCdI7cLPktw/hR2cueqYfjm43oqK38= golang.org/x/mod v0.5.1/go.mod h1:5OXOZSfqPIIbmVBIIKWRFfZjPR0E5r58TLhUjH0a2Ro= golang.org/x/net v0.0.0-20180724234803-3673e40ba225/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= @@ -1371,17 +1311,15 @@ golang.org/x/net v0.0.0-20210119194325-5f4716e94777/go.mod h1:m0MpNAwzfU5UDzcl9v golang.org/x/net v0.0.0-20210226172049-e18ecbb05110/go.mod h1:m0MpNAwzfU5UDzcl9v0D8zg8gWTRqZa9RBIspLL5mdg= golang.org/x/net v0.0.0-20210316092652-d523dce5a7f4/go.mod h1:RBQZq4jEuRlivfhVLdyRGr576XBO4/greRjx4P4O3yc= golang.org/x/net v0.0.0-20210405180319-a5a99cb37ef4/go.mod h1:p54w0d4576C0XHj96bSt6lcn1PtDYWL6XObtHCRCNQM= -golang.org/x/net v0.0.0-20210410081132-afb366fc7cd1/go.mod h1:9tjilg8BloeKEkVJvy7fQ90B1CfIiPueXVOjqfkSzI8= golang.org/x/net v0.0.0-20210503060351-7fd8e65b6420/go.mod h1:9nx3DQGgdP8bBQD5qxJ1jj9UTztislL4KSBs9R2vV5Y= golang.org/x/net v0.0.0-20210520170846-37e1c6afe023/go.mod h1:9nx3DQGgdP8bBQD5qxJ1jj9UTztislL4KSBs9R2vV5Y= golang.org/x/net v0.0.0-20210525063256-abc453219eb5/go.mod h1:9nx3DQGgdP8bBQD5qxJ1jj9UTztislL4KSBs9R2vV5Y= -golang.org/x/net v0.0.0-20210716203947-853a461950ff/go.mod h1:9nx3DQGgdP8bBQD5qxJ1jj9UTztislL4KSBs9R2vV5Y= golang.org/x/net v0.0.0-20210805182204-aaa1db679c0d/go.mod h1:9nx3DQGgdP8bBQD5qxJ1jj9UTztislL4KSBs9R2vV5Y= -golang.org/x/net v0.0.0-20210813160813-60bc85c4be6d/go.mod h1:9nx3DQGgdP8bBQD5qxJ1jj9UTztislL4KSBs9R2vV5Y= golang.org/x/net v0.0.0-20211209124913-491a49abca63/go.mod h1:9nx3DQGgdP8bBQD5qxJ1jj9UTztislL4KSBs9R2vV5Y= golang.org/x/net v0.0.0-20220127200216-cd36cc0744dd/go.mod h1:CfG3xpIq0wQ8r1q4Su4UZFWDARRcnwPjda9FqA0JpMk= -golang.org/x/net v0.0.0-20220225172249-27dd8689420f h1:oA4XRj0qtSt8Yo1Zms0CUlsT3KG69V2UGQWPBxujDmc= golang.org/x/net v0.0.0-20220225172249-27dd8689420f/go.mod h1:CfG3xpIq0wQ8r1q4Su4UZFWDARRcnwPjda9FqA0JpMk= +golang.org/x/net v0.0.0-20220325170049-de3da57026de h1:pZB1TWnKi+o4bENlbzAgLrEbY4RMYmUIRobMcSmfeYc= +golang.org/x/net v0.0.0-20220325170049-de3da57026de/go.mod h1:CfG3xpIq0wQ8r1q4Su4UZFWDARRcnwPjda9FqA0JpMk= golang.org/x/oauth2 v0.0.0-20180821212333-d2e6202438be/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/go.mod h1:gOpvHmFTYa4IltrdGE7lF6nIHvwfUNPOp7c8zoXwtLw= @@ -1401,8 +1339,9 @@ golang.org/x/oauth2 v0.0.0-20210805134026-6f1e6394065a/go.mod h1:KelEdhl1UZF7XfJ golang.org/x/oauth2 v0.0.0-20210819190943-2bc19b11175f/go.mod h1:KelEdhl1UZF7XfJ4dDtk6s++YSgaE7mD/BuKKDLBl4A= golang.org/x/oauth2 v0.0.0-20211005180243-6b3c2da341f1/go.mod h1:KelEdhl1UZF7XfJ4dDtk6s++YSgaE7mD/BuKKDLBl4A= golang.org/x/oauth2 v0.0.0-20211104180415-d3ed0bb246c8/go.mod h1:KelEdhl1UZF7XfJ4dDtk6s++YSgaE7mD/BuKKDLBl4A= -golang.org/x/oauth2 v0.0.0-20220223155221-ee480838109b h1:clP8eMhB30EHdc0bd2Twtq6kgU7yl5ub2cQLSdrv1Dg= golang.org/x/oauth2 v0.0.0-20220223155221-ee480838109b/go.mod h1:DAh4E804XQdzx2j+YRIaUnCqCV2RuMz24cGBJ5QYIrc= +golang.org/x/oauth2 v0.0.0-20220309155454-6242fa91716a h1:qfl7ob3DIEs3Ml9oLuPwY2N04gymzAW04WsUQHIClgM= +golang.org/x/oauth2 v0.0.0-20220309155454-6242fa91716a/go.mod h1:DAh4E804XQdzx2j+YRIaUnCqCV2RuMz24cGBJ5QYIrc= golang.org/x/perf v0.0.0-20180704124530-6e6d33e29852/go.mod h1:JLpeXjPJfIyPr5TlbXLkXWLhP8nz10XfvxElABhCtcw= golang.org/x/sync v0.0.0-20180314180146-1d60e4601c6f/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sync v0.0.0-20181108010431-42b317875d0f/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= @@ -1445,12 +1384,10 @@ golang.org/x/sys v0.0.0-20190812073006-9eafafc0a87e/go.mod h1:h1NjWce9XRLGQEsW7w golang.org/x/sys v0.0.0-20190826190057-c7b8b68b1456/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20190904154756-749cb33beabd/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= golang.org/x/sys v0.0.0-20190924154521-2837fb4f24fe/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20191001151750-bb3f8db39f24/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20191002063906-3421d5a6bb1c/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20191005200804-aed5e4c7ecf9/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20191008105621-543471e840be/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20191022100944-742c48ecaeb7/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20191026070338-33540a1f6037/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20191115151921-52ab43148777/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= @@ -1500,7 +1437,6 @@ golang.org/x/sys v0.0.0-20210119212857-b64e53b001e4/go.mod h1:h1NjWce9XRLGQEsW7w golang.org/x/sys v0.0.0-20210124154548-22da62e12c0c/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20210220050731-9a76102bfb43/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20210303074136-134d130e1a04/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20210304124612-50617c2ba197/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20210305230114-8fe3ee5dd75b/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20210315160823-c6e025ad8005/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20210320140829-1e4c9ba3b0c4/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= @@ -1519,27 +1455,26 @@ golang.org/x/sys v0.0.0-20210616094352-59db8d763f22/go.mod h1:oPkhp1MJrh7nUepCBc golang.org/x/sys v0.0.0-20210630005230-0f9fa26af87c/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.0.0-20210806184541-e5e7981a1069/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.0.0-20210809222454-d867a43fc93e/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= -golang.org/x/sys v0.0.0-20210816074244-15123e1e1f71/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= -golang.org/x/sys v0.0.0-20210816183151-1e6c022a8912/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.0.0-20210823070655-63515b42dcdf/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.0.0-20210831042530-f4d43177bf5e/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.0.0-20210908233432-aa78b53d3365/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.0.0-20210917161153-d61c044b1678/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.0.0-20210927094055-39ccf1dd6fa6/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.0.0-20211007075335-d3039528d8ac/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/sys v0.0.0-20211023085530-d6a326fbbf70/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.0.0-20211124211545-fe61309f8881/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= -golang.org/x/sys v0.0.0-20211205182925-97ca703d548d/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.0.0-20211210111614-af8b64212486/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.0.0-20211216021012-1d35b9e2eb4e/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= -golang.org/x/sys v0.0.0-20220111092808-5a964db01320/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.0.0-20220114195835-da31bd327af9/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.0.0-20220128215802-99c3d69c2c27/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/sys v0.0.0-20220204135822-1c1b9b1eba6a/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/sys v0.0.0-20220207234003-57398862261d/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.0.0-20220209214540-3681064d5158/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= -golang.org/x/sys v0.0.0-20220227234510-4e6760a101f9 h1:nhht2DYV/Sn3qOayu8lM+cU1ii9sTLUeBQwQQfUHtrs= golang.org/x/sys v0.0.0-20220227234510-4e6760a101f9/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/sys v0.0.0-20220328115105-d36c6a25d886 h1:eJv7u3ksNXoLbGSKuv2s/SIO4tJVxc/A+MTpzxDgz/Q= +golang.org/x/sys v0.0.0-20220328115105-d36c6a25d886/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/term v0.0.0-20201117132131-f5c789dd3221/go.mod h1:Nr5EML6q2oocZ2LXRh80K7BxOlk5/8JxuGnuhpl+muw= golang.org/x/term v0.0.0-20201126162022-7de9c90e9dd1/go.mod h1:bj7SfCRtBDWHUb9snDiAeCFNEtKQo2Wmx5Cou7ajbmo= -golang.org/x/term v0.0.0-20210220032956-6a3ed077a48d/go.mod h1:bj7SfCRtBDWHUb9snDiAeCFNEtKQo2Wmx5Cou7ajbmo= golang.org/x/term v0.0.0-20210615171337-6886f2dfbf5b/go.mod h1:jbD1KX2456YbFQfuXm/mYQcufACuNUgVhRMnK/tPxf8= golang.org/x/term v0.0.0-20210927222741-03fcf44c2211 h1:JGgROgKl9N8DuW20oFS5gxc+lE67/N3FcwmBPMe7ArY= golang.org/x/term v0.0.0-20210927222741-03fcf44c2211/go.mod h1:jbD1KX2456YbFQfuXm/mYQcufACuNUgVhRMnK/tPxf8= @@ -1561,12 +1496,10 @@ golang.org/x/time v0.0.0-20200630173020-3af7569d3a1e/go.mod h1:tRJNPiyCQ0inRvYxb golang.org/x/time v0.0.0-20210723032227-1f47c861a9ac h1:7zkz7BUtwNFFqcowJ+RIgu2MaV/MapERkDIy+mwPyjs= golang.org/x/time v0.0.0-20210723032227-1f47c861a9ac/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ= golang.org/x/tools v0.0.0-20180221164845-07fd8470d635/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= -golang.org/x/tools v0.0.0-20180525024113-a5b4c53f6e8b/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= golang.org/x/tools v0.0.0-20180917221912-90fa682c2a6e/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= golang.org/x/tools v0.0.0-20181011042414-1f849cf54d09/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= golang.org/x/tools v0.0.0-20181030221726-6c7e314b6563/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= golang.org/x/tools v0.0.0-20190114222345-bf090417da8b/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= -golang.org/x/tools v0.0.0-20190206041539-40960b6deb8e/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= golang.org/x/tools v0.0.0-20190226205152-f727befe758c/go.mod h1:9Yl7xja0Znq3iFh3HoIrodX9oNMXvdceNzlUR8zjMvY= golang.org/x/tools v0.0.0-20190311212946-11955173bddd/go.mod h1:LCzVGOaR6xXOjkQ3onu1FJEFr0SW1gC7cKk1uF8kGRs= golang.org/x/tools v0.0.0-20190312151545-0bb0c0a6e846/go.mod h1:LCzVGOaR6xXOjkQ3onu1FJEFr0SW1gC7cKk1uF8kGRs= @@ -1581,9 +1514,7 @@ golang.org/x/tools v0.0.0-20190621195816-6e04913cbbac/go.mod h1:/rFqwRUd4F7ZHNgw golang.org/x/tools v0.0.0-20190624222133-a101b041ded4/go.mod h1:/rFqwRUd4F7ZHNgwSSTFct+R/Kf4OFW1sUzUTQQTgfc= golang.org/x/tools v0.0.0-20190628153133-6cdbf07be9d0/go.mod h1:/rFqwRUd4F7ZHNgwSSTFct+R/Kf4OFW1sUzUTQQTgfc= golang.org/x/tools v0.0.0-20190816200558-6889da9d5479/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= -golang.org/x/tools v0.0.0-20190907020128-2ca718005c18/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= golang.org/x/tools v0.0.0-20190911174233-4f2ddba30aff/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= -golang.org/x/tools v0.0.0-20190927191325-030b2cf1153e/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= golang.org/x/tools v0.0.0-20191012152004-8de300cfc20a/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= golang.org/x/tools v0.0.0-20191108193012-7d206e10da11/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= golang.org/x/tools v0.0.0-20191112195655-aa38f8e97acc/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= @@ -1636,15 +1567,9 @@ golang.org/x/xerrors v0.0.0-20191011141410-1b5146add898/go.mod h1:I/5z698sn9Ka8T golang.org/x/xerrors v0.0.0-20191204190536-9bdfabe68543/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= golang.org/x/xerrors v0.0.0-20200804184101-5ec99f83aff1 h1:go1bK/D/BFZV2I8cIQd1NKEZ+0owSTG1fDTci4IqFcE= golang.org/x/xerrors v0.0.0-20200804184101-5ec99f83aff1/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= -gonum.org/v1/gonum v0.0.0-20180816165407-929014505bf4/go.mod h1:Y+Yx5eoAFn32cQvJDxZx5Dpnq+c3wtXuadVZAcxbbBo= -gonum.org/v1/gonum v0.8.2/go.mod h1:oe/vMfY3deqTw+1EZJhuvEW2iwGF1bW9wwu7XCu0+v0= -gonum.org/v1/gonum v0.9.3 h1:DnoIG+QAMaF5NvxnGe/oKsgKcAc6PcUyl8q0VetfQ8s= -gonum.org/v1/gonum v0.9.3/go.mod h1:TZumC3NeyVQskjXqmyWt4S3bINhy7B4eYwW69EbyX+0= -gonum.org/v1/netlib v0.0.0-20190313105609-8cb42192e0e0/go.mod h1:wa6Ws7BG/ESfp6dHfk7C6KdzKA7wR7u/rKwOGE66zvw= -gonum.org/v1/plot v0.0.0-20190515093506-e2840ee46a6b/go.mod h1:Wt8AAjI+ypCyYX3nZBvf6cAIx93T+c/OS2HFAYskSZc= -gonum.org/v1/plot v0.9.0/go.mod h1:3Pcqqmp6RHvJI72kgb8fThyUnav364FOsdDo2aGW5lY= -gonum.org/v1/plot v0.10.0 h1:ymLukg4XJlQnYUJCp+coQq5M7BsUJFk6XQE4HPflwdw= -gonum.org/v1/plot v0.10.0/go.mod h1:JWIHJ7U20drSQb/aDpTetJzfC1KlAPldJLpkSy88dvQ= +gonum.org/v1/gonum v0.11.0 h1:f1IJhK4Km5tBJmaiJXtk/PkL4cdVX6J+tGiM187uT5E= +gonum.org/v1/plot v0.11.0 h1:z2ZkgNqW34d0oYUzd80RRlc0L9kWtenqK4kflZG1lGc= +gonum.org/v1/plot v0.11.0/go.mod h1:fH9YnKnDKax0u5EzHVXvhN5HJwtMFWIOLNuhgUahbCQ= google.golang.org/api v0.0.0-20160322025152-9bf6e6e569ff/go.mod h1:4mhQ8q/RsB7i+udVvVy5NUi08OU8ZlA0gRVgrF7VFY0= google.golang.org/api v0.4.0/go.mod h1:8k5glujaEP+g9n7WNsDg8QP6cUVNI86fCNMcbazEtwE= google.golang.org/api v0.7.0/go.mod h1:WtwebWUNSVBH/HAw79HIFXZNqEvBhG+Ra+ax0hx3E3M= @@ -1679,14 +1604,16 @@ google.golang.org/api v0.57.0/go.mod h1:dVPlbZyBo2/OjBpmvNdpn2GRm6rPy75jyU7bmhdr google.golang.org/api v0.58.0/go.mod h1:cAbP2FsxoGVNwtgNAmmn3y5G1TWAiVYRmg4yku3lv+E= google.golang.org/api v0.59.0/go.mod h1:sT2boj7M9YJxZzgeZqXogmhfmRWDtPzT31xkieUbuZU= google.golang.org/api v0.61.0/go.mod h1:xQRti5UdCmoCEqFxcz93fTl338AVqDgyaDRuOZ3hg9I= -google.golang.org/api v0.62.0/go.mod h1:dKmwPCydfsad4qCH08MSdgWjfHOyfpd4VtDGgRFdavw= google.golang.org/api v0.63.0/go.mod h1:gs4ij2ffTRXwuzzgJl/56BdwJaA194ijkfn++9tDuPo= google.golang.org/api v0.64.0/go.mod h1:931CdxA8Rm4t6zqTFGSsgwbAEZ2+GMYurbndwSimebM= google.golang.org/api v0.66.0/go.mod h1:I1dmXYpX7HGwz/ejRxwQp2qj5bFAz93HiCU1C1oYd9M= google.golang.org/api v0.67.0/go.mod h1:ShHKP8E60yPsKNw/w8w+VYaj9H6buA5UqDp8dhbQZ6g= +google.golang.org/api v0.68.0/go.mod h1:sOM8pTpwgflXRhz+oC8H2Dr+UcbMqkPPWNJo88Q7TH8= +google.golang.org/api v0.69.0/go.mod h1:boanBiw+h5c3s+tBPgEzLDRHfFLWV0qXxRHz3ws7C80= google.golang.org/api v0.70.0/go.mod h1:Bs4ZM2HGifEvXwd50TtW70ovgJffJYw2oRCOFU/SkfA= -google.golang.org/api v0.71.0 h1:SgWof18M8V2NylsX7bL4fM28j+nFdRopHZbdipaaw20= google.golang.org/api v0.71.0/go.mod h1:4PyU6e6JogV1f9eA4voyrTY2batOLdgZ5qZ5HOCc4j8= +google.golang.org/api v0.74.0 h1:ExR2D+5TYIrMphWgs5JCgwRhEDlPDXXrLwHHMgPHTXE= +google.golang.org/api v0.74.0/go.mod h1:ZpfMZOVRMywNyvJFeqL9HRWBgAuRfSjJFpe9QtRRyDs= google.golang.org/appengine v1.1.0/go.mod h1:EbEs0AVv82hx2wNQdGPgUI5lhzA/G0D9YwlJXL52JkM= google.golang.org/appengine v1.4.0/go.mod h1:xpcJRLb0r/rnEns0DIKYYv+WjYCduHsrkT7/EB5XEv4= google.golang.org/appengine v1.5.0/go.mod h1:xpcJRLb0r/rnEns0DIKYYv+WjYCduHsrkT7/EB5XEv4= @@ -1748,8 +1675,6 @@ google.golang.org/genproto v0.0.0-20210608205507-b6d2f5bf0d7d/go.mod h1:UODoCrxH google.golang.org/genproto v0.0.0-20210624195500-8bfb893ecb84/go.mod h1:SzzZ/N+nwJDaO1kznhnlzqS8ocJICar6hYhVyhi++24= google.golang.org/genproto v0.0.0-20210713002101-d411969a0d9a/go.mod h1:AxrInvYm1dci+enl5hChSFPOmmUF1+uAa/UsgNRWd7k= google.golang.org/genproto v0.0.0-20210716133855-ce7ef5c701ea/go.mod h1:AxrInvYm1dci+enl5hChSFPOmmUF1+uAa/UsgNRWd7k= -google.golang.org/genproto v0.0.0-20210721163202-f1cecdd8b78a/go.mod h1:ob2IJxKrgPT52GcgX759i1sleT07tiKowYBGbczaW48= -google.golang.org/genproto v0.0.0-20210722135532-667f2b7c528f/go.mod h1:ob2IJxKrgPT52GcgX759i1sleT07tiKowYBGbczaW48= google.golang.org/genproto v0.0.0-20210728212813-7823e685a01f/go.mod h1:ob2IJxKrgPT52GcgX759i1sleT07tiKowYBGbczaW48= google.golang.org/genproto v0.0.0-20210805201207-89edb61ffb67/go.mod h1:ob2IJxKrgPT52GcgX759i1sleT07tiKowYBGbczaW48= google.golang.org/genproto v0.0.0-20210813162853-db860fec028c/go.mod h1:cFeNkxwySK631ADgubI+/XFU/xp8FD5KIVV4rj8UC5w= @@ -1763,10 +1688,7 @@ google.golang.org/genproto v0.0.0-20210921142501-181ce0d877f6/go.mod h1:5CzLGKJ6 google.golang.org/genproto v0.0.0-20210924002016-3dee208752a0/go.mod h1:5CzLGKJ67TSI2B9POpiiyGha0AjJvZIUgRMt1dSmuhc= google.golang.org/genproto v0.0.0-20211008145708-270636b82663/go.mod h1:5CzLGKJ67TSI2B9POpiiyGha0AjJvZIUgRMt1dSmuhc= google.golang.org/genproto v0.0.0-20211018162055-cf77aa76bad2/go.mod h1:5CzLGKJ67TSI2B9POpiiyGha0AjJvZIUgRMt1dSmuhc= -google.golang.org/genproto v0.0.0-20211028162531-8db9c33dc351/go.mod h1:5CzLGKJ67TSI2B9POpiiyGha0AjJvZIUgRMt1dSmuhc= google.golang.org/genproto v0.0.0-20211118181313-81c1377c94b1/go.mod h1:5CzLGKJ67TSI2B9POpiiyGha0AjJvZIUgRMt1dSmuhc= -google.golang.org/genproto v0.0.0-20211129164237-f09f9a12af12/go.mod h1:5CzLGKJ67TSI2B9POpiiyGha0AjJvZIUgRMt1dSmuhc= -google.golang.org/genproto v0.0.0-20211203200212-54befc351ae9/go.mod h1:5CzLGKJ67TSI2B9POpiiyGha0AjJvZIUgRMt1dSmuhc= google.golang.org/genproto v0.0.0-20211206160659-862468c7d6e0/go.mod h1:5CzLGKJ67TSI2B9POpiiyGha0AjJvZIUgRMt1dSmuhc= google.golang.org/genproto v0.0.0-20211208223120-3a66f561d7aa/go.mod h1:5CzLGKJ67TSI2B9POpiiyGha0AjJvZIUgRMt1dSmuhc= google.golang.org/genproto v0.0.0-20211221195035-429b39de9b1c/go.mod h1:5CzLGKJ67TSI2B9POpiiyGha0AjJvZIUgRMt1dSmuhc= @@ -1775,11 +1697,17 @@ google.golang.org/genproto v0.0.0-20220111164026-67b88f271998/go.mod h1:5CzLGKJ6 google.golang.org/genproto v0.0.0-20220114231437-d2e6a121cae0/go.mod h1:5CzLGKJ67TSI2B9POpiiyGha0AjJvZIUgRMt1dSmuhc= google.golang.org/genproto v0.0.0-20220126215142-9970aeb2e350/go.mod h1:5CzLGKJ67TSI2B9POpiiyGha0AjJvZIUgRMt1dSmuhc= google.golang.org/genproto v0.0.0-20220201184016-50beb8ab5c44/go.mod h1:5CzLGKJ67TSI2B9POpiiyGha0AjJvZIUgRMt1dSmuhc= +google.golang.org/genproto v0.0.0-20220204002441-d6cc3cc0770e/go.mod h1:5CzLGKJ67TSI2B9POpiiyGha0AjJvZIUgRMt1dSmuhc= google.golang.org/genproto v0.0.0-20220207164111-0872dc986b00/go.mod h1:5CzLGKJ67TSI2B9POpiiyGha0AjJvZIUgRMt1dSmuhc= +google.golang.org/genproto v0.0.0-20220207185906-7721543eae58/go.mod h1:5CzLGKJ67TSI2B9POpiiyGha0AjJvZIUgRMt1dSmuhc= +google.golang.org/genproto v0.0.0-20220211171837-173942840c17/go.mod h1:kGP+zUP2Ddo0ayMi4YuN7C3WZyJvGLZRh8Z5wnAqvEI= +google.golang.org/genproto v0.0.0-20220216160803-4663080d8bc8/go.mod h1:kGP+zUP2Ddo0ayMi4YuN7C3WZyJvGLZRh8Z5wnAqvEI= google.golang.org/genproto v0.0.0-20220218161850-94dd64e39d7c/go.mod h1:kGP+zUP2Ddo0ayMi4YuN7C3WZyJvGLZRh8Z5wnAqvEI= google.golang.org/genproto v0.0.0-20220222213610-43724f9ea8cf/go.mod h1:kGP+zUP2Ddo0ayMi4YuN7C3WZyJvGLZRh8Z5wnAqvEI= -google.golang.org/genproto v0.0.0-20220304144024-325a89244dc8 h1:U9V52f6rAgINH7kT+musA1qF8kWyVOxzF8eYuOVuFwQ= google.golang.org/genproto v0.0.0-20220304144024-325a89244dc8/go.mod h1:kGP+zUP2Ddo0ayMi4YuN7C3WZyJvGLZRh8Z5wnAqvEI= +google.golang.org/genproto v0.0.0-20220310185008-1973136f34c6/go.mod h1:kGP+zUP2Ddo0ayMi4YuN7C3WZyJvGLZRh8Z5wnAqvEI= +google.golang.org/genproto v0.0.0-20220324131243-acbaeb5b85eb h1:0m9wktIpOxGw+SSKmydXWB3Z3GTfcPP6+q75HCQa6HI= +google.golang.org/genproto v0.0.0-20220324131243-acbaeb5b85eb/go.mod h1:hAL49I2IFola2sVEjAn7MEwsja0xp51I0tlGAf9hz4E= google.golang.org/grpc v0.0.0-20160317175043-d3ddb4469d5a/go.mod h1:yo6s7OP7yaDglbqo1J04qKzAhqBH6lvTonzMVmEdcZw= google.golang.org/grpc v1.19.0/go.mod h1:mqu4LbDTu4XGKhr4mRzUsmM4RtVoemTSY81AxZiDr8c= google.golang.org/grpc v1.20.1/go.mod h1:10oTOabMzJvdu6/UiuZezV6QK5dSlG84ov/aaiqXj38= @@ -1810,10 +1738,9 @@ google.golang.org/grpc v1.39.0/go.mod h1:PImNr+rS9TWYb2O4/emRugxiyHZ5JyHW5F+RPnD google.golang.org/grpc v1.39.1/go.mod h1:PImNr+rS9TWYb2O4/emRugxiyHZ5JyHW5F+RPnDzfrE= google.golang.org/grpc v1.40.0/go.mod h1:ogyxbiOoUXAkP+4+xa6PZSE9DZgIHtSpzjDTB9KAK34= google.golang.org/grpc v1.40.1/go.mod h1:ogyxbiOoUXAkP+4+xa6PZSE9DZgIHtSpzjDTB9KAK34= -google.golang.org/grpc v1.42.0/go.mod h1:k+4IHHFw41K8+bbowsex27ge2rCb65oeWqe4jJ590SU= -google.golang.org/grpc v1.43.0/go.mod h1:k+4IHHFw41K8+bbowsex27ge2rCb65oeWqe4jJ590SU= -google.golang.org/grpc v1.44.0 h1:weqSxi/TMs1SqFRMHCtBgXRs8k3X39QIDEZ0pRcttUg= google.golang.org/grpc v1.44.0/go.mod h1:k+4IHHFw41K8+bbowsex27ge2rCb65oeWqe4jJ590SU= +google.golang.org/grpc v1.45.0 h1:NEpgUqV3Z+ZjkqMsxMg11IaDrXY4RY6CQukSGK0uI1M= +google.golang.org/grpc v1.45.0/go.mod h1:lN7owxKUQEqMfSyQikvvk5tf/6zMPsrK+ONuO11+0rQ= google.golang.org/grpc/cmd/protoc-gen-go-grpc v1.1.0/go.mod h1:6Kw0yEErY5E/yWrBtf03jp27GLLJujG4z/JK95pnjjw= google.golang.org/protobuf v0.0.0-20200109180630-ec00e32a8dfd/go.mod h1:DFci5gLYBciE7Vtevhsrf46CRTquxDuWsQurQQe4oz8= google.golang.org/protobuf v0.0.0-20200221191635-4d8936d0db64/go.mod h1:kwYJMbMJ01Woi6D6+Kah6886xMZcty6N08ah7+eCXa0= @@ -1845,7 +1772,6 @@ gopkg.in/fsnotify.v1 v1.4.7/go.mod h1:Tz8NjZHkW78fSQdbUxIjBTcgA1z1m8ZHf0WmKUhAMy 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= -gopkg.in/ini.v1 v1.51.0/go.mod h1:pNLf8WUiyNEtQjuu5G5vTm06TEv9tsIgeAvK8hOrP4k= gopkg.in/ini.v1 v1.62.0/go.mod h1:pNLf8WUiyNEtQjuu5G5vTm06TEv9tsIgeAvK8hOrP4k= gopkg.in/ini.v1 v1.66.2 h1:XfR1dOYubytKy4Shzc2LHrrGhU0lDCfDGG1yLPmpgsI= gopkg.in/ini.v1 v1.66.2/go.mod h1:pNLf8WUiyNEtQjuu5G5vTm06TEv9tsIgeAvK8hOrP4k= @@ -1885,49 +1811,45 @@ honnef.co/go/tools v0.0.0-20190523083050-ea95bdfd59fc/go.mod h1:rf3lG4BRIbNafJWh honnef.co/go/tools v0.0.1-2019.2.3/go.mod h1:a3bituU0lyd329TUQxRnasdCoJDkEUEAqEt0JzvZhAg= honnef.co/go/tools v0.0.1-2020.1.3/go.mod h1:X/FiERA/W4tHapMX5mGpAtMSVEeEUOyHaw9vFzvIQ3k= honnef.co/go/tools v0.0.1-2020.1.4/go.mod h1:X/FiERA/W4tHapMX5mGpAtMSVEeEUOyHaw9vFzvIQ3k= +honnef.co/go/tools v0.1.3/go.mod h1:NgwopIslSNH47DimFoV78dnkksY2EFtX0ajyb3K/las= k8s.io/api v0.19.1/go.mod h1:+u/k4/K/7vp4vsfdT7dyl8Oxk1F26Md4g5F26Tu85PU= k8s.io/api v0.20.1/go.mod h1:KqwcCVogGxQY3nBlRpwt+wpAMF/KjaCc7RpywacvqUo= k8s.io/api v0.20.4/go.mod h1:++lNL1AJMkDymriNniQsWRkMDzRaX2Y/POTUi8yvqYQ= k8s.io/api v0.20.6/go.mod h1:X9e8Qag6JV/bL5G6bU8sdVRltWKmdHsFUGS3eVndqE8= -k8s.io/api v0.22.2/go.mod h1:y3ydYpLJAaDI+BbSe2xmGcqxiWHmWjkEeIbiwHvnPR8= k8s.io/api v0.22.4/go.mod h1:Rgs+9gIGYC5laXQSZZ9JqT5NevNgoGiOdVWi1BAB3qk= -k8s.io/api v0.23.4 h1:85gnfXQOWbJa1SiWGpE9EEtHs0UVvDyIsSMpEtl2D4E= -k8s.io/api v0.23.4/go.mod h1:i77F4JfyNNrhOjZF7OwwNJS5Y1S9dpwvb9iYRYRczfI= +k8s.io/api v0.23.5 h1:zno3LUiMubxD/V1Zw3ijyKO3wxrhbUF1Ck+VjBvfaoA= +k8s.io/api v0.23.5/go.mod h1:Na4XuKng8PXJ2JsploYYrivXrINeTaycCGcYgF91Xm8= k8s.io/apimachinery v0.19.1/go.mod h1:DnPGDnARWFvYa3pMHgSxtbZb7gpzzAZ1pTfaUNDVlmA= k8s.io/apimachinery v0.20.1/go.mod h1:WlLqWAHZGg07AeltaI0MV5uk1Omp8xaN0JGLY6gkRpU= k8s.io/apimachinery v0.20.4/go.mod h1:WlLqWAHZGg07AeltaI0MV5uk1Omp8xaN0JGLY6gkRpU= k8s.io/apimachinery v0.20.6/go.mod h1:ejZXtW1Ra6V1O5H8xPBGz+T3+4gfkTCeExAHKU57MAc= -k8s.io/apimachinery v0.22.2/go.mod h1:O3oNtNadZdeOMxHFVxOreoznohCpy0z6mocxbZr7oJ0= k8s.io/apimachinery v0.22.4/go.mod h1:yU6oA6Gnax9RrxGzVvPFFJ+mpnW6PBSqp0sx0I0HHW0= -k8s.io/apimachinery v0.23.4 h1:fhnuMd/xUL3Cjfl64j5ULKZ1/J9n8NuQEgNL+WXWfdM= -k8s.io/apimachinery v0.23.4/go.mod h1:BEuFMMBaIbcOqVIJqNZJXGFTP4W6AycEpb5+m/97hrM= +k8s.io/apimachinery v0.23.5 h1:Va7dwhp8wgkUPWsEXk6XglXWU4IKYLKNlv8VkX7SDM0= +k8s.io/apimachinery v0.23.5/go.mod h1:BEuFMMBaIbcOqVIJqNZJXGFTP4W6AycEpb5+m/97hrM= k8s.io/apiserver v0.20.1/go.mod h1:ro5QHeQkgMS7ZGpvf4tSMx6bBOgPfE+f52KwvXfScaU= k8s.io/apiserver v0.20.4/go.mod h1:Mc80thBKOyy7tbvFtB4kJv1kbdD0eIH8k8vianJcbFM= k8s.io/apiserver v0.20.6/go.mod h1:QIJXNt6i6JB+0YQRNcS0hdRHJlMhflFmsBDeSgT1r8Q= -k8s.io/cli-runtime v0.22.2/go.mod h1:tkm2YeORFpbgQHEK/igqttvPTRIHFRz5kATlw53zlMI= +k8s.io/cli-runtime v0.23.5/go.mod h1:oY6QDF2qo9xndSq32tqcmRp2UyXssdGrLfjAVymgbx4= k8s.io/client-go v0.19.1/go.mod h1:AZOIVSI9UUtQPeJD3zJFp15CEhSjRgAuQP5PWRJrCIQ= k8s.io/client-go v0.20.1/go.mod h1:/zcHdt1TeWSd5HoUe6elJmHSQ6uLLgp4bIJHVEuy+/Y= k8s.io/client-go v0.20.4/go.mod h1:LiMv25ND1gLUdBeYxBIwKpkSC5IsozMMmOOeSJboP+k= k8s.io/client-go v0.20.6/go.mod h1:nNQMnOvEUEsOzRRFIIkdmYOjAZrC8bgq0ExboWSU1I0= -k8s.io/client-go v0.22.2/go.mod h1:sAlhrkVDf50ZHx6z4K0S40wISNTarf1r800F+RlCF6U= -k8s.io/client-go v0.23.4 h1:YVWvPeerA2gpUudLelvsolzH7c2sFoXXR5wM/sWqNFU= -k8s.io/client-go v0.23.4/go.mod h1:PKnIL4pqLuvYUK1WU7RLTMYKPiIh7MYShLshtRY9cj0= +k8s.io/client-go v0.23.5 h1:zUXHmEuqx0RY4+CsnkOn5l0GU+skkRXKGJrhmE2SLd8= +k8s.io/client-go v0.23.5/go.mod h1:flkeinTO1CirYgzMPRWxUCnV0G4Fbu2vLhYCObnt/r4= k8s.io/cluster-bootstrap v0.22.4 h1:2ZhV/1K4GiCrnmDHHbBnN3bERWn+Nxrtxmxp6uYYThI= k8s.io/cluster-bootstrap v0.22.4/go.mod h1:fTQZ6u9G6fg2LHhB8nEgZLnXIhCDSRYuLUUS5pgW8RY= -k8s.io/code-generator v0.22.2/go.mod h1:eV77Y09IopzeXOJzndrDyCI88UBok2h6WxAlBwpxa+o= +k8s.io/code-generator v0.23.5/go.mod h1:S0Q1JVA+kSzTI1oUvbKAxZY/DYbA/ZUb4Uknog12ETk= k8s.io/component-base v0.20.1/go.mod h1:guxkoJnNoh8LNrbtiQOlyp2Y2XFCZQmrcg2n/DeYNLk= k8s.io/component-base v0.20.4/go.mod h1:t4p9EdiagbVCJKrQ1RsA5/V4rFQNDfRlevJajlGwgjI= k8s.io/component-base v0.20.6/go.mod h1:6f1MPBAeI+mvuts3sIdtpjljHWBQ2cIy38oBIWMYnrM= -k8s.io/component-base v0.22.2/go.mod h1:5Br2QhI9OTe79p+TzPe9JKNQYvEKbq9rTJDWllunGug= -k8s.io/component-base v0.23.4 h1:SziYh48+QKxK+ykJ3Ejqd98XdZIseVBG7sBaNLPqy6M= -k8s.io/component-base v0.23.4/go.mod h1:8o3Gg8i2vnUXGPOwciiYlkSaZT+p+7gA9Scoz8y4W4E= -k8s.io/component-helpers v0.22.2/go.mod h1:+N61JAR9aKYSWbnLA88YcFr9K/6ISYvRNybX7QW7Rs8= +k8s.io/component-base v0.23.5 h1:8qgP5R6jG1BBSXmRYW+dsmitIrpk8F/fPEvgDenMCCE= +k8s.io/component-base v0.23.5/go.mod h1:c5Nq44KZyt1aLl0IpHX82fhsn84Sb0jjzwjpcA42bY0= +k8s.io/component-helpers v0.23.5/go.mod h1:5riXJgjTIs+ZB8xnf5M2anZ8iQuq37a0B/0BgoPQuSM= k8s.io/cri-api v0.17.3/go.mod h1:X1sbHmuXhwaHs9xxYffLqJogVsnI+f6cPRcgPel7ywM= k8s.io/cri-api v0.20.1/go.mod h1:2JRbKt+BFLTjtrILYVqQK5jqhI+XNdF6UiGMgczeBCI= k8s.io/cri-api v0.20.4/go.mod h1:2JRbKt+BFLTjtrILYVqQK5jqhI+XNdF6UiGMgczeBCI= k8s.io/cri-api v0.20.6/go.mod h1:ew44AjNXwyn1s0U4xCKGodU7J1HzBeZ1MpGrpa5r8Yc= k8s.io/gengo v0.0.0-20200413195148-3a45101e95ac/go.mod h1:ezvh/TsK7cY6rbqRK0oQQ8IAqLxYwwyPxAX1Pzy0ii0= -k8s.io/gengo v0.0.0-20201214224949-b6c5ce23f027/go.mod h1:FiNAH4ZV3gBg2Kwh89tzAEV2be7d5xI0vBa/VySYy3E= k8s.io/gengo v0.0.0-20210813121822-485abfe95c7c/go.mod h1:FiNAH4ZV3gBg2Kwh89tzAEV2be7d5xI0vBa/VySYy3E= k8s.io/klog/v2 v2.0.0/go.mod h1:PBfzABfn139FHAV07az/IF9Wp1bkk3vpT2XSJ76fSDE= k8s.io/klog/v2 v2.2.0/go.mod h1:Od+F08eJP+W3HUb4pSrPpgp9DGU4GzlpG/TmITuYh/Y= @@ -1935,39 +1857,37 @@ k8s.io/klog/v2 v2.3.0/go.mod h1:Od+F08eJP+W3HUb4pSrPpgp9DGU4GzlpG/TmITuYh/Y= k8s.io/klog/v2 v2.4.0/go.mod h1:Od+F08eJP+W3HUb4pSrPpgp9DGU4GzlpG/TmITuYh/Y= k8s.io/klog/v2 v2.9.0/go.mod h1:hy9LJ/NvuK+iVyP4Ehqva4HxZG/oXyIS3n3Jmire4Ec= k8s.io/klog/v2 v2.30.0/go.mod h1:y1WjHnz7Dj687irZUWR/WLkLc5N1YHtjLdmgWjndZn0= -k8s.io/klog/v2 v2.40.1 h1:P4RRucWk/lFOlDdkAr3mc7iWFkgKrZY9qZMAgek06S4= -k8s.io/klog/v2 v2.40.1/go.mod h1:y1WjHnz7Dj687irZUWR/WLkLc5N1YHtjLdmgWjndZn0= +k8s.io/klog/v2 v2.60.1 h1:VW25q3bZx9uE3vvdL6M8ezOX79vA2Aq1nEWLqNQclHc= +k8s.io/klog/v2 v2.60.1/go.mod h1:y1WjHnz7Dj687irZUWR/WLkLc5N1YHtjLdmgWjndZn0= k8s.io/kube-openapi v0.0.0-20200805222855-6aeccd4b50c6/go.mod h1:UuqjUnNftUyPE5H64/qeyjQoUZhGpeFDVdxjTeEVN2o= k8s.io/kube-openapi v0.0.0-20201113171705-d219536bb9fd/go.mod h1:WOJ3KddDSol4tAGcJo0Tvi+dK12EcqSLqcWsryKMpfM= k8s.io/kube-openapi v0.0.0-20210421082810-95288971da7e/go.mod h1:vHXdDvt9+2spS2Rx9ql3I8tycm3H9FDfdUoIuKCefvw= k8s.io/kube-openapi v0.0.0-20211109043538-20434351676c/go.mod h1:vHXdDvt9+2spS2Rx9ql3I8tycm3H9FDfdUoIuKCefvw= k8s.io/kube-openapi v0.0.0-20211115234752-e816edb12b65 h1:E3J9oCLlaobFUqsjG9DfKbP2BmgwBL2p7pn0A3dG9W4= k8s.io/kube-openapi v0.0.0-20211115234752-e816edb12b65/go.mod h1:sX9MT8g7NVZM5lVL/j8QyCCJe8YSMW30QvGZWaCIDIk= -k8s.io/kubectl v0.22.2 h1:KMyYNZoBshaL3XKx04X07DtpoD4vMrdkfiN/G2Qx/PU= -k8s.io/kubectl v0.22.2/go.mod h1:BApg2j0edxLArCOfO0ievI27EeTQqBDMNU9VQH734iQ= +k8s.io/kubectl v0.23.5 h1:DmDULqCaF4qstj0Im143XmncvqWtJxHzK8IrW2BzlU0= +k8s.io/kubectl v0.23.5/go.mod h1:lLgw7cVY8xbd7o637vOXPca/w6HC205KsPCRDYRCxwE= k8s.io/kubernetes v1.13.0/go.mod h1:ocZa8+6APFNC2tX1DZASIbocyYT5jHzqFVsY5aoB7Jk= -k8s.io/metrics v0.22.2/go.mod h1:GUcsBtpsqQD1tKFS/2wCKu4ZBowwRncLOJH1rgWs3uw= +k8s.io/metrics v0.23.5/go.mod h1:WNAtV2a5BYbmDS8+7jSqYYV6E3efuGTpIwJ8PTD1wgs= k8s.io/utils v0.0.0-20200729134348-d5654de09c73/go.mod h1:jPW/WVKK9YHAvNhRxK0md/EJ228hCsBRufyofKtW8HA= k8s.io/utils v0.0.0-20201110183641-67b214c5f920/go.mod h1:jPW/WVKK9YHAvNhRxK0md/EJ228hCsBRufyofKtW8HA= k8s.io/utils v0.0.0-20210802155522-efc7438f0176/go.mod h1:jPW/WVKK9YHAvNhRxK0md/EJ228hCsBRufyofKtW8HA= -k8s.io/utils v0.0.0-20210819203725-bdf08cb9a70a/go.mod h1:jPW/WVKK9YHAvNhRxK0md/EJ228hCsBRufyofKtW8HA= k8s.io/utils v0.0.0-20211116205334-6203023598ed h1:ck1fRPWPJWsMd8ZRFsWc6mh/zHp5fZ/shhbrgPUxDAE= k8s.io/utils v0.0.0-20211116205334-6203023598ed/go.mod h1:jPW/WVKK9YHAvNhRxK0md/EJ228hCsBRufyofKtW8HA= -libvirt.org/go/libvirt v1.7010.0 h1:DlllozmFIhjuF5DL9Z19UOcKfgFp3T0RjWtxdiBjPpM= -libvirt.org/go/libvirt v1.7010.0/go.mod h1:1WiFE8EjZfq+FCVog+rvr1yatKbKZ9FaFMZgEqxEJqQ= +libvirt.org/go/libvirt v1.8002.0 h1:X8gz2Sa1ek4S5FznpDpeRz6JpNb7NdkfzTii5GMIwDY= +libvirt.org/go/libvirt v1.8002.0/go.mod h1:1WiFE8EjZfq+FCVog+rvr1yatKbKZ9FaFMZgEqxEJqQ= rsc.io/binaryregexp v0.2.0/go.mod h1:qTv7/COck+e2FymRvadv62gMdZztPaShugOCi3I+8D8= rsc.io/pdf v0.1.1 h1:k1MczvYDUvJBe93bYd7wrZLLUEcLZAuF824/I4e5Xr4= -rsc.io/pdf v0.1.1/go.mod h1:n8OzWcQ6Sp37PL01nO98y4iUCRdTGarVfzxY20ICaU4= rsc.io/quote/v3 v3.1.0/go.mod h1:yEA65RcK8LyAZtP9Kv3t0HmxON59tX3rD+tICJqUlj0= rsc.io/sampler v1.3.0/go.mod h1:T1hPZKmBbMNahiBKFy5HrXp6adAjACjK9JXDnKaTXpA= sigs.k8s.io/apiserver-network-proxy/konnectivity-client v0.0.14/go.mod h1:LEScyzhFmoF5pso/YSeBstl57mOzx9xlU9n85RGrDQg= sigs.k8s.io/apiserver-network-proxy/konnectivity-client v0.0.15/go.mod h1:LEScyzhFmoF5pso/YSeBstl57mOzx9xlU9n85RGrDQg= sigs.k8s.io/json v0.0.0-20211020170558-c049b76a60c6 h1:fD1pz4yfdADVNfFmcP2aBEtudwUQ1AlLnRBALr33v3s= sigs.k8s.io/json v0.0.0-20211020170558-c049b76a60c6/go.mod h1:p4QtZmO4uMYipTQNzagwnNoseA6OxSUutVw05NhYDRs= -sigs.k8s.io/kustomize/api v0.8.11/go.mod h1:a77Ls36JdfCWojpUqR6m60pdGY1AYFix4AH83nJtY1g= -sigs.k8s.io/kustomize/cmd/config v0.9.13/go.mod h1:7547FLF8W/lTaDf0BDqFTbZxM9zqwEJqCKN9sSR0xSs= -sigs.k8s.io/kustomize/kustomize/v4 v4.2.0/go.mod h1:MOkR6fmhwG7hEDRXBYELTi5GSFcLwfqwzTRHW3kv5go= -sigs.k8s.io/kustomize/kyaml v0.11.0/go.mod h1:GNMwjim4Ypgp/MueD3zXHLRJEjz7RvtPae0AwlvEMFM= +sigs.k8s.io/kustomize/api v0.10.1/go.mod h1:2FigT1QN6xKdcnGS2Ppp1uIWrtWN28Ms8A3OZUZhwr8= +sigs.k8s.io/kustomize/cmd/config v0.10.2/go.mod h1:K2aW7nXJ0AaT+VA/eO0/dzFLxmpFcTzudmAgDwPY1HQ= +sigs.k8s.io/kustomize/kustomize/v4 v4.4.1/go.mod h1:qOKJMMz2mBP+vcS7vK+mNz4HBLjaQSWRY22EF6Tb7Io= +sigs.k8s.io/kustomize/kyaml v0.13.0/go.mod h1:FTJxEZ86ScK184NpGSAQcfEqee0nul8oLCK30D47m4E= sigs.k8s.io/sig-storage-lib-external-provisioner/v6 v6.3.0 h1:IKsKAnscMyIOqyl8s8V7guTcx0QBEa6OT57EPgAgpmM= sigs.k8s.io/sig-storage-lib-external-provisioner/v6 v6.3.0/go.mod h1:DhZ52sQMJHW21+JXyA2LRUPRIxKnrNrwh+QFV+2tVA4= sigs.k8s.io/structured-merge-diff/v4 v4.0.1/go.mod h1:bJZC9H9iH24zzfZ/41RGcq60oK1F7G282QMXDPYydCw= diff --git a/hack/benchmark/time-to-k8s/chart.go b/hack/benchmark/time-to-k8s/chart.go index ba03ecadfa..e0ebcbcc18 100644 --- a/hack/benchmark/time-to-k8s/chart.go +++ b/hack/benchmark/time-to-k8s/chart.go @@ -19,10 +19,8 @@ package main import ( "bytes" "encoding/csv" - "flag" "fmt" "io" - "log" "os" "strconv" @@ -45,27 +43,12 @@ type run struct { type runs struct { version string runs []run + cpus []cpu } -func main() { - csvPath := flag.String("csv", "", "path to the CSV file") - chartPath := flag.String("output", "", "path to output the chart to") - flag.Parse() - - // map of the apps (minikube, kind, k3d) and their runs - apps := make(map[string]runs) - - if err := readInCSV(*csvPath, apps); err != nil { - log.Fatal(err) - } - - values, totals, names := values(apps) - - outputMarkdownTable(values, totals, names) - - if err := createChart(*chartPath, values, totals, names); err != nil { - log.Fatal(err) - } +type cpu struct { + cpuPct float64 // percentage + cpuTime float64 // second } func readInCSV(csvPath string, apps map[string]runs) error { @@ -91,8 +74,8 @@ func readInCSV(csvPath string, apps map[string]runs) error { values := []float64{} - // 8-13 contain the run results - for i := 8; i <= 13; i++ { + // 8-16 contain the run results + for i := 8; i <= 16; i++ { v, err := strconv.ParseFloat(d[i], 64) if err != nil { return err @@ -100,6 +83,7 @@ func readInCSV(csvPath string, apps map[string]runs) error { values = append(values, v) } newRun := run{values[0], values[1], values[2], values[3], values[4], values[5]} + newCPU := cpu{values[6], values[8]} // get the app from the map and add the new run to it name := d[0] @@ -108,14 +92,18 @@ func readInCSV(csvPath string, apps map[string]runs) error { k = runs{version: d[5]} } k.runs = append(k.runs, newRun) + k.cpus = append(k.cpus, newCPU) apps[name] = k } return nil } -func values(apps map[string]runs) ([]plotter.Values, []float64, []string) { +func values(apps map[string]runs) ([]plotter.Values, []plotter.Values, []plotter.Values, []float64, []string) { var cmdValues, apiValues, k8sValues, dnsSvcValues, appValues, dnsAnsValues plotter.Values + var cpuPctValues, cpuTimeValues plotter.Values + var cpuMinikube, cpuKind, cpuK3d plotter.Values + names := []string{} totals := []float64{} @@ -123,6 +111,8 @@ func values(apps map[string]runs) ([]plotter.Values, []float64, []string) { for _, name := range []string{"minikube", "kind", "k3d"} { app := apps[name] var cmd, api, k8s, dnsSvc, appRun, dnsAns float64 + var cpuPct, cpuTime float64 + names = append(names, app.version) for _, l := range app.runs { @@ -134,6 +124,11 @@ func values(apps map[string]runs) ([]plotter.Values, []float64, []string) { dnsAns += l.dnsAns } + for _, l := range app.cpus { + cpuPct += l.cpuPct + cpuTime += l.cpuTime + } + c := float64(len(app.runs)) cmdAvg := cmd / c @@ -143,6 +138,9 @@ func values(apps map[string]runs) ([]plotter.Values, []float64, []string) { appAvg := appRun / c dnsAnsAvg := dnsAns / c + cpuPctAvg := cpuPct / c + cpuTimeAvg := cpuTime / c + cmdValues = append(cmdValues, cmdAvg) apiValues = append(apiValues, apiAvg) k8sValues = append(k8sValues, k8sAvg) @@ -152,11 +150,32 @@ func values(apps map[string]runs) ([]plotter.Values, []float64, []string) { total := cmdAvg + apiAvg + k8sAvg + dnsSvcAvg + appAvg + dnsAnsAvg totals = append(totals, total) + + cpuPctValues = append(cpuPctValues, cpuPctAvg) + cpuTimeValues = append(cpuTimeValues, cpuTimeAvg) + + cpuSummary := []float64{cpuPctAvg, cpuTimeAvg} + + switch name { + case "minikube": + cpuMinikube = cpuSummary + case "kind": + cpuKind = cpuSummary + case "k3d": + cpuK3d = cpuSummary + } + } - values := []plotter.Values{cmdValues, apiValues, k8sValues, dnsSvcValues, appValues, dnsAnsValues} + runningTime := []plotter.Values{cmdValues, apiValues, k8sValues, dnsSvcValues, appValues, dnsAnsValues} - return values, totals, names + // for markdown table, row is either cpu utilization or cpu time, col is process name + cpu := []plotter.Values{cpuPctValues, cpuTimeValues} + + // row is process name, col is either cpu utilization, or cpu time + cpureverse := []plotter.Values{cpuMinikube, cpuKind, cpuK3d} + + return runningTime, cpu, cpureverse, totals, names } func outputMarkdownTable(categories []plotter.Values, totals []float64, names []string) { @@ -184,7 +203,7 @@ func outputMarkdownTable(categories []plotter.Values, totals []float64, names [] t.SetCenterSeparator("|") t.AppendBulk(c) t.Render() - fmt.Println(b.String()) + data.TimeMarkdown = b.String() } func createChart(chartPath string, values []plotter.Values, totals []float64, names []string) error { @@ -252,7 +271,13 @@ func createChart(chartPath string, values []plotter.Values, totals []float64, na p.Add(l) - return p.Save(12*vg.Inch, 8*vg.Inch, chartPath) + if err := p.Save(12*vg.Inch, 8*vg.Inch, chartPath); err != nil { + return err + } + + data.TimeChart = chartPath + + return nil } func createBars(values plotter.Values, index int) (*plotter.BarChart, error) { diff --git a/hack/benchmark/time-to-k8s/cpu.go b/hack/benchmark/time-to-k8s/cpu.go new file mode 100644 index 0000000000..a69d106726 --- /dev/null +++ b/hack/benchmark/time-to-k8s/cpu.go @@ -0,0 +1,116 @@ +/* +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 main + +import ( + "bytes" + "fmt" + + "github.com/olekukonko/tablewriter" + "gonum.org/v1/plot" + "gonum.org/v1/plot/plotter" + "gonum.org/v1/plot/plotutil" + "gonum.org/v1/plot/vg" +) + +var fields = []string{"CPU Utilization(%)", "CPU Time(seconds)"} + +func cpuMarkdownTable(categories []plotter.Values, names []string) { + + // categories row is the either cpu pct or time, col is process name + headers := append([]string{""}, names...) + c := [][]string{} + for i, values := range categories { + row := []string{fields[i]} + for _, value := range values { + row = append(row, fmt.Sprintf("%.3f", value)) + } + c = append(c, row) + } + b := new(bytes.Buffer) + t := tablewriter.NewWriter(b) + t.SetAutoWrapText(false) + t.SetHeader(headers) + t.SetAutoFormatHeaders(false) + t.SetBorders(tablewriter.Border{Left: true, Top: false, Right: true, Bottom: false}) + t.SetCenterSeparator("|") + t.AppendBulk(c) + t.Render() + data.CPUMarkdown = b.String() +} + +func createCPUChart(chartPath string, values []plotter.Values, names []string) error { + p := plot.New() + p.Title.Text = "CPU utilization to go from 0 to successful Kubernetes deployment" + p.Y.Label.Text = "CPU utilization" + setYMax(p, values) + + w := vg.Points(20) + + barsA, err := plotter.NewBarChart(values[0], w) + if err != nil { + return err + } + barsA.LineStyle.Width = vg.Length(0) + barsA.Color = plotutil.Color(0) + barsA.Offset = -w + + barsB, err := plotter.NewBarChart(values[1], w) + if err != nil { + return err + } + barsB.LineStyle.Width = vg.Length(0) + barsB.Color = plotutil.Color(1) + barsB.Offset = 0 + + barsC, err := plotter.NewBarChart(values[2], w) + if err != nil { + return err + } + barsC.LineStyle.Width = vg.Length(0) + barsC.Color = plotutil.Color(2) + barsC.Offset = w + + p.Add(barsA, barsB, barsC) + p.Legend.Add(names[0], barsA) + p.Legend.Add(names[1], barsB) + p.Legend.Add(names[2], barsC) + + p.Legend.Top = true + p.NominalX(fields...) + + if err := p.Save(8*vg.Inch, 8*vg.Inch, chartPath); err != nil { + return err + } + + data.CPUChart = chartPath + + return nil +} + +func setYMax(p *plot.Plot, values []plotter.Values) { + ymax := 0.0 + for _, value := range values { + for _, v := range value { + if v > ymax { + ymax = v + } + } + } + + p.Y.Max = ymax + 5 +} diff --git a/hack/benchmark/time-to-k8s/page.go b/hack/benchmark/time-to-k8s/page.go new file mode 100644 index 0000000000..36cfb6f5b5 --- /dev/null +++ b/hack/benchmark/time-to-k8s/page.go @@ -0,0 +1,108 @@ +/* +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 main + +import ( + "flag" + "fmt" + "log" + "os" + "text/template" + "time" +) + +var page = `--- +title: "{{.Version}} Benchmark" +linkTitle: "{{.Version}} Benchmark" +weight: -{{.Weight}} +--- + +![time-to-k8s]({{.TimeChart}}) + +{{.TimeMarkdown}} + + +![cpu-to-k8s]({{.CPUChart}}) + +{{.CPUMarkdown}} +` + +type Data struct { + Version string + Weight string + TimeChart string + TimeMarkdown string + CPUChart string + CPUMarkdown string +} + +var data Data + +func main() { + csvPath := flag.String("csv", "", "path to the CSV file") + imagePath := flag.String("image", "", "path to output the chart to") + pagePath := flag.String("page", "", "path to output the page to") + + flag.Parse() + + t := time.Now() + data.Weight = fmt.Sprintf("%d%d%d", t.Year(), t.Month(), t.Day()) + + // map of the apps (minikube, kind, k3d) and their runs + apps := make(map[string]runs) + + if err := readInCSV(*csvPath, apps); err != nil { + log.Fatalf("fail to readin cvs file with err %s", err) + } + + runningTime, cpuMdPlot, cpuChartPlot, totals, names := values(apps) + + // markdown table for running time + outputMarkdownTable(runningTime, totals, names) + + // chart for running time + if err := createChart(*imagePath+"-time.png", runningTime, totals, names); err != nil { + log.Fatalf("fail to create running time chart with err %s", err) + } + + // markdown table for cpu utilization + cpuMarkdownTable(cpuMdPlot, names) + + // chart for cpu utilization + if err := createCPUChart(*imagePath+"-cpu.png", cpuChartPlot, names); err != nil { + log.Fatalf("fail to create CPU chart with err %s", err) + } + + // generate page and save + tmpl, err := template.New("msg").Parse(page) + + if err != nil { + log.Fatal(err) + } + + f, err := os.Create(*pagePath) + if err != nil { + log.Fatalf("fail to create file under path %s, with err %s", *pagePath, err) + } + + if err = tmpl.Execute(f, data); err != nil { + log.Fatalf("fail to populate the page with err %s", err) + } + + f.Close() + +} diff --git a/hack/benchmark/time-to-k8s/time-to-k8s.sh b/hack/benchmark/time-to-k8s/time-to-k8s.sh index 213f538aea..348cd86a96 100755 --- a/hack/benchmark/time-to-k8s/time-to-k8s.sh +++ b/hack/benchmark/time-to-k8s/time-to-k8s.sh @@ -37,12 +37,10 @@ run_benchmark() { go run . --config local-kubernetes.yaml --iterations 10 --output output.csv ) } -generate_chart() { - go run ./hack/benchmark/time-to-k8s/chart.go --csv ./hack/benchmark/time-to-k8s/time-to-k8s-repo/output.csv --output ./site/static/images/benchmarks/timeToK8s/"$1".png >> ./site/content/en/docs/benchmarks/timeToK8s/"$1".md -} +# create page and generate chart inside the code create_page() { - printf -- "---\ntitle: \"%s Benchmark\"\nlinkTitle: \"%s Benchmark\"\nweight: -$(date +'%Y%m%d')\n---\n\n![time-to-k8s](/images/benchmarks/timeToK8s/%s.png)\n" "$1" "$1" "$1" > ./site/content/en/docs/benchmarks/timeToK8s/"$1".md + go run ./hack/benchmark/time-to-k8s/*.go --csv ./hack/benchmark/time-to-k8s/time-to-k8s-repo/output.csv --image ./site/static/images/benchmarks/timeToK8s/"$1" --page ./site/content/en/docs/benchmarks/timeToK8s/"$1".md } cleanup() { @@ -56,5 +54,4 @@ install_minikube VERSION=$(minikube version --short) run_benchmark create_page "$VERSION" -generate_chart "$VERSION" cleanup diff --git a/hack/boilerplate/boilerplate.go b/hack/boilerplate/boilerplate.go index e53a75a54b..a3284d590f 100644 --- a/hack/boilerplate/boilerplate.go +++ b/hack/boilerplate/boilerplate.go @@ -34,7 +34,7 @@ var ( skippedPaths = regexp.MustCompile(`Godeps|third_party|_gopath|_output|\.git|cluster/env.sh|vendor|test/e2e/generated/bindata.go|site/themes/docsy|test/integration/testdata`) windowdNewLine = regexp.MustCompile(`\r`) txtExtension = regexp.MustCompile(`\.txt`) - goBuildTag = regexp.MustCompile(`(?m)^(//go:build.*\n// \+build.*\n)+\n`) + goBuildTag = regexp.MustCompile(`(?m)^(//go:build.*\n)+\n`) shebang = regexp.MustCompile(`(?m)^(#!.*\n)\n*`) copyright = regexp.MustCompile(`Copyright YEAR`) copyrightReal = regexp.MustCompile(`Copyright \d{4}`) diff --git a/hack/boilerplate/fix.sh b/hack/boilerplate/fix.sh index b2b4c98b84..083642439e 100755 --- a/hack/boilerplate/fix.sh +++ b/hack/boilerplate/fix.sh @@ -44,7 +44,7 @@ function prepend() { done } -prepend "\.go" "go" "+build" +prepend "\.go" "go" "go:build" prepend "\.py" "py" prepend "\.sh" "sh" "#!" prepend Makefile Makefile diff --git a/hack/jenkins/cloud_shell_functional_tests_docker.sh b/hack/jenkins/cloud_shell_functional_tests_docker.sh index c6b8968b13..512e3108b4 100755 --- a/hack/jenkins/cloud_shell_functional_tests_docker.sh +++ b/hack/jenkins/cloud_shell_functional_tests_docker.sh @@ -22,7 +22,7 @@ # EXTRA_BUILD_ARGS (optional): Extra args to be passed into the minikube integrations tests # access_token: The Github API access token. Injected by the Jenkins credential provider. -set -ex +set -x gcloud cloud-shell ssh --authorize-session << EOF OS="linux" @@ -48,3 +48,14 @@ gcloud cloud-shell ssh --authorize-session << EOF chmod +x ./common.sh source ./common.sh EOF + +code=$? +if [ $code -gt 0 ]; then + curl -L -u minikube-bot:${access_token} \ + "https://api.github.com/repos/kubernetes/minikube/statuses/${COMMIT}" \ + -H "Content-Type: application/json" \ + -X POST \ + -d "{\"state\": \"failure\", \"description\": \"Jenkins: Cloud Shell failed to start\", \"target_url\": \"https://storage.googleapis.com/minikube-builds/logs/${MINIKUBE_LOCATION}/${ROOT_JOB_ID}/Docker_Cloud_Shell.html\", \"context\": \"Docker_Cloud_Shell\"}" +fi + +exit $code diff --git a/hack/jenkins/installers/check_install_golang.sh b/hack/jenkins/installers/check_install_golang.sh index 3af76f2639..10b1d1dcb5 100755 --- a/hack/jenkins/installers/check_install_golang.sh +++ b/hack/jenkins/installers/check_install_golang.sh @@ -22,7 +22,7 @@ if (($# < 1)); then exit 1 fi -VERSION_TO_INSTALL=1.17.7 +VERSION_TO_INSTALL=1.18 INSTALL_PATH=${1} function current_arch() { diff --git a/hack/jenkins/test-flake-chart/flake_chart.js b/hack/jenkins/test-flake-chart/flake_chart.js index 33b04d3985..08f492449d 100644 --- a/hack/jenkins/test-flake-chart/flake_chart.js +++ b/hack/jenkins/test-flake-chart/flake_chart.js @@ -382,7 +382,7 @@ function displayTestAndEnvironmentChart(testData, testName, environmentName) { } } -function createRecentFlakePercentageTable(recentFlakePercentage, previousFlakePercentageMap, environmentName) { +function createRecentFlakePercentageTable(recentFlakePercentage, previousFlakePercentageMap, environmentName, period) { const createCell = (elementType, text) => { const element = document.createElement(elementType); element.innerHTML = text; @@ -401,7 +401,7 @@ function createRecentFlakePercentageTable(recentFlakePercentage, previousFlakePe const {testName, flakeRate} = recentFlakePercentage[i]; const row = document.createElement("tr"); row.appendChild(createCell("td", "" + (i + 1))).style.textAlign = "center"; - row.appendChild(createCell("td", `${testName}`)); + row.appendChild(createCell("td", `${testName}`)); row.appendChild(createCell("td", `${flakeRate.toFixed(2)}%`)).style.textAlign = "right"; const growth = previousFlakePercentageMap.has(testName) ? flakeRate - previousFlakePercentageMap.get(testName) : 0; @@ -413,7 +413,7 @@ function createRecentFlakePercentageTable(recentFlakePercentage, previousFlakePe return table; } -function displayEnvironmentChart(testData, environmentName) { +function displayEnvironmentChart(testData, environmentName, period) { // Number of days to use to look for "flaky-est" tests. const dateRange = 15; // Number of tests to display in chart. @@ -661,7 +661,8 @@ function displayEnvironmentChart(testData, environmentName) { createRecentFlakePercentageTable( recentFlakePercentage, previousFlakePercentageMap, - environmentName)); + environmentName, + period)); } async function init() { @@ -683,7 +684,7 @@ async function init() { } if (desiredTest === undefined) { - displayEnvironmentChart(testData, desiredEnvironment); + displayEnvironmentChart(testData, desiredEnvironment, desiredPeriod); } else { displayTestAndEnvironmentChart(testData, desiredTest, desiredEnvironment); } diff --git a/hack/jenkins/test-flake-chart/report_flakes.sh b/hack/jenkins/test-flake-chart/report_flakes.sh index 23f90607af..b5d7a052f2 100755 --- a/hack/jenkins/test-flake-chart/report_flakes.sh +++ b/hack/jenkins/test-flake-chart/report_flakes.sh @@ -100,7 +100,7 @@ TMP_COMMENT=$(mktemp) printf "These are the flake rates of all failed tests.\n|Environment|Failed Tests|Flake Rate (%%)|\n|---|---|---|\n" > "$TMP_COMMENT" # Create variables to use for sed command. -ENV_CHART_LINK_FORMAT='https://storage.googleapis.com/minikube-flake-rate/flake_chart.html?env=%1$s' +ENV_CHART_LINK_FORMAT='https://storage.googleapis.com/minikube-flake-rate/flake_chart.html?env=%1$s&period=last90' TEST_CHART_LINK_FORMAT=${ENV_CHART_LINK_FORMAT}'&test=%2$s' TEST_GOPOGH_LINK_FORMAT='https://storage.googleapis.com/minikube-builds/logs/'${PR_NUMBER}'/'${ROOT_JOB}'/%1$s.html#fail_%2$s' # 1) Get the first $MAX_REPORTED_TESTS lines. diff --git a/hack/release_notes.sh b/hack/release_notes.sh index a0cdc0f601..9e85e8499f 100755 --- a/hack/release_notes.sh +++ b/hack/release_notes.sh @@ -28,21 +28,10 @@ function cleanup_token() { } trap cleanup_token EXIT -install_release_notes_helper() { - release_notes_workdir="$(mktemp -d)" - trap 'rm -rf -- ${release_notes_workdir}' RETURN - - # See https://stackoverflow.com/questions/56842385/using-go-get-to-download-binaries-without-adding-them-to-go-mod for this workaround - cd "${release_notes_workdir}" - go mod init release-notes - GOBIN="$DIR" go get github.com/corneliusweig/release-notes - GOBIN="$DIR" go get github.com/google/pullsheet - cd - -} - if ! [[ -x "${DIR}/release-notes" ]] || ! [[ -x "${DIR}/pullsheet" ]]; then echo >&2 'Installing release-notes' - install_release_notes_helper + go install github.com/corneliusweig/release-notes@latest + go install github.com/google/pullsheet@latest fi git pull https://github.com/kubernetes/minikube.git master --tags diff --git a/hack/update_contributions.sh b/hack/update_contributions.sh index b8a59d3e15..9d0118643f 100755 --- a/hack/update_contributions.sh +++ b/hack/update_contributions.sh @@ -18,20 +18,9 @@ set -eu -o pipefail DIR=$( cd "$( dirname "${BASH_SOURCE[0]}" )" && pwd ) -install_pullsheet() { - pullsheet_workdir="$(mktemp -d)" - trap 'rm -rf -- ${pullsheet_workdir}' RETURN - - # See https://stackoverflow.com/questions/56842385/using-go-get-to-download-binaries-without-adding-them-to-go-mod for this workaround - cd "${pullsheet_workdir}" - go mod init ps - GOBIN="$DIR" go get github.com/google/pullsheet - cd - -} - if ! [[ -x "${DIR}/pullsheet" ]]; then echo >&2 'Installing pullsheet' - install_pullsheet + go install github.com/google/pullsheet@latest fi git fetch --tags -f diff --git a/pkg/addons/addons_autopause.go b/pkg/addons/addons_autopause.go index ec8836fa4f..3b33b7f9bd 100644 --- a/pkg/addons/addons_autopause.go +++ b/pkg/addons/addons_autopause.go @@ -31,8 +31,8 @@ import ( "k8s.io/minikube/pkg/minikube/sysinit" ) -// enableOrDisableAutoPause enables the service after the config was copied by generic enble -func enableOrDisableAutoPause(cc *config.ClusterConfig, name string, val string) error { +// enableOrDisableAutoPause enables the service after the config was copied by generic enable. +func enableOrDisableAutoPause(cc *config.ClusterConfig, name, val string) error { enable, err := strconv.ParseBool(val) if err != nil { return errors.Wrapf(err, "parsing bool: %s", name) @@ -44,16 +44,18 @@ func enableOrDisableAutoPause(cc *config.ClusterConfig, name string, val string) if enable { if err := sysinit.New(co.CP.Runner).EnableNow("auto-pause"); err != nil { klog.ErrorS(err, "failed to enable", "service", "auto-pause") + return err } } - port := co.CP.Port // api server port - if enable { // if enable then need to calculate the forwarded port + port := co.CP.Port // API server port + if enable { // if enable, calculate the forwarded port port = constants.AutoPauseProxyPort if driver.NeedsPortForward(cc.Driver) { port, err = oci.ForwardedPort(cc.Driver, cc.Name, port) if err != nil { klog.ErrorS(err, "failed to get forwarded port for", "auto-pause port", port) + return err } } } @@ -64,7 +66,7 @@ func enableOrDisableAutoPause(cc *config.ClusterConfig, name string, val string) return err } if updated { - klog.Infof("%s context has been updated to point to auto-pause proxy %s:%s", cc.Name, co.CP.Hostname, co.CP.Port) + klog.Infof("%s context has been updated to point to auto-pause proxy %s:%d", cc.Name, co.CP.Hostname, port) } else { klog.Info("no need to update kube-context for auto-pause proxy") } diff --git a/pkg/addons/addons_test.go b/pkg/addons/addons_test.go index 6101fbb3ea..ab53590305 100644 --- a/pkg/addons/addons_test.go +++ b/pkg/addons/addons_test.go @@ -30,20 +30,9 @@ import ( func createTestProfile(t *testing.T) string { t.Helper() - td, err := os.MkdirTemp("", "profile") - if err != nil { - t.Fatalf("tempdir: %v", err) - } + td := t.TempDir() - t.Cleanup(func() { - err := os.RemoveAll(td) - t.Logf("remove path %q", td) - if err != nil { - t.Errorf("failed to clean up temp folder %q", td) - } - }) - err = os.Setenv(localpath.MinikubeHome, td) - if err != nil { + if err := os.Setenv(localpath.MinikubeHome, td); err != nil { t.Errorf("error setting up test environment. could not set %s", localpath.MinikubeHome) } @@ -130,8 +119,7 @@ func TestSetAndSave(t *testing.T) { func TestStart(t *testing.T) { // this test will write a config.json into MinikubeHome, create a temp dir for it - tempDir := tests.MakeTempDir() - defer tests.RemoveTempDir(tempDir) + tests.MakeTempDir(t) cc := &config.ClusterConfig{ Name: "start", diff --git a/pkg/drivers/common_test.go b/pkg/drivers/common_test.go index 8104f72321..60fe1b5743 100644 --- a/pkg/drivers/common_test.go +++ b/pkg/drivers/common_test.go @@ -25,8 +25,7 @@ import ( ) func Test_createDiskImage(t *testing.T) { - tmpdir := tests.MakeTempDir() - defer tests.RemoveTempDir(tmpdir) + tmpdir := tests.MakeTempDir(t) sshPath := filepath.Join(tmpdir, "ssh") if err := os.WriteFile(sshPath, []byte("mysshkey"), 0644); err != nil { diff --git a/pkg/drivers/hyperkit/driver.go b/pkg/drivers/hyperkit/driver.go index 737b228a48..236336518e 100644 --- a/pkg/drivers/hyperkit/driver.go +++ b/pkg/drivers/hyperkit/driver.go @@ -1,5 +1,4 @@ //go:build darwin -// +build darwin /* Copyright 2016 The Kubernetes Authors All rights reserved. diff --git a/pkg/drivers/hyperkit/driver_test.go b/pkg/drivers/hyperkit/driver_test.go index 40cbb6bdd0..2cecf82355 100644 --- a/pkg/drivers/hyperkit/driver_test.go +++ b/pkg/drivers/hyperkit/driver_test.go @@ -1,5 +1,4 @@ //go:build darwin -// +build darwin /* Copyright 2018 The Kubernetes Authors All rights reserved. diff --git a/pkg/drivers/hyperkit/iso_test.go b/pkg/drivers/hyperkit/iso_test.go index a55f8ffd46..9b33908437 100644 --- a/pkg/drivers/hyperkit/iso_test.go +++ b/pkg/drivers/hyperkit/iso_test.go @@ -17,21 +17,11 @@ limitations under the License. package hyperkit import ( - "os" "testing" ) func TestExtractFile(t *testing.T) { - testDir, err := os.MkdirTemp(os.TempDir(), "") - if nil != err { - return - } - defer func() { // clean up tempdir - err := os.RemoveAll(testDir) - if err != nil { - t.Errorf("failed to clean up temp folder %q", testDir) - } - }() + testDir := t.TempDir() tests := []struct { name string diff --git a/pkg/drivers/hyperkit/network.go b/pkg/drivers/hyperkit/network.go index 445948c847..a3597a6a5b 100644 --- a/pkg/drivers/hyperkit/network.go +++ b/pkg/drivers/hyperkit/network.go @@ -1,5 +1,4 @@ //go:build darwin -// +build darwin /* Copyright 2016 The Kubernetes Authors All rights reserved. diff --git a/pkg/drivers/hyperkit/network_test.go b/pkg/drivers/hyperkit/network_test.go index 906680cab3..856e27ce4c 100644 --- a/pkg/drivers/hyperkit/network_test.go +++ b/pkg/drivers/hyperkit/network_test.go @@ -1,5 +1,4 @@ //go:build darwin -// +build darwin /* Copyright 2016 The Kubernetes Authors All rights reserved. @@ -50,8 +49,7 @@ var validLeases = []byte(`{ }`) func Test_getIpAddressFromFile(t *testing.T) { - tmpdir := tests.MakeTempDir() - defer tests.RemoveTempDir(tmpdir) + tmpdir := tests.MakeTempDir(t) dhcpFile := filepath.Join(tmpdir, "dhcp") if err := os.WriteFile(dhcpFile, validLeases, 0644); err != nil { diff --git a/pkg/drivers/hyperkit/vmnet.go b/pkg/drivers/hyperkit/vmnet.go index 8e3509f398..ef7952872a 100644 --- a/pkg/drivers/hyperkit/vmnet.go +++ b/pkg/drivers/hyperkit/vmnet.go @@ -1,5 +1,4 @@ //go:build darwin && cgo -// +build darwin,cgo /* Copyright 2016 The Kubernetes Authors All rights reserved. diff --git a/pkg/drivers/hyperkit/vmnet_stub.go b/pkg/drivers/hyperkit/vmnet_stub.go index ef4578d634..70ebf0f767 100644 --- a/pkg/drivers/hyperkit/vmnet_stub.go +++ b/pkg/drivers/hyperkit/vmnet_stub.go @@ -1,5 +1,4 @@ //go:build darwin && !cgo -// +build darwin,!cgo /* Copyright 2016 The Kubernetes Authors All rights reserved. diff --git a/pkg/drivers/kic/kic.go b/pkg/drivers/kic/kic.go index 8065153b8c..8c71743277 100644 --- a/pkg/drivers/kic/kic.go +++ b/pkg/drivers/kic/kic.go @@ -92,7 +92,7 @@ func (d *Driver) Create() error { if networkName == "" { networkName = d.NodeConfig.ClusterName } - if gateway, err := oci.CreateNetwork(d.OCIBinary, networkName); err != nil { + if gateway, err := oci.CreateNetwork(d.OCIBinary, networkName, d.NodeConfig.Subnet); err != nil { out.WarningT("Unable to create dedicated network, this might result in cluster IP change after restart: {{.error}}", out.V{"error": err}) } else if gateway != nil { params.Network = networkName @@ -262,10 +262,6 @@ func (d *Driver) prepareSSH() error { if icaclsCmdErr != nil { return errors.Wrap(icaclsCmdErr, fmt.Sprintf("unable to execute icacls to set permissions: %s", icaclsCmdOut)) } - - if !strings.Contains(string(icaclsCmdOut), "Successfully processed 1 files; Failed processing 0 files") { - klog.Errorf("icacls failed applying permissions - err - [%s], output - [%s]", icaclsCmdErr, strings.TrimSpace(string(icaclsCmdOut))) - } } } diff --git a/pkg/drivers/kic/oci/cgroups_linux.go b/pkg/drivers/kic/oci/cgroups_linux.go index 3a2bb3c573..f963864c88 100644 --- a/pkg/drivers/kic/oci/cgroups_linux.go +++ b/pkg/drivers/kic/oci/cgroups_linux.go @@ -1,5 +1,4 @@ //go:build linux -// +build linux /* Copyright 2021 The Kubernetes Authors All rights reserved. diff --git a/pkg/drivers/kic/oci/cgroups_other.go b/pkg/drivers/kic/oci/cgroups_other.go index 1f856054f5..a64a8449a8 100644 --- a/pkg/drivers/kic/oci/cgroups_other.go +++ b/pkg/drivers/kic/oci/cgroups_other.go @@ -1,5 +1,4 @@ //go:build !linux -// +build !linux /* Copyright 2021 The Kubernetes Authors All rights reserved. diff --git a/pkg/drivers/kic/oci/network.go b/pkg/drivers/kic/oci/network.go index a1cff1762f..da73ff26ad 100644 --- a/pkg/drivers/kic/oci/network.go +++ b/pkg/drivers/kic/oci/network.go @@ -158,12 +158,7 @@ func ForwardedPort(ociBin string, ociID string, contPort int) (int, error) { var v semver.Version if ociBin == Podman { - rr, err = runCmd(exec.Command(Podman, "version", "--format", "{{.Version}}")) - if err != nil { - return 0, errors.Wrapf(err, "podman version") - } - output := strings.TrimSpace(rr.Stdout.String()) - v, err = semver.Make(output) + v, err = podmanVersion() if err != nil { return 0, errors.Wrapf(err, "podman version") } diff --git a/pkg/drivers/kic/oci/network_create.go b/pkg/drivers/kic/oci/network_create.go index b928c9a131..fd8137fbe8 100644 --- a/pkg/drivers/kic/oci/network_create.go +++ b/pkg/drivers/kic/oci/network_create.go @@ -25,15 +25,16 @@ import ( "os/exec" "strings" + "github.com/blang/semver/v4" "github.com/pkg/errors" "k8s.io/klog/v2" "k8s.io/minikube/pkg/network" ) -// firstSubnetAddr subnet to be used on first kic cluster +// defaultFirstSubnetAddr is a first subnet to be used on first kic cluster // it is one octet more than the one used by KVM to avoid possible conflict -const firstSubnetAddr = "192.168.49.0" +const defaultFirstSubnetAddr = "192.168.49.0" // name of the default bridge network, used to lookup the MTU (see #9528) const dockerDefaultBridge = "bridge" @@ -53,8 +54,16 @@ func defaultBridgeName(ociBin string) string { } } +func firstSubnetAddr(subnet string) string { + if subnet == "" { + return defaultFirstSubnetAddr + } + + return subnet +} + // CreateNetwork creates a network returns gateway and error, minikube creates one network per cluster -func CreateNetwork(ociBin string, networkName string) (net.IP, error) { +func CreateNetwork(ociBin, networkName, subnet string) (net.IP, error) { defaultBridgeName := defaultBridgeName(ociBin) if networkName == defaultBridgeName { klog.Infof("skipping creating network since default network %s was specified", networkName) @@ -76,7 +85,7 @@ func CreateNetwork(ociBin string, networkName string) (net.IP, error) { } // retry up to 5 times to create container network - for attempts, subnetAddr := 0, firstSubnetAddr; attempts < 5; attempts++ { + for attempts, subnetAddr := 0, firstSubnetAddr(subnet); attempts < 5; attempts++ { // Rather than iterate through all of the valid subnets, give up at 20 to avoid a lengthy user delay for something that is unlikely to work. // will be like 192.168.49.0/24,..., 192.168.220.0/24 (in increment steps of 9) var subnet *network.Parameters @@ -213,7 +222,16 @@ func dockerNetworkInspect(name string) (netInfo, error) { } var podmanInspectGetter = func(name string) (*RunResult, error) { - cmd := exec.Command(Podman, "network", "inspect", name, "--format", `{{range .plugins}}{{if eq .type "bridge"}}{{(index (index .ipam.ranges 0) 0).subnet}},{{(index (index .ipam.ranges 0) 0).gateway}}{{end}}{{end}}`) + v, err := podmanVersion() + if err != nil { + return nil, errors.Wrapf(err, "podman version") + } + format := `{{range .}}{{if eq .Driver "bridge"}}{{(index .Subnets 0).Subnet}},{{(index .Subnets 0).Gateway}}{{end}}{{end}}` + if v.LT(semver.Version{Major: 4, Minor: 0, Patch: 0}) { + // format was changed in Podman 4.0.0: https://github.com/kubernetes/minikube/issues/13861#issuecomment-1082639236 + format = `{{range .plugins}}{{if eq .type "bridge"}}{{(index (index .ipam.ranges 0) 0).subnet}},{{(index (index .ipam.ranges 0) 0).gateway}}{{end}}{{end}}` + } + cmd := exec.Command(Podman, "network", "inspect", name, "--format", format) return runCmd(cmd) } diff --git a/pkg/drivers/kic/oci/oci.go b/pkg/drivers/kic/oci/oci.go index 5f5a84ce8d..fe54727e2d 100644 --- a/pkg/drivers/kic/oci/oci.go +++ b/pkg/drivers/kic/oci/oci.go @@ -29,6 +29,7 @@ import ( "strings" "time" + "github.com/blang/semver/v4" "github.com/docker/machine/libmachine/state" "github.com/pkg/errors" @@ -162,9 +163,6 @@ func CreateContainerNode(p CreateParams) error { // including some ones docker would otherwise do by default. // for now this is what we want. in the future we may revisit this. "--privileged", - // enable /dev/fuse explicitly for fuse-overlayfs - // (Rootless Docker does not automatically mount /dev/fuse with --privileged) - "--device", "/dev/fuse", "--security-opt", "seccomp=unconfined", // ignore seccomp "--tmpfs", "/tmp", // various things depend on working /tmp "--tmpfs", "/run", // systemd wants a writable /run @@ -739,3 +737,12 @@ func IsExternalDaemonHost(driver string) bool { } return false } + +func podmanVersion() (semver.Version, error) { + rr, err := runCmd(exec.Command(Podman, "version", "--format", "{{.Version}}")) + if err != nil { + return semver.Version{}, errors.Wrapf(err, "podman version") + } + output := strings.TrimSpace(rr.Stdout.String()) + return semver.Make(output) +} diff --git a/pkg/drivers/kic/types.go b/pkg/drivers/kic/types.go index cabd784321..d8d9d3207f 100644 --- a/pkg/drivers/kic/types.go +++ b/pkg/drivers/kic/types.go @@ -24,13 +24,13 @@ import ( const ( // Version is the current version of kic - Version = "v0.0.30" + Version = "v0.0.30-1647797120-13815" // SHA of the kic base image - baseImageSHA = "02c921df998f95e849058af14de7045efc3954d90320967418a0d1f182bbc0b2" + baseImageSHA = "90e8f7ee4065da728c0b80d303827e05ce4421985fe9bd7bdca30a55218347b5" // The name of the GCR kicbase repository - gcrRepo = "gcr.io/k8s-minikube/kicbase" + gcrRepo = "gcr.io/k8s-minikube/kicbase-builds" // The name of the Dockerhub kicbase repository - dockerhubRepo = "docker.io/kicbase/stable" + dockerhubRepo = "docker.io/kicbase/build" ) var ( @@ -64,6 +64,7 @@ type Config struct { KubernetesVersion string // Kubernetes version to install ContainerRuntime string // container runtime kic is running Network string // network to run with kic + Subnet string // subnet to be used on kic cluster ExtraArgs []string // a list of any extra option to pass to oci binary during creation time, for example --expose 8080... ListenAddress string // IP Address to listen to } diff --git a/pkg/drivers/kvm/disks.go b/pkg/drivers/kvm/disks.go index dc684c0170..ce9a7ddb08 100644 --- a/pkg/drivers/kvm/disks.go +++ b/pkg/drivers/kvm/disks.go @@ -1,5 +1,4 @@ //go:build linux -// +build linux /* Copyright 2018 The Kubernetes Authors All rights reserved. diff --git a/pkg/drivers/kvm/domain.go b/pkg/drivers/kvm/domain.go index 360ae038ac..6a1589e74a 100644 --- a/pkg/drivers/kvm/domain.go +++ b/pkg/drivers/kvm/domain.go @@ -1,5 +1,4 @@ //go:build linux -// +build linux /* Copyright 2016 The Kubernetes Authors All rights reserved. diff --git a/pkg/drivers/kvm/domain_definition_arm64.go b/pkg/drivers/kvm/domain_definition_arm64.go index 676fa5b733..7e7314945a 100644 --- a/pkg/drivers/kvm/domain_definition_arm64.go +++ b/pkg/drivers/kvm/domain_definition_arm64.go @@ -1,5 +1,4 @@ //go:build linux && arm64 -// +build linux,arm64 /* Copyright 2016 The Kubernetes Authors All rights reserved. diff --git a/pkg/drivers/kvm/domain_definition_x86.go b/pkg/drivers/kvm/domain_definition_x86.go index e10fc0c441..4557cf9055 100644 --- a/pkg/drivers/kvm/domain_definition_x86.go +++ b/pkg/drivers/kvm/domain_definition_x86.go @@ -1,5 +1,4 @@ //go:build linux && amd64 -// +build linux,amd64 /* Copyright 2016 The Kubernetes Authors All rights reserved. diff --git a/pkg/drivers/kvm/gpu.go b/pkg/drivers/kvm/gpu.go index 3722c94e37..5e981efc83 100644 --- a/pkg/drivers/kvm/gpu.go +++ b/pkg/drivers/kvm/gpu.go @@ -1,5 +1,4 @@ //go:build linux -// +build linux /* Copyright 2018 The Kubernetes Authors All rights reserved. diff --git a/pkg/drivers/kvm/kvm.go b/pkg/drivers/kvm/kvm.go index 7d79a92a1d..7093b48e1c 100644 --- a/pkg/drivers/kvm/kvm.go +++ b/pkg/drivers/kvm/kvm.go @@ -1,5 +1,4 @@ //go:build linux -// +build linux /* Copyright 2016 The Kubernetes Authors All rights reserved. diff --git a/pkg/drivers/kvm/network.go b/pkg/drivers/kvm/network.go index 835c2c6480..5a21a3abea 100644 --- a/pkg/drivers/kvm/network.go +++ b/pkg/drivers/kvm/network.go @@ -1,5 +1,4 @@ //go:build linux -// +build linux /* Copyright 2016 The Kubernetes Authors All rights reserved. diff --git a/pkg/minikube/assets/addons.go b/pkg/minikube/assets/addons.go index 172be04263..5a7981bcf3 100755 --- a/pkg/minikube/assets/addons.go +++ b/pkg/minikube/assets/addons.go @@ -134,7 +134,7 @@ var Addons = map[string]*Addon{ MustBinAsset(addons.DashboardAssets, "dashboard/dashboard-secret.yaml", vmpath.GuestAddonsDir, "dashboard-secret.yaml", "0640"), MustBinAsset(addons.DashboardAssets, "dashboard/dashboard-svc.yaml", vmpath.GuestAddonsDir, "dashboard-svc.yaml", "0640"), }, false, "dashboard", "kubernetes", map[string]string{ - "Dashboard": "kubernetesui/dashboard:v2.3.1@sha256:ec27f462cf1946220f5a9ace416a84a57c18f98c777876a8054405d1428cc92e", + "Dashboard": "kubernetesui/dashboard:v2.5.1@sha256:cc746e7a0b1eec0db01cbabbb6386b23d7af97e79fa9e36bb883a95b7eb96fe2", "MetricsScraper": "kubernetesui/metrics-scraper:v1.0.7@sha256:36d5b3f60e1a144cc5ada820910535074bdf5cf73fb70d1ff1681537eef4e172", }, nil), "default-storageclass": NewAddon([]*BinAsset{ @@ -304,7 +304,7 @@ var Addons = map[string]*Addon{ "metrics-server-service.yaml", "0640"), }, false, "metrics-server", "kubernetes", map[string]string{ - "MetricsServer": "metrics-server/metrics-server:v0.4.2@sha256:dbc33d7d35d2a9cc5ab402005aa7a0d13be6192f3550c7d42cba8d2d5e3a5d62", + "MetricsServer": "metrics-server/metrics-server:v0.6.1@sha256:5ddc6458eb95f5c70bd13fdab90cbd7d6ad1066e5b528ad1dcb28b76c5fb2f00", }, map[string]string{ "MetricsServer": "k8s.gcr.io", }), diff --git a/pkg/minikube/bootstrapper/certs_test.go b/pkg/minikube/bootstrapper/certs_test.go index b0c4e255d1..e46a32a828 100644 --- a/pkg/minikube/bootstrapper/certs_test.go +++ b/pkg/minikube/bootstrapper/certs_test.go @@ -29,8 +29,7 @@ import ( ) func TestSetupCerts(t *testing.T) { - tempDir := tests.MakeTempDir() - defer tests.RemoveTempDir(tempDir) + tempDir := tests.MakeTempDir(t) k8s := config.ClusterConfig{ CertExpiration: constants.DefaultCertExpiration, diff --git a/pkg/minikube/bootstrapper/images/images.go b/pkg/minikube/bootstrapper/images/images.go index 50dedec0c5..5000478df5 100644 --- a/pkg/minikube/bootstrapper/images/images.go +++ b/pkg/minikube/bootstrapper/images/images.go @@ -104,8 +104,6 @@ func auxiliary(mirror string) []string { // Note: changing this list requires bumping the preload version return []string{ storageProvisioner(mirror), - dashboardFrontend(mirror), - dashboardMetrics(mirror), // NOTE: kindnet is also used when the Docker driver is used with a non-Docker runtime } } @@ -115,24 +113,6 @@ func storageProvisioner(mirror string) string { return path.Join(minikubeRepo(mirror), "storage-provisioner:"+version.GetStorageProvisionerVersion()) } -// dashboardFrontend returns the image used for the dashboard frontend -func dashboardFrontend(repo string) string { - if repo == "" { - repo = "docker.io" - } - // See 'kubernetes-dashboard' in deploy/addons/dashboard/dashboard-dp.yaml - return path.Join(repo, "kubernetesui", "dashboard:v2.3.1") -} - -// dashboardMetrics returns the image used for the dashboard metrics scraper -func dashboardMetrics(repo string) string { - if repo == "" { - repo = "docker.io" - } - // See 'dashboard-metrics-scraper' in deploy/addons/dashboard/dashboard-dp.yaml - return path.Join(repo, "kubernetesui", "metrics-scraper:v1.0.7") -} - // KindNet returns the image used for kindnet // ref: https://hub.docker.com/r/kindest/kindnetd/tags // src: https://github.com/kubernetes-sigs/kind/tree/master/images/kindnetd diff --git a/pkg/minikube/bootstrapper/images/images_test.go b/pkg/minikube/bootstrapper/images/images_test.go index b555332368..2d2280016f 100644 --- a/pkg/minikube/bootstrapper/images/images_test.go +++ b/pkg/minikube/bootstrapper/images/images_test.go @@ -94,8 +94,6 @@ k8s.gcr.io/coredns/coredns:v1.8.4 func TestAuxiliary(t *testing.T) { want := []string{ "gcr.io/k8s-minikube/storage-provisioner:" + version.GetStorageProvisionerVersion(), - "docker.io/kubernetesui/dashboard:v2.3.1", - "docker.io/kubernetesui/metrics-scraper:v1.0.7", } got := auxiliary("") if diff := cmp.Diff(want, got); diff != "" { @@ -106,8 +104,6 @@ func TestAuxiliary(t *testing.T) { func TestAuxiliaryMirror(t *testing.T) { want := []string{ "test.mirror/k8s-minikube/storage-provisioner:" + version.GetStorageProvisionerVersion(), - "test.mirror/kubernetesui/dashboard:v2.3.1", - "test.mirror/kubernetesui/metrics-scraper:v1.0.7", } got := auxiliary("test.mirror") if diff := cmp.Diff(want, got); diff != "" { diff --git a/pkg/minikube/bootstrapper/images/kubeadm_test.go b/pkg/minikube/bootstrapper/images/kubeadm_test.go index 56ddda36da..150a3a9bff 100644 --- a/pkg/minikube/bootstrapper/images/kubeadm_test.go +++ b/pkg/minikube/bootstrapper/images/kubeadm_test.go @@ -43,8 +43,6 @@ func TestKubeadmImages(t *testing.T) { "k8s.gcr.io/etcd:3.4.3-0", "k8s.gcr.io/pause:3.1", "gcr.io/k8s-minikube/storage-provisioner:" + version.GetStorageProvisionerVersion(), - "docker.io/kubernetesui/dashboard:v2.3.1", - "docker.io/kubernetesui/metrics-scraper:v1.0.7", }}, {"v1.16.1", "mirror.k8s.io", false, []string{ "mirror.k8s.io/kube-proxy:v1.16.1", @@ -55,8 +53,6 @@ func TestKubeadmImages(t *testing.T) { "mirror.k8s.io/etcd:3.3.15-0", "mirror.k8s.io/pause:3.1", "mirror.k8s.io/k8s-minikube/storage-provisioner:" + version.GetStorageProvisionerVersion(), - "mirror.k8s.io/kubernetesui/dashboard:v2.3.1", - "mirror.k8s.io/kubernetesui/metrics-scraper:v1.0.7", }}, {"v1.15.0", "", false, []string{ "k8s.gcr.io/kube-proxy:v1.15.0", @@ -67,8 +63,6 @@ func TestKubeadmImages(t *testing.T) { "k8s.gcr.io/etcd:3.3.10", "k8s.gcr.io/pause:3.1", "gcr.io/k8s-minikube/storage-provisioner:" + version.GetStorageProvisionerVersion(), - "docker.io/kubernetesui/dashboard:v2.3.1", - "docker.io/kubernetesui/metrics-scraper:v1.0.7", }}, {"v1.14.0", "", false, []string{ "k8s.gcr.io/kube-proxy:v1.14.0", @@ -79,8 +73,6 @@ func TestKubeadmImages(t *testing.T) { "k8s.gcr.io/etcd:3.3.10", "k8s.gcr.io/pause:3.1", "gcr.io/k8s-minikube/storage-provisioner:" + version.GetStorageProvisionerVersion(), - "docker.io/kubernetesui/dashboard:v2.3.1", - "docker.io/kubernetesui/metrics-scraper:v1.0.7", }}, {"v1.13.0", "", false, []string{ "k8s.gcr.io/kube-proxy:v1.13.0", @@ -91,8 +83,6 @@ func TestKubeadmImages(t *testing.T) { "k8s.gcr.io/etcd:3.2.24", "k8s.gcr.io/pause:3.1", "gcr.io/k8s-minikube/storage-provisioner:" + version.GetStorageProvisionerVersion(), - "docker.io/kubernetesui/dashboard:v2.3.1", - "docker.io/kubernetesui/metrics-scraper:v1.0.7", }}, {"v1.12.0", "", false, []string{ "k8s.gcr.io/kube-proxy:v1.12.0", @@ -103,8 +93,6 @@ func TestKubeadmImages(t *testing.T) { "k8s.gcr.io/etcd:3.2.24", "k8s.gcr.io/pause:3.1", "gcr.io/k8s-minikube/storage-provisioner:" + version.GetStorageProvisionerVersion(), - "docker.io/kubernetesui/dashboard:v2.3.1", - "docker.io/kubernetesui/metrics-scraper:v1.0.7", }}, {"v1.11.0", "", true, nil}, {"v1.10.0", "", true, nil}, diff --git a/pkg/minikube/config/types.go b/pkg/minikube/config/types.go index 6af5c6407f..c1af9ace7a 100644 --- a/pkg/minikube/config/types.go +++ b/pkg/minikube/config/types.go @@ -82,6 +82,7 @@ type ClusterConfig struct { ExposedPorts []string // Only used by the docker and podman driver ListenAddress string // Only used by the docker and podman driver Network string // only used by docker driver + Subnet string // only used by the docker and podman driver MultiNodeRequested bool ExtraDisks int // currently only implemented for hyperkit and kvm2 CertExpiration time.Duration diff --git a/pkg/minikube/constants/constants.go b/pkg/minikube/constants/constants.go index b0a0413397..8eb3f72ccf 100644 --- a/pkg/minikube/constants/constants.go +++ b/pkg/minikube/constants/constants.go @@ -33,10 +33,10 @@ var ( const ( // DefaultKubernetesVersion is the default Kubernetes version // dont update till #10545 is solved - DefaultKubernetesVersion = "v1.23.3" + DefaultKubernetesVersion = "v1.23.5" // NewestKubernetesVersion is the newest Kubernetes version to test against // NOTE: You may need to update coreDNS & etcd versions in pkg/minikube/bootstrapper/images/images.go - NewestKubernetesVersion = "v1.23.4-rc.0" + NewestKubernetesVersion = "v1.23.6-rc.0" // OldestKubernetesVersion is the oldest Kubernetes version to test against OldestKubernetesVersion = "v1.16.0" // NoKubernetesVersion is the version used when users does NOT want to install kubernetes diff --git a/pkg/minikube/constants/constants_darwin.go b/pkg/minikube/constants/constants_darwin.go index f591460935..812bd7c5b3 100644 --- a/pkg/minikube/constants/constants_darwin.go +++ b/pkg/minikube/constants/constants_darwin.go @@ -1,5 +1,4 @@ //go:build (darwin && ignore) || !gendocs -// +build darwin,ignore !gendocs /* Copyright 2016 The Kubernetes Authors All rights reserved. diff --git a/pkg/minikube/constants/constants_freebsd.go b/pkg/minikube/constants/constants_freebsd.go index c767e4b21e..6d0133a3bb 100644 --- a/pkg/minikube/constants/constants_freebsd.go +++ b/pkg/minikube/constants/constants_freebsd.go @@ -1,5 +1,4 @@ //go:build (linux && ignore) || !gendocs -// +build linux,ignore !gendocs /* Copyright 2016 The Kubernetes Authors All rights reserved. diff --git a/pkg/minikube/constants/constants_gendocs.go b/pkg/minikube/constants/constants_gendocs.go index faf04f5265..51cc444bd6 100644 --- a/pkg/minikube/constants/constants_gendocs.go +++ b/pkg/minikube/constants/constants_gendocs.go @@ -1,5 +1,4 @@ //go:build gendocs -// +build gendocs /* Copyright 2016 The Kubernetes Authors All rights reserved. diff --git a/pkg/minikube/constants/constants_linux.go b/pkg/minikube/constants/constants_linux.go index c767e4b21e..6d0133a3bb 100644 --- a/pkg/minikube/constants/constants_linux.go +++ b/pkg/minikube/constants/constants_linux.go @@ -1,5 +1,4 @@ //go:build (linux && ignore) || !gendocs -// +build linux,ignore !gendocs /* Copyright 2016 The Kubernetes Authors All rights reserved. diff --git a/pkg/minikube/constants/constants_windows.go b/pkg/minikube/constants/constants_windows.go index c17278dab5..26e542ea51 100644 --- a/pkg/minikube/constants/constants_windows.go +++ b/pkg/minikube/constants/constants_windows.go @@ -1,5 +1,4 @@ //go:build (windows && ignore) || !gendocs -// +build windows,ignore !gendocs /* Copyright 2016 The Kubernetes Authors All rights reserved. diff --git a/pkg/minikube/cruntime/containerd.go b/pkg/minikube/cruntime/containerd.go index e8bb1567fd..2b96ba21bd 100644 --- a/pkg/minikube/cruntime/containerd.go +++ b/pkg/minikube/cruntime/containerd.go @@ -70,12 +70,6 @@ oom_score = 0 [cgroup] path = "" -[proxy_plugins] -# fuse-overlayfs is used for rootless -[proxy_plugins."fuse-overlayfs"] - type = "snapshot" - address = "/run/containerd-fuse-overlayfs.sock" - [plugins] [plugins."io.containerd.monitor.v1.cgroups"] no_prometheus = false @@ -208,9 +202,6 @@ func generateContainerdConfig(cr CommandRunner, imageRepository string, kv semve } pauseImage := images.Pause(kv, imageRepository) snapshotter := "overlayfs" - if inUserNamespace { - snapshotter = "fuse-overlayfs" - } opts := struct { PodInfraContainerImage string SystemdCgroup bool @@ -239,6 +230,16 @@ func generateContainerdConfig(cr CommandRunner, imageRepository string, kv semve // Enable idempotently enables containerd on a host func (r *Containerd) Enable(disOthers, forceSystemd, inUserNamespace bool) error { + if inUserNamespace { + if err := CheckKernelCompatibility(r.Runner, 5, 11); err != nil { + // For using overlayfs + return fmt.Errorf("kernel >= 5.11 is required for rootless mode: %w", err) + } + if err := CheckKernelCompatibility(r.Runner, 5, 13); err != nil { + // For avoiding SELinux error with overlayfs + klog.Warningf("kernel >= 5.13 is recommended for rootless mode %v", err) + } + } if disOthers { if err := disableOthers(r, r.Runner); err != nil { klog.Warningf("disableOthers: %v", err) @@ -254,12 +255,6 @@ func (r *Containerd) Enable(disOthers, forceSystemd, inUserNamespace bool) error return err } - if inUserNamespace { - if err := r.Init.EnableNow("containerd-fuse-overlayfs"); err != nil { - return err - } - } - // Otherwise, containerd will fail API requests with 'Unimplemented' return r.Init.Restart("containerd") } diff --git a/pkg/minikube/cruntime/containerd_test.go b/pkg/minikube/cruntime/containerd_test.go index 1b518bf5cb..e6e29482d0 100644 --- a/pkg/minikube/cruntime/containerd_test.go +++ b/pkg/minikube/cruntime/containerd_test.go @@ -27,8 +27,6 @@ func TestAddRepoTagToImageName(t *testing.T) { imgName string want string }{ - {"kubernetesui/dashboard:v2.1.0", "docker.io/kubernetesui/dashboard:v2.1.0"}, - {"kubernetesui/metrics-scraper:v1.0.4", "docker.io/kubernetesui/metrics-scraper:v1.0.4"}, {"gcr.io/k8s-minikube/storage-provisioner:" + version.GetStorageProvisionerVersion(), "gcr.io/k8s-minikube/storage-provisioner:" + version.GetStorageProvisionerVersion()}, } for _, tc := range tests { diff --git a/pkg/minikube/cruntime/crio.go b/pkg/minikube/cruntime/crio.go index 9cbcc5238f..86af57ac97 100644 --- a/pkg/minikube/cruntime/crio.go +++ b/pkg/minikube/cruntime/crio.go @@ -150,18 +150,13 @@ func enableIPForwarding(cr CommandRunner) error { // enableRootless enables configurations for running CRI-O in Rootless Docker. // // 1. Create /etc/systemd/system/crio.service.d/10-rootless.conf to set _CRIO_ROOTLESS=1 -// 2. Create /etc/crio/crio.conf.d/10-fuse-overlayfs.conf to enable fuse-overlayfs -// 3. Reload systemd +// 2. Reload systemd // // See https://kubernetes.io/docs/tasks/administer-cluster/kubelet-in-userns/#configuring-cri func (r *CRIO) enableRootless() error { files := map[string]string{ "/etc/systemd/system/crio.service.d/10-rootless.conf": `[Service] Environment="_CRIO_ROOTLESS=1" -`, - "/etc/crio/crio.conf.d/10-fuse-overlayfs.conf": `[crio] -storage_driver = "overlay" -storage_option = ["overlay.mount_program=/usr/local/bin/fuse-overlayfs"] `, } for target, content := range files { @@ -211,6 +206,14 @@ func (r *CRIO) Enable(disOthers, forceSystemd, inUserNamespace bool) error { } } if inUserNamespace { + if err := CheckKernelCompatibility(r.Runner, 5, 11); err != nil { + // For using overlayfs + return fmt.Errorf("kernel >= 5.11 is required for rootless mode: %w", err) + } + if err := CheckKernelCompatibility(r.Runner, 5, 13); err != nil { + // For avoiding SELinux error with overlayfs + klog.Warningf("kernel >= 5.13 is recommended for rootless mode %v", err) + } if err := r.enableRootless(); err != nil { return err } diff --git a/pkg/minikube/cruntime/cruntime.go b/pkg/minikube/cruntime/cruntime.go index 514ad97670..76833ed82d 100644 --- a/pkg/minikube/cruntime/cruntime.go +++ b/pkg/minikube/cruntime/cruntime.go @@ -20,6 +20,7 @@ package cruntime import ( "fmt" "os/exec" + "strings" "github.com/blang/semver/v4" "github.com/pkg/errors" @@ -316,3 +317,22 @@ func CheckCompatibility(cr Manager) error { } return compatibleWithVersion(cr.Name(), v) } + +// CheckKernelCompatibility returns an error when the kernel is older than the specified version. +func CheckKernelCompatibility(cr CommandRunner, major, minor int) error { + expected := fmt.Sprintf("%d.%d", major, minor) + unameRes, err := cr.RunCmd(exec.Command("uname", "-r")) + if err != nil { + return err + } + actual := strings.TrimSpace(unameRes.Stdout.String()) + sortRes, err := cr.RunCmd(exec.Command("sh", "-euc", fmt.Sprintf(`(echo %s; echo %s) | sort -V | head -n1`, actual, expected))) + if err != nil { + return err + } + comparison := strings.TrimSpace(sortRes.Stdout.String()) + if comparison != expected { + return NewErrServiceVersion("kernel", expected, actual) + } + return nil +} diff --git a/pkg/minikube/download/iso.go b/pkg/minikube/download/iso.go index 994b9c68c3..76e198391d 100644 --- a/pkg/minikube/download/iso.go +++ b/pkg/minikube/download/iso.go @@ -40,7 +40,7 @@ const fileScheme = "file" // DefaultISOURLs returns a list of ISO URL's to consult by default, in priority order func DefaultISOURLs() []string { v := version.GetISOVersion() - isoBucket := "minikube/iso" + isoBucket := "minikube-builds/iso/13860" return []string{ fmt.Sprintf("https://storage.googleapis.com/%s/minikube-%s.iso", isoBucket, v), fmt.Sprintf("https://github.com/kubernetes/minikube/releases/download/%s/minikube-%s.iso", v, v), diff --git a/pkg/minikube/download/preload.go b/pkg/minikube/download/preload.go index 3c0a8ba23b..4b78e215b2 100644 --- a/pkg/minikube/download/preload.go +++ b/pkg/minikube/download/preload.go @@ -44,7 +44,7 @@ const ( // PreloadVersion is the current version of the preloaded tarball // // NOTE: You may need to bump this version up when upgrading auxiliary docker images - PreloadVersion = "v17" + PreloadVersion = "v18" // PreloadBucket is the name of the GCS bucket where preloaded volume tarballs exist PreloadBucket = "minikube-preloaded-volume-tarballs" ) diff --git a/pkg/minikube/driver/driver.go b/pkg/minikube/driver/driver.go index 34e277009a..0b2e317c93 100644 --- a/pkg/minikube/driver/driver.go +++ b/pkg/minikube/driver/driver.go @@ -24,6 +24,8 @@ import ( "strconv" "strings" + "golang.org/x/text/cases" + "golang.org/x/text/language" "k8s.io/klog/v2" "k8s.io/minikube/pkg/drivers/kic/oci" "k8s.io/minikube/pkg/minikube/constants" @@ -221,7 +223,7 @@ func FullName(name string) string { } return "Docker" default: - return strings.Title(name) + return cases.Title(language.Und).String(name) } } diff --git a/pkg/minikube/extract/extract_test.go b/pkg/minikube/extract/extract_test.go index 4217d4840b..9c8f2ef29d 100644 --- a/pkg/minikube/extract/extract_test.go +++ b/pkg/minikube/extract/extract_test.go @@ -32,16 +32,7 @@ func TestExtract(t *testing.T) { // The function we care about functions := []string{"extract.PrintToScreen"} - tempdir, err := os.MkdirTemp("", "temptestdata") - if err != nil { - t.Fatalf("Creating temp dir: %v", err) - } - defer func() { // clean up tempdir - err := os.RemoveAll(tempdir) - if err != nil { - t.Errorf("failed to clean up temp folder %q", tempdir) - } - }() + tempdir := t.TempDir() src, err := os.ReadFile("testdata/test.json") if err != nil { diff --git a/pkg/minikube/kubeconfig/kubeconfig_test.go b/pkg/minikube/kubeconfig/kubeconfig_test.go index add06fd4f9..4758fddb53 100644 --- a/pkg/minikube/kubeconfig/kubeconfig_test.go +++ b/pkg/minikube/kubeconfig/kubeconfig_test.go @@ -228,16 +228,7 @@ func TestUpdate(t *testing.T) { for _, test := range tests { t.Run(test.description, func(t *testing.T) { - tmpDir, err := os.MkdirTemp("", "") - if err != nil { - t.Fatalf("Error making temp directory %v", err) - } - defer func() { // clean up tempdir - err := os.RemoveAll(tmpDir) - if err != nil { - t.Errorf("failed to clean up temp folder %q", tmpDir) - } - }() + tmpDir := t.TempDir() test.cfg.SetPath(filepath.Join(tmpDir, "kubeconfig")) if len(test.existingCfg) != 0 { @@ -245,7 +236,7 @@ func TestUpdate(t *testing.T) { t.Fatalf("WriteFile: %v", err) } } - err = Update(test.cfg) + err := Update(test.cfg) if err != nil && !test.err { t.Errorf("Got unexpected error: %v", err) } @@ -459,16 +450,7 @@ func TestEmptyConfig(t *testing.T) { } func TestNewConfig(t *testing.T) { - dir, err := os.MkdirTemp("", ".kube") - if err != nil { - t.Fatal(err) - } - defer func() { - err := os.RemoveAll(dir) - if err != nil { - t.Errorf("Failed to remove dir %q: %v", dir, err) - } - }() + dir := t.TempDir() // setup minikube config expected := api.NewConfig() @@ -476,8 +458,7 @@ func TestNewConfig(t *testing.T) { // write actual filename := filepath.Join(dir, "config") - err = writeToFile(expected, filename) - if err != nil { + if err := writeToFile(expected, filename); err != nil { t.Fatal(err) } diff --git a/pkg/minikube/localpath/localpath_test.go b/pkg/minikube/localpath/localpath_test.go index 02da464d26..8988df943c 100644 --- a/pkg/minikube/localpath/localpath_test.go +++ b/pkg/minikube/localpath/localpath_test.go @@ -28,16 +28,7 @@ import ( ) func TestReplaceWinDriveLetterToVolumeName(t *testing.T) { - path, err := os.MkdirTemp("", "repwindl2vn") - if err != nil { - t.Fatalf("Error make tmp directory: %v", err) - } - defer func(path string) { // clean up tempdir - err := os.RemoveAll(path) - if err != nil { - t.Errorf("failed to clean up temp folder %q", path) - } - }(path) + path := t.TempDir() if runtime.GOOS != "windows" { // Replace to fake func. diff --git a/pkg/minikube/machine/cache_binaries_test.go b/pkg/minikube/machine/cache_binaries_test.go index a727a67cd8..030b1407c8 100644 --- a/pkg/minikube/machine/cache_binaries_test.go +++ b/pkg/minikube/machine/cache_binaries_test.go @@ -88,17 +88,7 @@ func TestCacheBinariesForBootstrapper(t *testing.T) { oldMinikubeHome := os.Getenv("MINIKUBE_HOME") defer os.Setenv("MINIKUBE_HOME", oldMinikubeHome) - minikubeHome, err := os.MkdirTemp("/tmp", "") - if err != nil { - t.Fatalf("error during creating tmp dir: %v", err) - } - - defer func() { // clean up tempdir - err := os.RemoveAll(minikubeHome) - if err != nil { - t.Errorf("failed to clean up temp folder %q", minikubeHome) - } - }() + minikubeHome := t.TempDir() var tc = []struct { version, clusterBootstrapper string @@ -147,19 +137,9 @@ func TestExcludedBinariesNotDownloaded(t *testing.T) { oldMinikubeHome := os.Getenv("MINIKUBE_HOME") defer os.Setenv("MINIKUBE_HOME", oldMinikubeHome) - minikubeHome, err := os.MkdirTemp("/tmp", "") - if err != nil { - t.Fatalf("error during creating tmp dir: %v", err) - } + minikubeHome := t.TempDir() os.Setenv("MINIKUBE_HOME", minikubeHome) - defer func() { // clean up tempdir - err := os.RemoveAll(minikubeHome) - if err != nil { - t.Errorf("failed to clean up temp folder %q", minikubeHome) - } - }() - if err := CacheBinariesForBootstrapper("v1.16.0", clusterBootstrapper, []string{binaryToExclude}, ""); err != nil { t.Errorf("Failed to cache binaries: %v", err) } diff --git a/pkg/minikube/machine/client_test.go b/pkg/minikube/machine/client_test.go index 1d0d1d831b..6a63feeb96 100644 --- a/pkg/minikube/machine/client_test.go +++ b/pkg/minikube/machine/client_test.go @@ -111,8 +111,7 @@ func TestLocalClientNewHost(t *testing.T) { } func TestRunNotDriver(t *testing.T) { - tempDir := testutil.MakeTempDir() - defer testutil.RemoveTempDir(tempDir) + testutil.MakeTempDir(t) StartDriver() if !localbinary.CurrentBinaryIsDockerMachine { t.Fatal("CurrentBinaryIsDockerMachine not set. This will break driver initialization.") @@ -122,8 +121,7 @@ func TestRunNotDriver(t *testing.T) { func TestRunDriver(t *testing.T) { // This test is a bit complicated. It verifies that when the root command is // called with the proper environment variables, we setup the libmachine driver. - tempDir := testutil.MakeTempDir() - defer testutil.RemoveTempDir(tempDir) + testutil.MakeTempDir(t) os.Setenv(localbinary.PluginEnvKey, localbinary.PluginEnvVal) os.Setenv(localbinary.PluginEnvDriverName, driver.VirtualBox) diff --git a/pkg/minikube/machine/cluster_test.go b/pkg/minikube/machine/cluster_test.go index c68f905821..646a704f8c 100644 --- a/pkg/minikube/machine/cluster_test.go +++ b/pkg/minikube/machine/cluster_test.go @@ -72,8 +72,7 @@ var defaultClusterConfig = config.ClusterConfig{ } func TestCreateHost(t *testing.T) { - tempDir := tests.MakeTempDir() - defer tests.RemoveTempDir(tempDir) + tests.MakeTempDir(t) download.DownloadMock = download.CreateDstDownloadMock @@ -120,8 +119,7 @@ func TestCreateHost(t *testing.T) { } func TestStartHostExists(t *testing.T) { - tempDir := tests.MakeTempDir() - defer tests.RemoveTempDir(tempDir) + tests.MakeTempDir(t) download.DownloadMock = download.CreateDstDownloadMock @@ -160,8 +158,7 @@ func TestStartHostExists(t *testing.T) { } func TestStartHostErrMachineNotExist(t *testing.T) { - tempDir := tests.MakeTempDir() - defer tests.RemoveTempDir(tempDir) + tests.MakeTempDir(t) download.DownloadMock = download.CreateDstDownloadMock @@ -210,8 +207,7 @@ func TestStartHostErrMachineNotExist(t *testing.T) { } func TestStartStoppedHost(t *testing.T) { - tempDir := tests.MakeTempDir() - defer tests.RemoveTempDir(tempDir) + tests.MakeTempDir(t) download.DownloadMock = download.CreateDstDownloadMock @@ -250,8 +246,7 @@ func TestStartStoppedHost(t *testing.T) { } func TestStartHost(t *testing.T) { - tempDir := tests.MakeTempDir() - defer tests.RemoveTempDir(tempDir) + tests.MakeTempDir(t) download.DownloadMock = download.CreateDstDownloadMock @@ -283,8 +278,7 @@ func TestStartHost(t *testing.T) { } func TestStartHostConfig(t *testing.T) { - tempDir := tests.MakeTempDir() - defer tests.RemoveTempDir(tempDir) + tests.MakeTempDir(t) download.DownloadMock = download.CreateDstDownloadMock @@ -328,8 +322,7 @@ func TestStopHostError(t *testing.T) { } func TestStopHost(t *testing.T) { - tempDir := tests.MakeTempDir() - defer tests.RemoveTempDir(tempDir) + tests.MakeTempDir(t) RegisterMockDriver(t) api := tests.NewMockAPI(t) @@ -350,8 +343,7 @@ func TestStopHost(t *testing.T) { } func TestDeleteHost(t *testing.T) { - tempDir := tests.MakeTempDir() - defer tests.RemoveTempDir(tempDir) + tests.MakeTempDir(t) RegisterMockDriver(t) api := tests.NewMockAPI(t) @@ -368,8 +360,7 @@ func TestDeleteHost(t *testing.T) { } func TestDeleteHostErrorDeletingVM(t *testing.T) { - tempDir := tests.MakeTempDir() - defer tests.RemoveTempDir(tempDir) + tests.MakeTempDir(t) RegisterMockDriver(t) api := tests.NewMockAPI(t) @@ -387,8 +378,7 @@ func TestDeleteHostErrorDeletingVM(t *testing.T) { } func TestDeleteHostErrorDeletingFiles(t *testing.T) { - tempDir := tests.MakeTempDir() - defer tests.RemoveTempDir(tempDir) + tests.MakeTempDir(t) RegisterMockDriver(t) api := tests.NewMockAPI(t) @@ -403,8 +393,7 @@ func TestDeleteHostErrorDeletingFiles(t *testing.T) { } func TestDeleteHostErrMachineNotExist(t *testing.T) { - tempDir := tests.MakeTempDir() - defer tests.RemoveTempDir(tempDir) + tests.MakeTempDir(t) RegisterMockDriver(t) api := tests.NewMockAPI(t) @@ -421,8 +410,7 @@ func TestDeleteHostErrMachineNotExist(t *testing.T) { } func TestStatus(t *testing.T) { - tempDir := tests.MakeTempDir() - defer tests.RemoveTempDir(tempDir) + tests.MakeTempDir(t) RegisterMockDriver(t) api := tests.NewMockAPI(t) diff --git a/pkg/minikube/machine/filesync_test.go b/pkg/minikube/machine/filesync_test.go index a766ce0f1e..9eb7541cbe 100644 --- a/pkg/minikube/machine/filesync_test.go +++ b/pkg/minikube/machine/filesync_test.go @@ -97,8 +97,7 @@ func TestAssetsFromDir(t *testing.T) { for _, test := range tests { t.Run(test.description, func(t *testing.T) { - testDir := testutil.MakeTempDir() - defer testutil.RemoveTempDir(testDir) + testDir := testutil.MakeTempDir(t) testDirs = append(testDirs, testDir) testFileBaseDir := filepath.Join(testDir, test.baseDir) diff --git a/pkg/minikube/machine/fix.go b/pkg/minikube/machine/fix.go index 20cd801757..02c451128a 100644 --- a/pkg/minikube/machine/fix.go +++ b/pkg/minikube/machine/fix.go @@ -74,7 +74,7 @@ func fixHost(api libmachine.API, cc *config.ClusterConfig, n *config.Node) (*hos } // Avoid reprovisioning "none" driver because provision.Detect requires SSH - if !driver.BareMetal(h.Driver.DriverName()) { + if !driver.BareMetal(driverName) { e := engineOptions(*cc) h.HostOptions.EngineOptions.Env = e.Env err = provisionDockerMachine(h) @@ -91,12 +91,7 @@ func fixHost(api libmachine.API, cc *config.ClusterConfig, n *config.Node) (*hos return h, errors.Wrap(err, "post-start") } - if driver.BareMetal(h.Driver.DriverName()) { - klog.Infof("%s is local, skipping auth/time setup (requires ssh)", driverName) - return h, nil - } - - return h, ensureSyncedGuestClock(h, driverName) + return h, nil } func recreateIfNeeded(api libmachine.API, cc *config.ClusterConfig, n *config.Node, h *host.Host) (*host.Host, error) { diff --git a/pkg/minikube/machine/start.go b/pkg/minikube/machine/start.go index 44cd1fbe12..895d2993d8 100644 --- a/pkg/minikube/machine/start.go +++ b/pkg/minikube/machine/start.go @@ -86,14 +86,18 @@ func StartHost(api libmachine.API, cfg *config.ClusterConfig, n *config.Node) (* if err != nil { return nil, false, errors.Wrapf(err, "exists: %s", machineName) } + var h *host.Host if !exists { klog.Infof("Provisioning new machine with config: %+v %+v", cfg, n) - h, err := createHost(api, cfg, n) + h, err = createHost(api, cfg, n) + } else { + klog.Infoln("Skipping create...Using existing machine configuration") + h, err = fixHost(api, cfg, n) + } + if err != nil { return h, exists, err } - klog.Infoln("Skipping create...Using existing machine configuration") - h, err := fixHost(api, cfg, n) - return h, exists, err + return h, exists, ensureSyncedGuestClock(h, cfg.Driver) } // engineOptions returns docker engine options for the dockerd running inside minikube diff --git a/pkg/minikube/node/cache.go b/pkg/minikube/node/cache.go index a965bf2cd4..40432c7c03 100644 --- a/pkg/minikube/node/cache.go +++ b/pkg/minikube/node/cache.go @@ -137,12 +137,10 @@ func beginDownloadKicBaseImage(g *errgroup.Group, cc *config.ClusterConfig, down for _, img := range append([]string{baseImg}, kic.FallbackImages...) { var err error - if driver.IsDocker(cc.Driver) { - if download.ImageExistsInDaemon(img) { - klog.Infof("%s exists in daemon, skipping load", img) - finalImg = img - return nil - } + if driver.IsDocker(cc.Driver) && download.ImageExistsInDaemon(img) && !downloadOnly { + klog.Infof("%s exists in daemon, skipping load", img) + finalImg = img + return nil } klog.Infof("Downloading %s to local cache", img) diff --git a/pkg/minikube/notify/notify_test.go b/pkg/minikube/notify/notify_test.go index b1166a5266..40e43af3f5 100644 --- a/pkg/minikube/notify/notify_test.go +++ b/pkg/minikube/notify/notify_test.go @@ -36,8 +36,7 @@ import ( ) func TestShouldCheckURLVersion(t *testing.T) { - tempDir := tests.MakeTempDir() - defer tests.RemoveTempDir(tempDir) + tempDir := tests.MakeTempDir(t) lastUpdateCheckFilePath := filepath.Join(tempDir, "last_update_check") @@ -75,8 +74,7 @@ func TestShouldCheckURLVersion(t *testing.T) { } func TestShouldCheckURLBetaVersion(t *testing.T) { - tempDir := tests.MakeTempDir() - defer tests.RemoveTempDir(tempDir) + tempDir := tests.MakeTempDir(t) lastUpdateCheckFilePath := filepath.Join(tempDir, "last_update_check") viper.Set(config.WantUpdateNotification, true) @@ -169,8 +167,7 @@ var mockLatestVersionFromURL = semver.Make func TestMaybePrintUpdateText(t *testing.T) { latestVersionFromURL = mockLatestVersionFromURL - tempDir := tests.MakeTempDir() - defer tests.RemoveTempDir(tempDir) + tempDir := tests.MakeTempDir(t) var tc = []struct { wantUpdateNotification bool diff --git a/pkg/minikube/out/out_test.go b/pkg/minikube/out/out_test.go index acaf13ac40..c3d4ee195a 100644 --- a/pkg/minikube/out/out_test.go +++ b/pkg/minikube/out/out_test.go @@ -26,6 +26,7 @@ import ( "github.com/Delta456/box-cli-maker/v2" "github.com/spf13/pflag" + "golang.org/x/text/language" "k8s.io/minikube/pkg/minikube/style" "k8s.io/minikube/pkg/minikube/tests" @@ -34,7 +35,7 @@ import ( func TestOutT(t *testing.T) { // Set the system locale to Arabic and define a dummy translation file. - translate.SetPreferredLanguage("ar") + translate.SetPreferredLanguage(language.Arabic) translate.Translations = map[string]interface{}{ "Installing Kubernetes version {{.version}} ...": "... {{.version}} تثبيت Kubernetes الإصدار", diff --git a/pkg/minikube/perf/logs_test.go b/pkg/minikube/perf/logs_test.go index 31a8d8c902..1f4571bba2 100644 --- a/pkg/minikube/perf/logs_test.go +++ b/pkg/minikube/perf/logs_test.go @@ -1,5 +1,4 @@ //go:build linux || darwin -// +build linux darwin /* Copyright 2020 The Kubernetes Authors All rights reserved. diff --git a/pkg/minikube/perf/result_manager.go b/pkg/minikube/perf/result_manager.go index 6ab86d3282..49866d4bbb 100644 --- a/pkg/minikube/perf/result_manager.go +++ b/pkg/minikube/perf/result_manager.go @@ -92,7 +92,7 @@ func (rm *resultManager) summarizeResults(binaries []*Binary) { t.SetHeader([]string{"Command", binaries[0].Name(), binaries[1].Name()}) for _, v := range table { // Add warning sign if PR average is 5 seconds higher than average at HEAD - if len(v) > 3 { + if len(v) >= 3 { prTime, _ := strconv.ParseFloat(v[2][:len(v[2])-1], 64) headTime, _ := strconv.ParseFloat(v[1][:len(v[1])-1], 64) if prTime-headTime > threshold { diff --git a/pkg/minikube/registry/drvs/docker/docker.go b/pkg/minikube/registry/drvs/docker/docker.go index cc6bb558b8..001bc7fef9 100644 --- a/pkg/minikube/registry/drvs/docker/docker.go +++ b/pkg/minikube/registry/drvs/docker/docker.go @@ -22,12 +22,13 @@ import ( "os" "os/exec" "runtime" - "strconv" "strings" "time" + "github.com/blang/semver/v4" "github.com/docker/machine/libmachine/drivers" "github.com/pkg/errors" + "github.com/spf13/viper" "k8s.io/klog/v2" "k8s.io/minikube/pkg/drivers/kic" "k8s.io/minikube/pkg/drivers/kic/oci" @@ -37,8 +38,11 @@ import ( "k8s.io/minikube/pkg/minikube/registry" ) -var docURL = "https://minikube.sigs.k8s.io/docs/drivers/docker/" -var minDockerVersion = []int{18, 9, 0} +const ( + docURL = "https://minikube.sigs.k8s.io/docs/drivers/docker/" + minDockerVersion = "18.09.0" + recommendedDockerVersion = "20.10.0" +) func init() { if err := registry.Register(registry.DriverDef{ @@ -83,6 +87,7 @@ func configure(cc config.ClusterConfig, n config.Node) (interface{}, error) { ContainerRuntime: cc.KubernetesConfig.ContainerRuntime, ExtraArgs: extraArgs, Network: cc.Network, + Subnet: cc.Subnet, ListenAddress: cc.ListenAddress, }), nil } @@ -130,11 +135,13 @@ func status() (retState registry.State) { }() klog.Infof("docker version: %s", o) - s := checkDockerVersion(strings.TrimSpace(string(o))) // remove '\n' from o at the end - if s.Error != nil { - return s + if !viper.GetBool("force") { + s := checkDockerVersion(strings.TrimSpace(string(o))) // remove '\n' from o at the end + if s.Error != nil { + return s + } + recordImprovement(s) } - recordImprovement(s) si, err := oci.CachedDaemonInfo("docker") if err != nil { @@ -174,8 +181,9 @@ func checkDockerVersion(o string) registry.State { } } - hintInstallOfficial := fmt.Sprintf("Install the official release of %s (Minimum recommended version is %2d.%02d.%d, current version is %s)", - driver.FullName(driver.Docker), minDockerVersion[0], minDockerVersion[1], minDockerVersion[2], parts[1]) + versionMsg := fmt.Sprintf("(Minimum recommended version is %s, minimum supported version is %s, current version is %s)", recommendedDockerVersion, minDockerVersion, parts[1]) + hintInstallOfficial := fmt.Sprintf("Install the official release of %s %s", driver.FullName(driver.Docker), versionMsg) + hintUpdate := fmt.Sprintf("Upgrade %s to a newer version %s", driver.FullName(driver.Docker), versionMsg) p := strings.SplitN(parts[1], ".", 3) switch l := len(p); l { @@ -195,31 +203,40 @@ func checkDockerVersion(o string) registry.State { } } - for i, s := range p { - k, err := strconv.Atoi(s) - if err != nil { - return registry.State{ - Installed: true, - Healthy: true, - NeedsImprovement: true, - Fix: hintInstallOfficial, - Doc: docURL, - } - } - - if k > minDockerVersion[i] { - return registry.State{Installed: true, Healthy: true, Error: nil} - } else if k < minDockerVersion[i] { - return registry.State{ - Installed: true, - Healthy: true, - NeedsImprovement: true, - Fix: fmt.Sprintf("Upgrade %s to a newer version (Minimum recommended version is %2d.%02d.%d)", driver.FullName(driver.Docker), minDockerVersion[0], minDockerVersion[1], minDockerVersion[2]), - Doc: docURL + "#requirements"} + currSemver, err := semver.ParseTolerant(strings.Join(p, ".")) + if err != nil { + return registry.State{ + Installed: true, + Healthy: true, + NeedsImprovement: true, + Fix: hintInstallOfficial, + Doc: docURL, } } + // these values are consts and their conversions are covered in unit tests + minSemver, _ := semver.ParseTolerant(minDockerVersion) + recSemver, _ := semver.ParseTolerant(recommendedDockerVersion) - return registry.State{Installed: true, Healthy: true, Error: nil} + if currSemver.GTE(recSemver) { + return registry.State{Installed: true, Healthy: true, Error: nil} + } + if currSemver.GTE(minSemver) { + return registry.State{ + Installed: true, + Healthy: true, + NeedsImprovement: true, + Fix: hintUpdate, + Doc: docURL + "#requirements"} + } + + return registry.State{ + Reason: "PROVIDER_DOCKER_VERSION_LOW", + Error: oci.ErrMinDockerVersion, + Installed: true, + Healthy: false, + NeedsImprovement: true, + Fix: hintUpdate, + Doc: docURL + "#requirements"} } // checkNeedsImprovement if overlay mod is installed on a system diff --git a/pkg/minikube/registry/drvs/docker/docker_test.go b/pkg/minikube/registry/drvs/docker/docker_test.go index 0d3e6ac890..3d03231f3c 100644 --- a/pkg/minikube/registry/drvs/docker/docker_test.go +++ b/pkg/minikube/registry/drvs/docker/docker_test.go @@ -21,6 +21,7 @@ import ( "strings" "testing" + "github.com/blang/semver/v4" "k8s.io/minikube/pkg/minikube/driver" ) @@ -55,30 +56,41 @@ func appendVersionVariations(tc []testCase, v []int, reason string) []testCase { return appendedTc } +func stringToIntSlice(t *testing.T, s string) []int { + sem, err := semver.ParseTolerant(s) + if err != nil { + t.Fatalf("failed to parse %s to semver: %v", s, err) + } + return []int{int(sem.Major), int(sem.Minor), int(sem.Patch)} +} + func TestCheckDockerVersion(t *testing.T) { + recParts := stringToIntSlice(t, recommendedDockerVersion) + minParts := stringToIntSlice(t, minDockerVersion) + tc := []testCase{ { version: "windows-20.0.1", expect: "PROVIDER_DOCKER_WINDOWS_CONTAINERS", }, { - version: fmt.Sprintf("linux-%02d.%02d", minDockerVersion[0], minDockerVersion[1]), + version: fmt.Sprintf("linux-%02d.%02d", recParts[0], recParts[1]), expect: "", }, { - version: fmt.Sprintf("linux-%02d.%02d.%02d", minDockerVersion[0], minDockerVersion[1], minDockerVersion[2]), + version: fmt.Sprintf("linux-%s", recommendedDockerVersion), expect: "", }, } for i := 0; i < 3; i++ { v := make([]int, 3) - copy(v, minDockerVersion) + copy(v, minParts) - v[i] = minDockerVersion[i] + 1 + v[i] = minParts[i] + 1 tc = appendVersionVariations(tc, v, "") - v[i] = minDockerVersion[i] - 1 + v[i] = minParts[i] - 1 if v[2] < 0 { // skip test if patch version is negative number. continue @@ -86,27 +98,39 @@ func TestCheckDockerVersion(t *testing.T) { tc = appendVersionVariations(tc, v, "PROVIDER_DOCKER_VERSION_LOW") } + recommendedSupported := fmt.Sprintf("Minimum recommended version is %s, minimum supported version is %s", recommendedDockerVersion, minDockerVersion) + install := fmt.Sprintf("Install the official release of %s (%s, current version is %%s)", driver.FullName(driver.Docker), recommendedSupported) + update := fmt.Sprintf("Upgrade %s to a newer version (%s, current version is %%s)", driver.FullName(driver.Docker), recommendedSupported) tc = append(tc, []testCase{ { // "dev" is set when Docker (Moby) was installed with `make binary && make install` - version: "linux-dev", - expect: "", - expectFixContains: fmt.Sprintf("Install the official release of %s (Minimum recommended version is %02d.%02d.%d, current version is dev)", - driver.FullName(driver.Docker), minDockerVersion[0], minDockerVersion[1], minDockerVersion[2]), + version: "linux-dev", + expect: "", + expectFixContains: fmt.Sprintf(install, "dev"), }, { // "library-import" is set when Docker (Moby) was installed with `go build github.com/docker/docker/cmd/dockerd` (unrecommended, but valid) - version: "linux-library-import", - expect: "", - expectFixContains: fmt.Sprintf("Install the official release of %s (Minimum recommended version is %02d.%02d.%d, current version is library-import)", - driver.FullName(driver.Docker), minDockerVersion[0], minDockerVersion[1], minDockerVersion[2]), + version: "linux-library-import", + expect: "", + expectFixContains: fmt.Sprintf(install, "library-import"), }, { // "foo.bar.baz" is a triplet that cannot be parsed as "%02d.%02d.%d" - version: "linux-foo.bar.baz", - expect: "", - expectFixContains: fmt.Sprintf("Install the official release of %s (Minimum recommended version is %02d.%02d.%d, current version is foo.bar.baz)", - driver.FullName(driver.Docker), minDockerVersion[0], minDockerVersion[1], minDockerVersion[2]), + version: "linux-foo.bar.baz", + expect: "", + expectFixContains: fmt.Sprintf(install, "foo.bar.baz"), + }, + { + // "linux-18.09.9" is older than minimum recommended version + version: "linux-18.09.9", + expect: "", + expectFixContains: fmt.Sprintf(update, "18.09.9"), + }, + { + // "linux-18.06.2" is older than minimum required version + version: "linux-18.06.2", + expect: "PROVIDER_DOCKER_VERSION_LOW", + expectFixContains: fmt.Sprintf(update, "18.06.2"), }, }...) diff --git a/pkg/minikube/registry/drvs/hyperkit/hyperkit.go b/pkg/minikube/registry/drvs/hyperkit/hyperkit.go index 3ac958c72e..1280fc1b34 100644 --- a/pkg/minikube/registry/drvs/hyperkit/hyperkit.go +++ b/pkg/minikube/registry/drvs/hyperkit/hyperkit.go @@ -1,5 +1,4 @@ //go:build darwin -// +build darwin /* Copyright 2018 The Kubernetes Authors All rights reserved. diff --git a/pkg/minikube/registry/drvs/hyperkit/hyperkit_test.go b/pkg/minikube/registry/drvs/hyperkit/hyperkit_test.go index da59599c7b..66ba12217d 100644 --- a/pkg/minikube/registry/drvs/hyperkit/hyperkit_test.go +++ b/pkg/minikube/registry/drvs/hyperkit/hyperkit_test.go @@ -1,5 +1,4 @@ //go:build darwin -// +build darwin /* Copyright 2019 The Kubernetes Authors All rights reserved. diff --git a/pkg/minikube/registry/drvs/hyperv/hyperv.go b/pkg/minikube/registry/drvs/hyperv/hyperv.go index e80710df4c..7a3836c0f8 100644 --- a/pkg/minikube/registry/drvs/hyperv/hyperv.go +++ b/pkg/minikube/registry/drvs/hyperv/hyperv.go @@ -1,5 +1,4 @@ //go:build windows -// +build windows /* Copyright 2018 The Kubernetes Authors All rights reserved. @@ -99,7 +98,7 @@ func status() registry.State { cmd := exec.CommandContext(ctx, path, "-NoProfile", "-NonInteractive", "@(Get-Wmiobject Win32_ComputerSystem).HypervisorPresent") out, err := cmd.CombinedOutput() if err != nil { - wmiError:= fmt.Errorf("%s failed:\n%s ", strings.Join(cmd.Args, " "), out) + wmiError := fmt.Errorf("%s failed:\n%s ", strings.Join(cmd.Args, " "), out) errorMessage := fmt.Errorf("%s\n%s", cimError, wmiError) fixMessage := "Start PowerShell as an Administrator" return registry.State{Installed: false, Running: true, Error: errorMessage, Fix: fixMessage, Doc: docURL} diff --git a/pkg/minikube/registry/drvs/hyperv/powershell.go b/pkg/minikube/registry/drvs/hyperv/powershell.go index 10809aabb6..6e3f6d14dd 100644 --- a/pkg/minikube/registry/drvs/hyperv/powershell.go +++ b/pkg/minikube/registry/drvs/hyperv/powershell.go @@ -1,5 +1,4 @@ //go:build windows -// +build windows /* Copyright 2018 The Kubernetes Authors All rights reserved. diff --git a/pkg/minikube/registry/drvs/hyperv/vswitch.go b/pkg/minikube/registry/drvs/hyperv/vswitch.go index 726a4c1a4d..0bbea59c8f 100644 --- a/pkg/minikube/registry/drvs/hyperv/vswitch.go +++ b/pkg/minikube/registry/drvs/hyperv/vswitch.go @@ -1,5 +1,4 @@ //go:build windows -// +build windows /* Copyright 2019 The Kubernetes Authors All rights reserved. diff --git a/pkg/minikube/registry/drvs/kvm2/kvm2.go b/pkg/minikube/registry/drvs/kvm2/kvm2.go index 7e071616f6..7c076ca22a 100644 --- a/pkg/minikube/registry/drvs/kvm2/kvm2.go +++ b/pkg/minikube/registry/drvs/kvm2/kvm2.go @@ -1,5 +1,4 @@ //go:build linux -// +build linux /* Copyright 2018 The Kubernetes Authors All rights reserved. diff --git a/pkg/minikube/registry/drvs/none/none.go b/pkg/minikube/registry/drvs/none/none.go index 4bef620f08..22a183281f 100644 --- a/pkg/minikube/registry/drvs/none/none.go +++ b/pkg/minikube/registry/drvs/none/none.go @@ -1,5 +1,4 @@ //go:build linux -// +build linux /* Copyright 2018 The Kubernetes Authors All rights reserved. @@ -60,10 +59,6 @@ func status() registry.State { return registry.State{Running: true, Error: err, Fix: "iptables must be installed", Doc: "https://minikube.sigs.k8s.io/docs/reference/drivers/none/"} } - if _, err := exec.LookPath("docker"); err != nil { - return registry.State{Running: true, Error: err, Installed: false, Fix: "Install docker", Doc: "https://minikube.sigs.k8s.io/docs/reference/drivers/none/"} - } - u, err := user.Current() if err != nil { return registry.State{Running: true, Error: err, Healthy: false, Doc: "https://minikube.sigs.k8s.io/docs/reference/drivers/none/"} diff --git a/pkg/minikube/registry/drvs/parallels/parallels.go b/pkg/minikube/registry/drvs/parallels/parallels.go index 728da968b6..d03143d7c0 100644 --- a/pkg/minikube/registry/drvs/parallels/parallels.go +++ b/pkg/minikube/registry/drvs/parallels/parallels.go @@ -1,5 +1,4 @@ //go:build darwin -// +build darwin /* Copyright 2018 The Kubernetes Authors All rights reserved. diff --git a/pkg/minikube/registry/drvs/podman/podman.go b/pkg/minikube/registry/drvs/podman/podman.go index f92220db87..ad3e6afc42 100644 --- a/pkg/minikube/registry/drvs/podman/podman.go +++ b/pkg/minikube/registry/drvs/podman/podman.go @@ -96,6 +96,7 @@ func configure(cc config.ClusterConfig, n config.Node) (interface{}, error) { ContainerRuntime: cc.KubernetesConfig.ContainerRuntime, ExtraArgs: extraArgs, ListenAddress: cc.ListenAddress, + Subnet: cc.Subnet, }), nil } diff --git a/pkg/minikube/registry/drvs/vmwarefusion/vmwarefusion.go b/pkg/minikube/registry/drvs/vmwarefusion/vmwarefusion.go index 7c7e6304d5..0beb93ca83 100644 --- a/pkg/minikube/registry/drvs/vmwarefusion/vmwarefusion.go +++ b/pkg/minikube/registry/drvs/vmwarefusion/vmwarefusion.go @@ -1,5 +1,4 @@ //go:build darwin -// +build darwin /* Copyright 2018 The Kubernetes Authors All rights reserved. diff --git a/pkg/minikube/schedule/daemonize_unix.go b/pkg/minikube/schedule/daemonize_unix.go index 83aeb907a0..7dd9d39320 100644 --- a/pkg/minikube/schedule/daemonize_unix.go +++ b/pkg/minikube/schedule/daemonize_unix.go @@ -1,5 +1,4 @@ //go:build !windows -// +build !windows /* Copyright 2020 The Kubernetes Authors All rights reserved. diff --git a/pkg/minikube/schedule/daemonize_windows.go b/pkg/minikube/schedule/daemonize_windows.go index 4b21455ba9..a2db487a7f 100644 --- a/pkg/minikube/schedule/daemonize_windows.go +++ b/pkg/minikube/schedule/daemonize_windows.go @@ -1,5 +1,4 @@ //go:build windows -// +build windows /* Copyright 2020 The Kubernetes Authors All rights reserved. diff --git a/pkg/minikube/tests/dir_utils.go b/pkg/minikube/tests/dir_utils.go index b80ed2d00e..1cae465fd3 100644 --- a/pkg/minikube/tests/dir_utils.go +++ b/pkg/minikube/tests/dir_utils.go @@ -18,40 +18,27 @@ package tests import ( "bytes" - "log" "os" "path/filepath" + "testing" "k8s.io/minikube/pkg/minikube/localpath" ) // MakeTempDir creates the temp dir and returns the path -func MakeTempDir() string { - tempDir, err := os.MkdirTemp("", "minipath") - if err != nil { - log.Fatal(err) - } +func MakeTempDir(t *testing.T) string { + tempDir := t.TempDir() tempDir = filepath.Join(tempDir, ".minikube") - err = os.MkdirAll(filepath.Join(tempDir, "addons"), 0777) - if err != nil { - log.Fatal(err) + if err := os.MkdirAll(filepath.Join(tempDir, "addons"), 0777); err != nil { + t.Fatal(err) } - err = os.MkdirAll(filepath.Join(tempDir, "cache"), 0777) - if err != nil { - log.Fatal(err) + if err := os.MkdirAll(filepath.Join(tempDir, "cache"), 0777); err != nil { + t.Fatal(err) } os.Setenv(localpath.MinikubeHome, tempDir) return localpath.MiniPath() } -// RemoveTempDir removes the temp dir -func RemoveTempDir(tempdir string) { - if filepath.Base(tempdir) == ".minikube" { - tempdir = filepath.Dir(tempdir) - } - os.RemoveAll(tempdir) -} - // FakeFile satisfies fdWriter type FakeFile struct { b bytes.Buffer diff --git a/pkg/minikube/translate/translate.go b/pkg/minikube/translate/translate.go index 48e2ab9de3..52c3139351 100644 --- a/pkg/minikube/translate/translate.go +++ b/pkg/minikube/translate/translate.go @@ -19,11 +19,9 @@ package translate import ( "encoding/json" "fmt" - "os" - "runtime" "strings" - "github.com/cloudfoundry-attic/jibber_jabber" + "github.com/Xuanwo/go-locale" "golang.org/x/text/language" "k8s.io/klog/v2" @@ -62,20 +60,11 @@ func T(s string) string { // DetermineLocale finds the system locale and sets the preferred language for output appropriately. func DetermineLocale() { - var locale string - // Allow windows users to overload the same env vars as unix users - if runtime.GOOS == "windows" { - locale = os.Getenv("LC_ALL") + tag, err := locale.Detect() + if err != nil { + klog.V(1).Infof("Getting system locale failed: %v", err) } - if locale == "" { - var err error - locale, err = jibber_jabber.DetectIETF() - if err != nil { - klog.V(1).Infof("Getting system locale failed: %v", err) - locale = "" - } - } - SetPreferredLanguage(locale) + SetPreferredLanguage(tag) // Load translations for preferred language into memory. p := preferredLanguage.String() @@ -102,30 +91,11 @@ func DetermineLocale() { } -// setPreferredLanguageTag configures which language future messages should use. -func setPreferredLanguageTag(l language.Tag) { +// SetPreferredLanguage configures which language future messages should use. +func SetPreferredLanguage(tag language.Tag) { // output message only if verbosity level is set and we still haven't got all the flags parsed in main() - klog.V(1).Infof("Setting Language to %s ...", l) - preferredLanguage = l -} - -// SetPreferredLanguage configures which language future messages should use, based on a LANG string. -func SetPreferredLanguage(s string) { - // "C" is commonly used to denote a neutral POSIX locale. See http://pubs.opengroup.org/onlinepubs/009695399/basedefs/xbd_chap07.html#tag_07_02 - if s == "" || s == "C" { - setPreferredLanguageTag(defaultLanguage) - return - } - // Handles "de_DE" or "de_DE.utf8" - // We don't process encodings, since Rob Pike invented utf8 and we're mostly stuck with it. - // Fallback to the default language if not detected - parts := strings.Split(s, ".") - l, err := language.Parse(parts[0]) - if err != nil { - setPreferredLanguageTag(defaultLanguage) - return - } - setPreferredLanguageTag(l) + klog.V(1).Infof("Setting Language to %s ...", tag) + preferredLanguage = tag } // GetPreferredLanguage returns the preferred language tag. diff --git a/pkg/minikube/translate/translate_test.go b/pkg/minikube/translate/translate_test.go index dd5893ad87..f24eb215d4 100644 --- a/pkg/minikube/translate/translate_test.go +++ b/pkg/minikube/translate/translate_test.go @@ -27,32 +27,6 @@ import ( "golang.org/x/text/language" ) -func TestSetPreferredLanguage(t *testing.T) { - var tests = []struct { - input string - want language.Tag - }{ - {"", language.AmericanEnglish}, - {"C", language.AmericanEnglish}, - {"zh", language.Chinese}, - {"fr_FR.utf8", language.French}, - {"zzyy.utf8", language.AmericanEnglish}, - } - for _, tc := range tests { - t.Run(tc.input, func(t *testing.T) { - // Set something so that we can assert change. - SetPreferredLanguage(tc.input) - - want, _ := tc.want.Base() - got, _ := GetPreferredLanguage().Base() - if got != want { - t.Errorf("SetPreferredLanguage(%s) = %q, want %q", tc.input, got, want) - } - }) - } - -} - func TestT(t *testing.T) { var tests = []struct { description, input, expected string diff --git a/pkg/minikube/tunnel/route_darwin_test.go b/pkg/minikube/tunnel/route_darwin_test.go index b2cc6370d0..c1e673e78e 100644 --- a/pkg/minikube/tunnel/route_darwin_test.go +++ b/pkg/minikube/tunnel/route_darwin_test.go @@ -1,5 +1,4 @@ //go:build darwin && integration -// +build darwin,integration /* Copyright 2018 The Kubernetes Authors All rights reserved. diff --git a/pkg/minikube/tunnel/route_linux_test.go b/pkg/minikube/tunnel/route_linux_test.go index 549aef04a9..4b1bb4b378 100644 --- a/pkg/minikube/tunnel/route_linux_test.go +++ b/pkg/minikube/tunnel/route_linux_test.go @@ -1,5 +1,4 @@ //go:build linux && integration -// +build linux,integration /* Copyright 2018 The Kubernetes Authors All rights reserved. diff --git a/pkg/minikube/tunnel/route_windows_test.go b/pkg/minikube/tunnel/route_windows_test.go index 89c9b11fa7..43e8ab6504 100644 --- a/pkg/minikube/tunnel/route_windows_test.go +++ b/pkg/minikube/tunnel/route_windows_test.go @@ -1,5 +1,4 @@ //go:build windows && integration -// +build windows,integration /* Copyright 2018 The Kubernetes Authors All rights reserved. diff --git a/pkg/util/crypto_test.go b/pkg/util/crypto_test.go index e285bc8363..a27d6312b0 100644 --- a/pkg/util/crypto_test.go +++ b/pkg/util/crypto_test.go @@ -28,16 +28,7 @@ import ( ) func TestGenerateCACert(t *testing.T) { - tmpDir, err := os.MkdirTemp("", "") - defer func() { // clean up tempdir - err := os.RemoveAll(tmpDir) - if err != nil { - t.Errorf("failed to clean up temp folder %q", tmpDir) - } - }() - if err != nil { - t.Fatalf("Error generating tmpdir: %v", err) - } + tmpDir := t.TempDir() certPath := filepath.Join(tmpDir, "cert") keyPath := filepath.Join(tmpDir, "key") @@ -61,33 +52,13 @@ func TestGenerateCACert(t *testing.T) { } func TestGenerateSignedCert(t *testing.T) { - tmpDir, err := os.MkdirTemp("", "") - defer func() { // clean up tempdir - err := os.RemoveAll(tmpDir) - if err != nil { - t.Errorf("failed to clean up temp folder %q", tmpDir) - } - }() - if err != nil { - t.Fatalf("Error generating tmpdir: %v", err) - } - - signerTmpDir, err := os.MkdirTemp("", "") - defer func() { // clean up tempdir - err := os.RemoveAll(signerTmpDir) - if err != nil { - t.Errorf("failed to clean up temp folder %q", signerTmpDir) - } - }() - if err != nil { - t.Fatalf("Error generating signer tmpdir: %v", err) - } + tmpDir := t.TempDir() + signerTmpDir := t.TempDir() validSignerCertPath := filepath.Join(signerTmpDir, "cert") validSignerKeyPath := filepath.Join(signerTmpDir, "key") - err = GenerateCACert(validSignerCertPath, validSignerKeyPath, constants.APIServerName) - if err != nil { + if err := GenerateCACert(validSignerCertPath, validSignerKeyPath, constants.APIServerName); err != nil { t.Fatalf("Error generating signer cert") } diff --git a/pkg/util/utils_test.go b/pkg/util/utils_test.go index 81ded7d025..71841d7a21 100644 --- a/pkg/util/utils_test.go +++ b/pkg/util/utils_test.go @@ -80,20 +80,10 @@ func TestParseKubernetesVersion(t *testing.T) { } func TestChownR(t *testing.T) { - testDir, err := os.MkdirTemp(os.TempDir(), "") - if nil != err { + testDir := t.TempDir() + if _, err := os.Create(testDir + "/TestChownR"); err != nil { return } - _, err = os.Create(testDir + "/TestChownR") - if nil != err { - return - } - defer func() { // clean up tempdir - err := os.RemoveAll(testDir) - if err != nil { - t.Errorf("failed to clean up temp folder %q", testDir) - } - }() cases := []struct { name string @@ -122,7 +112,7 @@ func TestChownR(t *testing.T) { } for _, c := range cases { t.Run(c.name, func(t *testing.T) { - err = ChownR(testDir+"/TestChownR", c.uid, c.gid) + err := ChownR(testDir+"/TestChownR", c.uid, c.gid) fileInfo, _ := os.Stat(testDir + "/TestChownR") fileSys := fileInfo.Sys() if (nil != err) != c.expectedError || ((false == c.expectedError) && (fileSys.(*syscall.Stat_t).Gid != uint32(c.gid) || fileSys.(*syscall.Stat_t).Uid != uint32(c.uid))) { @@ -133,25 +123,13 @@ func TestChownR(t *testing.T) { } func TestMaybeChownDirRecursiveToMinikubeUser(t *testing.T) { - testDir, err := os.MkdirTemp(os.TempDir(), "") - if nil != err { + testDir := t.TempDir() + if _, err := os.Create(testDir + "/TestChownR"); nil != err { return } - _, err = os.Create(testDir + "/TestChownR") - if nil != err { - return - } - - defer func() { // clean up tempdir - err := os.RemoveAll(testDir) - if err != nil { - t.Errorf("failed to clean up temp folder %q", testDir) - } - }() if os.Getenv("CHANGE_MINIKUBE_NONE_USER") == "" { - err = os.Setenv("CHANGE_MINIKUBE_NONE_USER", "1") - if nil != err { + if err := os.Setenv("CHANGE_MINIKUBE_NONE_USER", "1"); nil != err { t.Error("failed to set env: CHANGE_MINIKUBE_NONE_USER") } } @@ -187,7 +165,7 @@ func TestMaybeChownDirRecursiveToMinikubeUser(t *testing.T) { for _, c := range cases { t.Run(c.name, func(t *testing.T) { - err = MaybeChownDirRecursiveToMinikubeUser(c.dir) + err := MaybeChownDirRecursiveToMinikubeUser(c.dir) if (nil != err) != c.expectedError { t.Errorf("expectedError: %v, got: %v", c.expectedError, err) } diff --git a/site/content/en/docs/commands/start.md b/site/content/en/docs/commands/start.md index 6256687cf8..51a34c33b3 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.30@sha256:02c921df998f95e849058af14de7045efc3954d90320967418a0d1f182bbc0b2") + --base-image string The base image to use for docker/podman drivers. Intended for local development. (default "gcr.io/k8s-minikube/kicbase-builds:v0.0.30-1647797120-13815@sha256:90e8f7ee4065da728c0b80d303827e05ce4421985fe9bd7bdca30a55218347b5") --binary-mirror string Location to fetch kubectl, kubelet, & kubeadm binaries from. --cache-images If true, cache docker images for the current bootstrapper and load them into the machine. Always false with --driver=none. (default true) --cert-expiration duration Duration until minikube certificate expiration, defaults to three years (26280h). (default 26280h0m0s) @@ -69,9 +69,9 @@ 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) - --iso-url strings Locations to fetch the minikube ISO from. (default [https://storage.googleapis.com/minikube/iso/minikube-v1.25.2.iso,https://github.com/kubernetes/minikube/releases/download/v1.25.2/minikube-v1.25.2.iso,https://kubernetes.oss-cn-hangzhou.aliyuncs.com/minikube/iso/minikube-v1.25.2.iso]) + --iso-url strings Locations to fetch the minikube ISO from. (default [https://storage.googleapis.com/minikube-builds/iso/13860/minikube-v1.25.2-1648512003-13860.iso,https://github.com/kubernetes/minikube/releases/download/v1.25.2-1648512003-13860/minikube-v1.25.2-1648512003-13860.iso,https://kubernetes.oss-cn-hangzhou.aliyuncs.com/minikube/iso/minikube-v1.25.2-1648512003-13860.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.23.3, 'latest' for v1.23.4-rc.0). Defaults to 'stable'. + --kubernetes-version string The Kubernetes version that the minikube VM will use (ex: v1.2.3, 'stable' for v1.23.5, 'latest' for v1.23.6-rc.0). Defaults to 'stable'. --kvm-gpu Enable experimental NVIDIA GPU support in minikube --kvm-hidden Hide the hypervisor signature from the guest in minikube (kvm2 driver only) --kvm-network string The KVM default network name. (kvm2 driver only) (default "default") @@ -108,6 +108,7 @@ minikube start [flags] --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") + --subnet string Subnet to be used on kic cluster. If left empty, minikube will choose subnet address, beginning from 192.168.49.0. (docker and podman driver only) --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/contrib/tests.en.md b/site/content/en/docs/contrib/tests.en.md index 03d3d2e544..5f4456d227 100644 --- a/site/content/en/docs/contrib/tests.en.md +++ b/site/content/en/docs/contrib/tests.en.md @@ -440,6 +440,9 @@ verifies the docker driver works with a custom network ## TestKicExistingNetwork verifies the docker driver and run with an existing network +## TestKicCustomSubnet +verifies the docker/podman driver works with a custom subnet + ## TestingKicBaseImage will return true if the integraiton test is running against a passed --base-image flag diff --git a/site/content/en/docs/drivers/docker.md b/site/content/en/docs/drivers/docker.md index 9b4bfd63fd..8f312a983a 100644 --- a/site/content/en/docs/drivers/docker.md +++ b/site/content/en/docs/drivers/docker.md @@ -13,7 +13,7 @@ The Docker driver allows you to install Kubernetes into an existing Docker insta {{% tab "Standard Docker" %}} ## Requirements -- [Install Docker](https://hub.docker.com/search?q=&type=edition&offering=community&sort=updated_at&order=desc) 18.09 or higher +- [Install Docker](https://hub.docker.com/search?q=&type=edition&offering=community&sort=updated_at&order=desc) 18.09 or higher (20.10 or higher is recommended) - amd64 or arm64 system. - If using WSL complete [these steps]({{}}) first @@ -34,6 +34,7 @@ minikube config set driver docker ## Requirements - Docker 20.10 or higher, see https://rootlesscontaine.rs/getting-started/docker/ - Cgroup v2 delegation, see https://rootlesscontaine.rs/getting-started/common/cgroup2/ +- Kernel 5.11 or later (5.13 or later is recommended when SELinux is enabled), see https://rootlesscontaine.rs/how-it-works/overlayfs/ ## Usage diff --git a/site/content/en/docs/tutorials/setup_minikube_gui.md b/site/content/en/docs/tutorials/setup_minikube_gui.md index 13eaa64d26..538220e4df 100644 --- a/site/content/en/docs/tutorials/setup_minikube_gui.md +++ b/site/content/en/docs/tutorials/setup_minikube_gui.md @@ -24,7 +24,7 @@ date: 2022-02-25 {{% tab Stable %}} 1. Download the zipped folder ```shell -curl -LO https://storage.googleapis.com/minikube-gui/v0.0.1/minikube-gui-mac.zip +curl -LO https://storage.googleapis.com/minikube-gui/latest/minikube-gui-mac.zip ``` {{% /tab %}} {{% tab Nightly %}} @@ -54,9 +54,9 @@ open dist/systray.app {{% windowstab %}} {{% tabs %}} {{% tab Stable %}} -1. Download the zipped folder via PowerShell (below) or via your [browser](https://storage.googleapis.com/minikube-gui/v0.0.1/minikube-gui-windows.zip) (faster) +1. Download the zipped folder via PowerShell (below) or via your [browser](https://storage.googleapis.com/minikube-gui/latest/minikube-gui-windows.zip) (faster) ```shell -Invoke-WebRequest -Uri 'https://storage.googleapis.com/minikube-gui/v0.0.1/minikube-gui-windows.zip' -UseBasicParsing +Invoke-WebRequest -Uri 'https://storage.googleapis.com/minikube-gui/latest/minikube-gui-windows.zip' -UseBasicParsing ``` {{% /tab %}} {{% tab Nightly %}} @@ -86,7 +86,7 @@ Expand-Archive minikube-gui-windows.zip {{% tab Stable %}} 1. Download the zipped folder ```shell -curl -LO https://storage.googleapis.com/minikube-gui/v0.0.1/minikube-gui-linux.zip +curl -LO https://storage.googleapis.com/minikube-gui/latest/minikube-gui-linux.zip ``` {{% /tab %}} {{% tab Nightly %}} diff --git a/test/integration/aaa_download_only_test.go b/test/integration/aaa_download_only_test.go index e9a422f2ae..adc26e6385 100644 --- a/test/integration/aaa_download_only_test.go +++ b/test/integration/aaa_download_only_test.go @@ -1,5 +1,4 @@ //go:build integration -// +build integration /* Copyright 2019 The Kubernetes Authors All rights reserved. @@ -27,7 +26,6 @@ import ( "crypto/sha256" "encoding/json" "fmt" - "io/ioutil" "net/http" "net/http/httptest" "os" @@ -276,11 +274,7 @@ func TestBinaryMirror(t *testing.T) { ctx, cancel := context.WithTimeout(context.Background(), Minutes(10)) defer Cleanup(t, profile, cancel) - tmpDir, err := ioutil.TempDir("", "kb_test") - if err != nil { - t.Fatal(err) - } - defer os.RemoveAll(tmpDir) + tmpDir := t.TempDir() // Start test server which will serve binary files ts := httptest.NewServer( diff --git a/test/integration/aab_offline_test.go b/test/integration/aab_offline_test.go index e9f2dbb219..25ea2716c9 100644 --- a/test/integration/aab_offline_test.go +++ b/test/integration/aab_offline_test.go @@ -1,5 +1,4 @@ //go:build integration -// +build integration /* Copyright 2016 The Kubernetes Authors All rights reserved. diff --git a/test/integration/addons_test.go b/test/integration/addons_test.go index b742f9954a..7b85db6b33 100644 --- a/test/integration/addons_test.go +++ b/test/integration/addons_test.go @@ -1,5 +1,4 @@ //go:build integration -// +build integration /* Copyright 2016 The Kubernetes Authors All rights reserved. @@ -66,7 +65,7 @@ func TestAddons(t *testing.T) { t.Fatalf("Failed setting GOOGLE_CLOUD_PROJECT env var: %v", err) } - args := append([]string{"start", "-p", profile, "--wait=true", "--memory=4000", "--alsologtostderr", "--addons=registry", "--addons=metrics-server", "--addons=olm", "--addons=volumesnapshots", "--addons=csi-hostpath-driver", "--addons=gcp-auth"}, StartArgs()...) + args := append([]string{"start", "-p", profile, "--wait=true", "--memory=4000", "--alsologtostderr", "--addons=registry", "--addons=metrics-server", "--addons=volumesnapshots", "--addons=csi-hostpath-driver", "--addons=gcp-auth"}, StartArgs()...) if !NoneDriver() { // none driver does not support ingress args = append(args, "--addons=ingress", "--addons=ingress-dns") } @@ -446,7 +445,7 @@ func validateHelmTillerAddon(ctx context.Context, t *testing.T, profile string) // validateOlmAddon tests the OLM addon func validateOlmAddon(ctx context.Context, t *testing.T, profile string) { - t.Skip("Skipping Olm addon till images are fixed") + t.Skip("Skipping OLM addon test until https://github.com/operator-framework/operator-lifecycle-manager/issues/2534 is resolved") defer PostMortemLogs(t, profile) start := time.Now() diff --git a/test/integration/cert_options_test.go b/test/integration/cert_options_test.go index a78ffc5f40..8dd842dad4 100644 --- a/test/integration/cert_options_test.go +++ b/test/integration/cert_options_test.go @@ -1,5 +1,4 @@ //go:build integration -// +build integration /* Copyright 2016 The Kubernetes Authors All rights reserved. diff --git a/test/integration/docker_test.go b/test/integration/docker_test.go index 4b76676902..3f61b10b42 100644 --- a/test/integration/docker_test.go +++ b/test/integration/docker_test.go @@ -1,5 +1,4 @@ //go:build integration -// +build integration /* Copyright 2016 The Kubernetes Authors All rights reserved. diff --git a/test/integration/driver_install_or_update_test.go b/test/integration/driver_install_or_update_test.go index 617f05d713..c7aafde80a 100644 --- a/test/integration/driver_install_or_update_test.go +++ b/test/integration/driver_install_or_update_test.go @@ -59,16 +59,7 @@ func TestKVMDriverInstallOrUpdate(t *testing.T) { defer os.Setenv("PATH", originalPath) for _, tc := range tests { - dir, err := os.MkdirTemp("", tc.name) - if err != nil { - t.Fatalf("Expected to create tempdir. test: %s, got: %v", tc.name, err) - } - defer func() { - err := os.RemoveAll(dir) - if err != nil { - t.Errorf("Failed to remove dir %q: %v", dir, err) - } - }() + dir := t.TempDir() pwd, err := os.Getwd() if err != nil { @@ -128,16 +119,7 @@ func TestHyperKitDriverInstallOrUpdate(t *testing.T) { defer os.Setenv("PATH", originalPath) for _, tc := range tests { - dir, err := os.MkdirTemp("", tc.name) - if err != nil { - t.Fatalf("Expected to create tempdir. test: %s, got: %v", tc.name, err) - } - defer func() { - err := os.RemoveAll(dir) - if err != nil { - t.Errorf("Failed to remove dir %q: %v", dir, err) - } - }() + dir := t.TempDir() pwd, err := os.Getwd() if err != nil { @@ -212,15 +194,10 @@ func TestHyperkitDriverSkipUpgrade(t *testing.T) { for _, tc := range tests { t.Run(tc.name, func(t *testing.T) { - mkDir, drvPath, err := prepareTempMinikubeDirWithHyperkitDriver(tc.name, tc.path) + mkDir, drvPath, err := prepareTempMinikubeDirWithHyperkitDriver(t, tc.name, tc.path) if err != nil { t.Fatalf("Failed to prepare tempdir. test: %s, got: %v", tc.name, err) } - defer func() { - if err := os.RemoveAll(mkDir); err != nil { - t.Errorf("Failed to remove mkDir %q: %v", mkDir, err) - } - }() cmd := exec.Command(Target(), "start", "--download-only", "--interactive=false", "--driver=hyperkit") cmd.Stdout = os.Stdout @@ -265,15 +242,11 @@ func driverVersion(path string) (string, error) { // prepareTempMinikubeDirWithHyperkitDriver creates a temp .minikube directory // with structure essential to testing of hyperkit driver updates -func prepareTempMinikubeDirWithHyperkitDriver(name, driver string) (string, string, error) { - temp, err := os.MkdirTemp("", name) - if err != nil { - return "", "", fmt.Errorf("failed to create tempdir: %v", err) - } +func prepareTempMinikubeDirWithHyperkitDriver(t *testing.T, name, driver string) (string, string, error) { + temp := t.TempDir() mkDir := filepath.Join(temp, ".minikube") mkBinDir := filepath.Join(mkDir, "bin") - err = os.MkdirAll(mkBinDir, 0777) - if err != nil { + if err := os.MkdirAll(mkBinDir, 0777); err != nil { return "", "", fmt.Errorf("failed to prepare tempdir: %v", err) } diff --git a/test/integration/error_spam_test.go b/test/integration/error_spam_test.go index 95b0c1de0e..d6ca29f60d 100644 --- a/test/integration/error_spam_test.go +++ b/test/integration/error_spam_test.go @@ -1,5 +1,4 @@ //go:build integration -// +build integration /* Copyright 2016 The Kubernetes Authors All rights reserved. diff --git a/test/integration/functional_test.go b/test/integration/functional_test.go index 9928b580be..b54c946d06 100644 --- a/test/integration/functional_test.go +++ b/test/integration/functional_test.go @@ -1,5 +1,4 @@ //go:build integration -// +build integration /* Copyright 2016 The Kubernetes Authors All rights reserved. @@ -26,7 +25,6 @@ import ( "encoding/json" "fmt" "io" - "io/ioutil" "net/http" "net/url" "os" @@ -1061,10 +1059,7 @@ func validateCacheCmd(ctx context.Context, t *testing.T, profile string) { t.Skipf("docker is not installed, skipping local image test") } - dname, err := os.MkdirTemp("", profile) - if err != nil { - t.Fatalf("Cannot create temp dir: %v", err) - } + dname := t.TempDir() message := []byte("FROM scratch\nADD Dockerfile /x") err = os.WriteFile(filepath.Join(dname, "Dockerfile"), message, 0644) @@ -1243,10 +1238,7 @@ func validateLogsCmd(ctx context.Context, t *testing.T, profile string) { // validateLogsFileCmd asserts "logs --file" command functionality func validateLogsFileCmd(ctx context.Context, t *testing.T, profile string) { - dname, err := os.MkdirTemp("", profile) - if err != nil { - t.Fatalf("Cannot create temp dir: %v", err) - } + dname := t.TempDir() logFileName := filepath.Join(dname, "logs.txt") // docs: Run `minikube logs --file logs.txt` to save the logs to a local file @@ -1711,11 +1703,7 @@ func validateCpCmd(ctx context.Context, t *testing.T, profile string) { testCpCmd(ctx, t, profile, "", srcPath, "", dstPath) // copy from node - tmpDir, err := ioutil.TempDir("", "mk_test") - if err != nil { - t.Fatal(err) - } - defer os.RemoveAll(tmpDir) + tmpDir := t.TempDir() tmpPath := filepath.Join(tmpDir, "cp-test.txt") testCpCmd(ctx, t, profile, profile, dstPath, "", tmpPath) @@ -2084,10 +2072,7 @@ func startProxyWithCustomCerts(ctx context.Context, t *testing.T) error { } }() - mitmDir, err := os.MkdirTemp("", "") - if err != nil { - return errors.Wrap(err, "create temp dir") - } + mitmDir := t.TempDir() _, err = Run(t, exec.CommandContext(ctx, "tar", "xzf", "mitmproxy-6.0.2-linux.tar.gz", "-C", mitmDir)) if err != nil { diff --git a/test/integration/functional_test_mount_test.go b/test/integration/functional_test_mount_test.go index 05c7c0d8f3..3a20c15e44 100644 --- a/test/integration/functional_test_mount_test.go +++ b/test/integration/functional_test_mount_test.go @@ -1,5 +1,4 @@ //go:build integration -// +build integration /* Copyright 2016 The Kubernetes Authors All rights reserved. @@ -59,16 +58,7 @@ func validateMountCmd(ctx context.Context, t *testing.T, profile string) { // no } t.Run("any-port", func(t *testing.T) { - tempDir, err := os.MkdirTemp("", "mounttest") - defer func() { // clean up tempdir - err := os.RemoveAll(tempDir) - if err != nil { - t.Errorf("failed to clean up %q temp folder.", tempDir) - } - }() - if err != nil { - t.Fatalf("Unexpected error while creating tempDir: %v", err) - } + tempDir := t.TempDir() ctx, cancel := context.WithTimeout(ctx, Minutes(10)) @@ -208,16 +198,7 @@ func validateMountCmd(ctx context.Context, t *testing.T, profile string) { // no } }) t.Run("specific-port", func(t *testing.T) { - tempDir, err := os.MkdirTemp("", "mounttest") - defer func() { // clean up tempdir - err := os.RemoveAll(tempDir) - if err != nil { - t.Errorf("failed to clean up %q temp folder.", tempDir) - } - }() - if err != nil { - t.Fatalf("Unexpected error while creating tempDir: %v", err) - } + tempDir := t.TempDir() ctx, cancel := context.WithTimeout(ctx, Minutes(10)) diff --git a/test/integration/functional_test_pvc_test.go b/test/integration/functional_test_pvc_test.go index 5b5e015e15..152912dccc 100644 --- a/test/integration/functional_test_pvc_test.go +++ b/test/integration/functional_test_pvc_test.go @@ -1,5 +1,4 @@ //go:build integration -// +build integration /* Copyright 2016 The Kubernetes Authors All rights reserved. diff --git a/test/integration/functional_test_tunnel_test.go b/test/integration/functional_test_tunnel_test.go index 77d323a3f5..e96e8f568f 100644 --- a/test/integration/functional_test_tunnel_test.go +++ b/test/integration/functional_test_tunnel_test.go @@ -1,5 +1,4 @@ //go:build integration -// +build integration /* Copyright 2018 The Kubernetes Authors All rights reserved. diff --git a/test/integration/guest_env_test.go b/test/integration/guest_env_test.go index 130dfc02fd..6791ce4895 100644 --- a/test/integration/guest_env_test.go +++ b/test/integration/guest_env_test.go @@ -1,5 +1,4 @@ //go:build iso -// +build iso /* Copyright 2016 The Kubernetes Authors All rights reserved. diff --git a/test/integration/gvisor_addon_test.go b/test/integration/gvisor_addon_test.go index 5b5e2453d7..c07f7f9729 100644 --- a/test/integration/gvisor_addon_test.go +++ b/test/integration/gvisor_addon_test.go @@ -1,5 +1,4 @@ //go:build integration -// +build integration /* Copyright 2016 The Kubernetes Authors All rights reserved. diff --git a/test/integration/helpers_test.go b/test/integration/helpers_test.go index 6de1355d9d..f3f2999419 100644 --- a/test/integration/helpers_test.go +++ b/test/integration/helpers_test.go @@ -29,7 +29,6 @@ import ( "errors" "fmt" "io" - "io/ioutil" "os" "os/exec" "path/filepath" @@ -522,7 +521,7 @@ func cpTestLocalPath() string { func cpTestReadText(ctx context.Context, t *testing.T, profile, node, path string) string { if node == "" { - expected, err := ioutil.ReadFile(path) + expected, err := os.ReadFile(path) if err != nil { t.Errorf("failed to read test file 'testdata/cp-test.txt' : %v", err) } diff --git a/test/integration/ingress_addon_legacy_test.go b/test/integration/ingress_addon_legacy_test.go index ba8a15dcb7..3bbc847bb9 100644 --- a/test/integration/ingress_addon_legacy_test.go +++ b/test/integration/ingress_addon_legacy_test.go @@ -1,5 +1,4 @@ //go:build integration -// +build integration /* Copyright 2021 The Kubernetes Authors All rights reserved. diff --git a/test/integration/kic_custom_network_test.go b/test/integration/kic_custom_network_test.go index b392336532..6bbf3fb1d7 100644 --- a/test/integration/kic_custom_network_test.go +++ b/test/integration/kic_custom_network_test.go @@ -1,5 +1,4 @@ //go:build integration -// +build integration /* Copyright 2020 The Kubernetes Authors All rights reserved. @@ -75,7 +74,7 @@ func TestKicExistingNetwork(t *testing.T) { } // create custom network networkName := "existing-network" - if _, err := oci.CreateNetwork(oci.Docker, networkName); err != nil { + if _, err := oci.CreateNetwork(oci.Docker, networkName, ""); err != nil { t.Fatalf("error creating network: %v", err) } defer func() { @@ -97,6 +96,27 @@ func TestKicExistingNetwork(t *testing.T) { } } +// TestKicCustomSubnet verifies the docker/podman driver works with a custom subnet +func TestKicCustomSubnet(t *testing.T) { + if !KicDriver() { + t.Skip("only runs with docker/podman driver") + } + + profile := UniqueProfileName("custom-subnet") + ctx, cancel := context.WithTimeout(context.Background(), Minutes(5)) + defer Cleanup(t, profile, cancel) + + subnet := "192.168.60.0/24" + startArgs := []string{"start", "-p", profile, fmt.Sprintf("--subnet=%s", subnet)} + c := exec.CommandContext(ctx, Target(), startArgs...) + rr, err := Run(t, c) + if err != nil { + t.Fatalf("%v failed: %v\n%v", rr.Command(), err, rr.Output()) + } + + verifySubnet(ctx, t, profile, subnet) +} + func verifyNetworkExists(ctx context.Context, t *testing.T, networkName string) { c := exec.CommandContext(ctx, "docker", "network", "ls", "--format", "{{.Name}}") rr, err := Run(t, c) @@ -107,3 +127,15 @@ func verifyNetworkExists(ctx context.Context, t *testing.T, networkName string) t.Fatalf("%s network is not listed by [%v]: %v", networkName, c.Args, output) } } + +func verifySubnet(ctx context.Context, t *testing.T, network, subnet string) { + c := exec.CommandContext(ctx, "docker", "network", "inspect", network, "--format", "{{(index .IPAM.Config 0).Subnet}}") + rr, err := Run(t, c) + if err != nil { + t.Fatalf("%v failed: %v\n%v", rr.Command(), err, rr.Output()) + } + + if output := strings.TrimSpace(rr.Output()); !strings.Contains(output, subnet) { + t.Fatalf("%s subnet not match to %v", subnet, output) + } +} diff --git a/test/integration/mount_start_test.go b/test/integration/mount_start_test.go index 1a9b518d4f..4425d0519d 100644 --- a/test/integration/mount_start_test.go +++ b/test/integration/mount_start_test.go @@ -1,5 +1,4 @@ //go:build integration -// +build integration /* Copyright 2021 The Kubernetes Authors All rights reserved. diff --git a/test/integration/multinode_test.go b/test/integration/multinode_test.go index b54f207adc..6079278dd4 100644 --- a/test/integration/multinode_test.go +++ b/test/integration/multinode_test.go @@ -1,5 +1,4 @@ //go:build integration -// +build integration /* Copyright 2020 The Kubernetes Authors All rights reserved. @@ -23,9 +22,7 @@ import ( "context" "encoding/json" "fmt" - "io/ioutil" "net" - "os" "os/exec" "path" "path/filepath" @@ -181,11 +178,7 @@ func validateCopyFileWithMultiNode(ctx context.Context, t *testing.T, profile st t.Errorf("failed to decode json from status: args %q: %v", rr.Command(), err) } - tmpDir, err := ioutil.TempDir("", "mk_cp_test") - if err != nil { - t.Fatal(err) - } - defer os.RemoveAll(tmpDir) + tmpDir := t.TempDir() srcPath := cpTestLocalPath() dstPath := cpTestMinikubePath() diff --git a/test/integration/net_test.go b/test/integration/net_test.go index 60dc1cd443..6e46d8f545 100644 --- a/test/integration/net_test.go +++ b/test/integration/net_test.go @@ -1,5 +1,4 @@ //go:build integration -// +build integration /* Copyright 2016 The Kubernetes Authors All rights reserved. diff --git a/test/integration/no_kubernetes_test.go b/test/integration/no_kubernetes_test.go index 369010e898..e4458b1feb 100644 --- a/test/integration/no_kubernetes_test.go +++ b/test/integration/no_kubernetes_test.go @@ -1,5 +1,4 @@ //go:build integration -// +build integration /* Copyright 2021 The Kubernetes Authors All rights reserved. diff --git a/test/integration/none_test.go b/test/integration/none_test.go index a5e4f96e3c..c9270169f2 100644 --- a/test/integration/none_test.go +++ b/test/integration/none_test.go @@ -1,5 +1,4 @@ //go:build integration && linux -// +build integration,linux /* Copyright 2019 The Kubernetes Authors All rights reserved. diff --git a/test/integration/pause_test.go b/test/integration/pause_test.go index a9092d0fb6..ffc9522525 100644 --- a/test/integration/pause_test.go +++ b/test/integration/pause_test.go @@ -1,5 +1,4 @@ //go:build integration -// +build integration /* Copyright 2020 The Kubernetes Authors All rights reserved. diff --git a/test/integration/preload_test.go b/test/integration/preload_test.go index c7734d75f6..72fbe44d44 100644 --- a/test/integration/preload_test.go +++ b/test/integration/preload_test.go @@ -1,5 +1,4 @@ //go:build integration -// +build integration /* Copyright 2020 The Kubernetes Authors All rights reserved. diff --git a/test/integration/scheduled_stop_test.go b/test/integration/scheduled_stop_test.go index 33b95e3da8..49067c2e99 100644 --- a/test/integration/scheduled_stop_test.go +++ b/test/integration/scheduled_stop_test.go @@ -1,5 +1,4 @@ //go:build integration -// +build integration /* Copyright 2020 The Kubernetes Authors All rights reserved. diff --git a/test/integration/skaffold_test.go b/test/integration/skaffold_test.go index 6d13af0a08..52223ac5d5 100644 --- a/test/integration/skaffold_test.go +++ b/test/integration/skaffold_test.go @@ -1,5 +1,4 @@ //go:build integration -// +build integration /* Copyright 2020 The Kubernetes Authors All rights reserved. diff --git a/test/integration/start_stop_delete_test.go b/test/integration/start_stop_delete_test.go index 3b00b5d6ed..f4fc967f94 100644 --- a/test/integration/start_stop_delete_test.go +++ b/test/integration/start_stop_delete_test.go @@ -1,5 +1,4 @@ //go:build integration -// +build integration /* Copyright 2016 The Kubernetes Authors All rights reserved. @@ -431,10 +430,10 @@ func testPause(ctx context.Context, t *testing.T, profile string) { // Remove container-specific prefixes for naming consistency // for example in `docker` runtime we get this: // $ docker@minikube:~$ sudo crictl images -o json | grep dash -// "kubernetesui/dashboard:v2.1.0" +// "kubernetesui/dashboard:v2.5.1" // but for 'containerd' we get full name // $ docker@minikube:~$ sudo crictl images -o json | grep dash -// "docker.io/kubernetesui/dashboard:v2.1.0" +// "docker.io/kubernetesui/dashboard:v2.5.1" func trimImageName(name string) string { name = strings.TrimPrefix(name, "docker.io/") name = strings.TrimPrefix(name, "localhost/") diff --git a/test/integration/status_test.go b/test/integration/status_test.go index 0f29555ca2..67c8250d34 100644 --- a/test/integration/status_test.go +++ b/test/integration/status_test.go @@ -1,5 +1,4 @@ //go:build integration -// +build integration /* Copyright 2016 The Kubernetes Authors All rights reserved. diff --git a/third_party/go9p/clnt_stats_http.go b/third_party/go9p/clnt_stats_http.go index 9e185ae30e..44709be197 100644 --- a/third_party/go9p/clnt_stats_http.go +++ b/third_party/go9p/clnt_stats_http.go @@ -1,5 +1,4 @@ //go:build httpstats -// +build httpstats package go9p diff --git a/third_party/go9p/srv_stats_http.go b/third_party/go9p/srv_stats_http.go index 75bb44e367..1d6859b68d 100644 --- a/third_party/go9p/srv_stats_http.go +++ b/third_party/go9p/srv_stats_http.go @@ -1,5 +1,4 @@ //go:build httpstats -// +build httpstats package go9p diff --git a/third_party/kubeadm/app/constants/constants_unix.go b/third_party/kubeadm/app/constants/constants_unix.go index 812faf064b..bf33e74ecc 100644 --- a/third_party/kubeadm/app/constants/constants_unix.go +++ b/third_party/kubeadm/app/constants/constants_unix.go @@ -1,5 +1,4 @@ //go:build !windows -// +build !windows /* Copyright 2019 The Kubernetes Authors. diff --git a/third_party/kubeadm/app/constants/constants_windows.go b/third_party/kubeadm/app/constants/constants_windows.go index 1a44a82723..3b2cd6bb25 100644 --- a/third_party/kubeadm/app/constants/constants_windows.go +++ b/third_party/kubeadm/app/constants/constants_windows.go @@ -1,5 +1,4 @@ //go:build windows -// +build windows /* Copyright 2019 The Kubernetes Authors. diff --git a/translations/de.json b/translations/de.json index 44abe74bdc..b8b0d58b06 100644 --- a/translations/de.json +++ b/translations/de.json @@ -64,6 +64,7 @@ "Another minikube instance is downloading dependencies... ": "Eine andere Minikube-Instanz lädt Abhängigkeiten herunter... ", "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": "Ein anderes Programm benutzt eine Datei, die Minikube benötigt. Wenn Sie Hyper-V verwenden, versuchen Sie die minikube VM aus dem Hyper-V Manager heraus zu stoppen", "At least needs control plane nodes to enable addon": "Benötige mindestens Control Plane Nodes um das Addon zu aktivieren", + "Auto-pause is already enabled.": "", "Automatically selected the {{.driver}} driver": "Treiber {{.driver}} wurde automatisch ausgewählt", "Automatically selected the {{.driver}} driver. Other choices: {{.alternates}}": "Treiber {{.driver}} wurde automatisch ausgewählt. Andere Möglichkeiten: {{.alternates}}", "Available Commands": "Verfügbare Befehle", @@ -608,6 +609,7 @@ "Stops a local Kubernetes cluster. This command stops the underlying VM or container, but keeps user data intact. The cluster can be started again with the \"start\" command.": "Stoppt einen lokalen Kubernetes Cluster. Dieser Befehl stoppt die unterliegenden VMs oder Container, belässt jedoch die Daten intakt. Der Cluster kann mit dem \"start\" Befehl wieder gestartet werden.", "Stops a node in a cluster.": "Stoppt einen Node in einem Cluster", "Stops a running local Kubernetes cluster": "Stoppt einen lokal laufenden Kubernetes Cluster", + "Subnet to be used on kic cluster. If left empty, minikube will choose subnet address, beginning from 192.168.49.0. (docker and podman driver only)": "", "Successfully added {{.name}} to {{.cluster}}!": "{{.name}} erfolgreich zu Cluster {{.cluster}} hinzugefügt!", "Successfully deleted all profiles": "Alle Profile erfolgreich gelöscht", "Successfully mounted {{.sourcePath}} to {{.destinationPath}}": "{{.sourcePath}} erfolgreich nach {{.destinationPath}} eingehängt", @@ -644,6 +646,7 @@ "The KVM default network name. (kvm2 driver only)": "Der KVM Standard-Netzwerk-Name. (Nur kvm2-Treiber)", "The KVM driver is unable to resurrect this old VM. Please run `minikube delete` to delete it and try again.": "Der KVM Treiber ist nicht in der Lage die alte VM erneut zu starten. Bitte starte 'minikube delete' um die VM zu löschen udn versuche es erneut.", "The KVM network name. (kvm2 driver only)": "Der KVM-Netzwerkname. (Nur kvm2-Treiber)", + "The OLM addon has stopped working, for more details visit: https://github.com/operator-framework/operator-lifecycle-manager/issues/2534": "", "The VM driver crashed. Run 'minikube start --alsologtostderr -v=8' to see the VM driver error message": "Der VM Treiber ist abgestürzt. Starte 'minikube start --alsologtostderr -v=8' um die Fehlermeldung des VM Treibers zu sehen", "The VM driver exited with an error, and may be corrupt. Run 'minikube start' with --alsologtostderr -v=8 to see the error": "Der VM Treiber wurde mit Fehler beendet und ist möglicherweise defekt. Führe 'minikube start' mit --alsologtostderr -v=8 aus um den Fehler zu sehen", "The VM that minikube is configured for no longer exists. Run 'minikube delete'": "Die VM, für welche Minikube konfiguriert wurde, existiert nicht mehr. Führe 'minikube delete' aus", @@ -988,7 +991,7 @@ "zsh completion.": "", "{{ .name }}: Suggestion: {{ .suggestion}}": "{{ .name }}: Vorschlag: {{ .suggestion}}", "{{.Driver}} is currently using the {{.StorageDriver}} storage driver, consider switching to overlay2 for better performance": "{{.Driver}} verwendet derzeit den {{.StorageDriver}} Storage Treiber, erwäge zu overlay2 zu wechseln für bessere Performance", - "{{.count}} node{{if gt .count 1}}s{{end}} stopped.": "{{.count}} Node{{if get .count 1}}s{{end}} angehalten.", + "{{.count}} node{{if gt .count 1}}s{{end}} stopped.": "{{.count}} Node{{if gt .count 1}}s{{end}} angehalten.", "{{.driver_name}} \"{{.cluster}}\" {{.machine_type}} is missing, will recreate.": "{{.driver_name}} \"{{.cluster}}\" {{.machine_type}} fehlt, wird neu erstellt.", "{{.driver_name}} couldn't proceed because {{.driver_name}} service is not healthy.": "{{.driver_name}} konnte nicht weiterlaufen, da {{.driver_name}} Service nicht funktional ist.", "{{.driver_name}} has less than 2 CPUs available, but Kubernetes requires at least 2 to be available": "{{.driver_name}} verfügt über weniger als 2 CPUs, aber Kubernetes benötigt mindestens 2 verfügbare CPUs", diff --git a/translations/es.json b/translations/es.json index 12d0e9d3e0..1639b2136f 100644 --- a/translations/es.json +++ b/translations/es.json @@ -66,6 +66,7 @@ "Another minikube instance is downloading dependencies... ": "Otra instancia de minikube esta descargando dependencias...", "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": "Otro programa está usando un archivo requerido por minikube. Si estas usando Hyper-V, intenta detener la máquina virtual de minikube desde el administrador de Hyper-V", "At least needs control plane nodes to enable addon": "Al menos se necesita un nodo de plano de control para habilitar el addon", + "Auto-pause is already enabled.": "", "Automatically selected the {{.driver}} driver": "Controlador {{.driver}} seleccionado automáticamente", "Automatically selected the {{.driver}} driver. Other choices: {{.alternates}}": "Controlador {{.driver}} seleccionado automáticamente. Otras opciones: {{.alternates}}", "Available Commands": "Comandos disponibles", @@ -615,6 +616,7 @@ "Stops a local Kubernetes cluster. This command stops the underlying VM or container, but keeps user data intact. The cluster can be started again with the \"start\" command.": "", "Stops a node in a cluster.": "", "Stops a running local Kubernetes cluster": "", + "Subnet to be used on kic cluster. If left empty, minikube will choose subnet address, beginning from 192.168.49.0. (docker and podman driver only)": "", "Successfully added {{.name}} to {{.cluster}}!": "", "Successfully deleted all profiles": "", "Successfully mounted {{.sourcePath}} to {{.destinationPath}}": "", @@ -649,6 +651,7 @@ "The KVM default network name. (kvm2 driver only)": "", "The KVM driver is unable to resurrect this old VM. Please run `minikube delete` to delete it and try again.": "", "The KVM network name. (kvm2 driver only)": "El nombre de la red de KVM (solo con el controlador de kvm2).", + "The OLM addon has stopped working, for more details visit: https://github.com/operator-framework/operator-lifecycle-manager/issues/2534": "", "The VM driver crashed. Run 'minikube start --alsologtostderr -v=8' to see the VM driver error message": "", "The VM driver exited with an error, and may be corrupt. Run 'minikube start' with --alsologtostderr -v=8 to see the error": "", "The VM that minikube is configured for no longer exists. Run 'minikube delete'": "", diff --git a/translations/fr.json b/translations/fr.json index 5abdf8a4ca..028c57f2e9 100644 --- a/translations/fr.json +++ b/translations/fr.json @@ -65,6 +65,7 @@ "Another minikube instance is downloading dependencies... ": "Une autre instance minikube télécharge des dépendances", "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": "Un autre programme utilise un fichier requis par minikube. Si vous utilisez Hyper-V, essayez d'arrêter la machine virtuelle minikube à partir du gestionnaire Hyper-V", "At least needs control plane nodes to enable addon": "Nécessite au moins des nœuds de plan de contrôle pour activer le module", + "Auto-pause is already enabled.": "La pause automatique est déjà activée.", "Automatically selected the {{.driver}} driver": "Choix automatique du pilote {{.driver}}", "Automatically selected the {{.driver}} driver. Other choices: {{.alternates}}": "Choix automatique du pilote {{.driver}}. Autres choix: {{.alternates}}", "Available Commands": "Commandes disponibles", @@ -318,9 +319,9 @@ "If present, writes to the provided file instead of stdout.": "S'il est présent, écrit dans le fichier fourni au lieu de la sortie standard.", "If set, automatically updates drivers to the latest version. Defaults to true.": "Si défini, met automatiquement à jour les pilotes vers la dernière version. La valeur par défaut est true.", "If set, delete the current cluster if start fails and try again. Defaults to false.": "Si défini, supprime le cluster actuel si le démarrage échoue et réessaye. La valeur par défaut est false.", - "If set, disables metrics reporting (CPU and memory usage), this can improve CPU usage. Defaults to false.": "", + "If set, disables metrics reporting (CPU and memory usage), this can improve CPU usage. Defaults to false.": "S'il est défini, désactive les rapports de métriques (utilisation du processeur et de la mémoire), cela peut améliorer l'utilisation du processeur. La valeur par défaut est false.", "If set, disables optimizations that are set for local Kubernetes. Including decreasing CoreDNS replicas from 2 to 1 and increasing kubeadm housekeeping-interval from 10s to 5m. Defaults to false.": "S'il est défini, désactive les optimisations définies pour Kubernetes local. Y compris la diminution des répliques CoreDNS de 2 à 1 et l'augmentation de l'intervalle de maintenance kubeadm de 10 s à 5 m. La valeur par défaut est false.", - "If set, disables optimizations that are set for local Kubernetes. Including decreasing CoreDNS replicas from 2 to 1. Defaults to false.": "", + "If set, disables optimizations that are set for local Kubernetes. Including decreasing CoreDNS replicas from 2 to 1. Defaults to false.": "S'il est défini, désactive les optimisations définies pour Kubernetes local. Y compris la diminution des répliques CoreDNS de 2 à 1. La valeur par défaut est false.", "If set, download tarball of preloaded images if available to improve start time. Defaults to true.": "Si défini, télécharge l'archive tar des images préchargées si disponibles pour améliorer le temps de démarrage. La valeur par défaut est true.", "If set, force the container runtime to use systemd as cgroup manager. Defaults to false.": "S'il est défini, force l'environnement d'exécution du conteneur à utiliser systemd comme gestionnaire de groupe de contrôle. La valeur par défaut est false.", "If set, install addons. Defaults to true.": "Si défini, installe les modules. La valeur par défaut est true.", @@ -594,6 +595,7 @@ "Stops a local Kubernetes cluster. This command stops the underlying VM or container, but keeps user data intact. The cluster can be started again with the \"start\" command.": "Arrête un cluster Kubernetes local. Cette commande arrête la VM ou le conteneur sous-jacent, mais conserve les données utilisateur intactes. Le cluster peut être redémarré avec la commande \"start\".", "Stops a node in a cluster.": "Arrête un nœud dans un cluster.", "Stops a running local Kubernetes cluster": "Arrête un cluster Kubernetes local en cours d'exécution", + "Subnet to be used on kic cluster. If left empty, minikube will choose subnet address, beginning from 192.168.49.0. (docker and podman driver only)": "Sous-réseau à utiliser sur le cluster kic. Si laissé vide, minikube choisira l'adresse de sous-réseau, en commençant par 192.168.49.0. (pilote docker et podman uniquement)", "Successfully added {{.name}} to {{.cluster}}!": "{{.name}} a été ajouté avec succès à {{.cluster}} !", "Successfully deleted all profiles": "Tous les profils ont été supprimés avec succès", "Successfully mounted {{.sourcePath}} to {{.destinationPath}}": "{{.sourcePath}} monté avec succès sur {{.destinationPath}}", @@ -625,6 +627,7 @@ "The KVM QEMU connection URI. (kvm2 driver only)": "URI de connexion QEMU de la KVM (pilote kvm2 uniquement).", "The KVM default network name. (kvm2 driver only)": "Le nom de réseau par défaut de KVM. (pilote kvm2 uniquement)", "The KVM driver is unable to resurrect this old VM. Please run `minikube delete` to delete it and try again.": "Le pilote KVM est incapable de ressusciter cette ancienne VM. Veuillez exécuter `minikube delete` pour la supprimer et réessayer.", + "The OLM addon has stopped working, for more details visit: https://github.com/operator-framework/operator-lifecycle-manager/issues/2534": "L'addon OLM a cessé de fonctionner, pour plus de détails, visitez : https://github.com/operator-framework/operator-lifecycle-manager/issues/2534", "The VM driver crashed. Run 'minikube start --alsologtostderr -v=8' to see the VM driver error message": "Le pilote VM s'est écrasé. Exécutez 'minikube start --alsologtostderr -v=8' pour voir le message d'erreur du pilote VM", "The VM driver exited with an error, and may be corrupt. Run 'minikube start' with --alsologtostderr -v=8 to see the error": "Le pilote VM s'est terminé avec une erreur et est peut-être corrompu. Exécutez 'minikube start' avec --alsologtostderr -v=8 pour voir l'erreur", "The VM that minikube is configured for no longer exists. Run 'minikube delete'": "La machine virtuelle pour laquelle minikube est configuré n'existe plus. Exécutez 'minikube delete'", @@ -968,9 +971,9 @@ "{{.name}} is already running": "{{.name}} est déjà en cours d'exécution", "{{.name}} was successfully configured": "{{.name}} a été configuré avec succès", "{{.n}} is nearly out of disk space, which may cause deployments to fail! ({{.p}}% of capacity)": "{{.n}} manque presque d'espace disque, ce qui peut entraîner l'échec des déploiements ! ({{.p}} % de la capacité)", - "{{.n}} is nearly out of disk space, which may cause deployments to fail! ({{.p}}% of capacity). You can pass '--force' to skip this check.": "", + "{{.n}} is nearly out of disk space, which may cause deployments to fail! ({{.p}}% of capacity). You can pass '--force' to skip this check.": "{{.n}} est presque à court d'espace disque, ce qui peut entraîner l'échec des déploiements ! ({{.p}} % de la capacité). Vous pouvez passer '--force' pour ignorer cette vérification.", "{{.n}} is out of disk space! (/var is at {{.p}}% of capacity)": "{{.n}} n'a plus d'espace disque ! (/var est à {{.p}} % de capacité)", - "{{.n}} is out of disk space! (/var is at {{.p}}% of capacity). You can pass '--force' to skip this check.": "", + "{{.n}} is out of disk space! (/var is at {{.p}}% of capacity). You can pass '--force' to skip this check.": "{{.n}} n'a plus d'espace disque ! (/var est à {{.p}} % de la capacité). Vous pouvez passer '--force' pour ignorer cette vérification.", "{{.ociBin}} rmi {{.images}}": "{{.ociBin}} rmi {{.images}}", "{{.ocibin}} is taking an unsually long time to respond, consider restarting {{.ocibin}}": "{{.ocibin}} prend un temps anormalement long pour répondre, pensez à redémarrer {{.ocibin}}", "{{.path}} is version {{.client_version}}, which may have incompatibilites with Kubernetes {{.cluster_version}}.": "{{.path}} est la version {{.client_version}}, qui peut comporter des incompatibilités avec Kubernetes {{.cluster_version}}.", diff --git a/translations/ja.json b/translations/ja.json index 1c41d05c9e..e13eb5c923 100644 --- a/translations/ja.json +++ b/translations/ja.json @@ -67,6 +67,7 @@ "Another minikube instance is downloading dependencies... ": "別の minikube のインスタンスが、依存関係をダウンロードしています... ", "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": "別のプログラムが、minikube に必要なファイルを使用しています。Hyper-V を使用している場合は、Hyper-V マネージャー内から minikube VM を停止してみてください", "At least needs control plane nodes to enable addon": "アドオンを有効にするには、少なくともコントロールプレーンノードが必要です", + "Auto-pause is already enabled.": "", "Automatically selected the {{.driver}} driver": "{{.driver}} ドライバーが自動的に選択されました", "Automatically selected the {{.driver}} driver. Other choices: {{.alternates}}": "{{.driver}} ドライバーが自動的に選択されました。他の選択肢: {{.alternates}}", "Available Commands": "利用可能なコマンド", @@ -606,6 +607,7 @@ "Stops a local Kubernetes cluster. This command stops the underlying VM or container, but keeps user data intact. The cluster can be started again with the \"start\" command.": "ローカルの Kubernetes クラスターを停止します。このコマンドは下位層の VM またはコンテナーを停止しますが、ユーザーデータは損なわれずに保持します。クラスターは「start」コマンドで再起動できます。", "Stops a node in a cluster.": "クラスター中のノードを停止します。", "Stops a running local Kubernetes cluster": "ローカル Kubernetes クラスターを停止します", + "Subnet to be used on kic cluster. If left empty, minikube will choose subnet address, beginning from 192.168.49.0. (docker and podman driver only)": "", "Successfully added {{.name}} to {{.cluster}}!": "{{.cluster}} への {{.name}} 追加に成功しました!", "Successfully deleted all profiles": "全てのプロファイルの削除に成功しました", "Successfully mounted {{.sourcePath}} to {{.destinationPath}}": "{{.destinationPath}} への {{.sourcePath}} のマウントに成功しました", @@ -643,6 +645,7 @@ "The KVM default network name. (kvm2 driver only)": "KVM デフォルトネットワーク名 (kvm2 ドライバーのみ)", "The KVM driver is unable to resurrect this old VM. Please run `minikube delete` to delete it and try again.": "KVM ドライバーはこの古い VM を復元できません。`minikube delete` で VM を削除して、再度試行してください。", "The KVM network name. (kvm2 driver only)": "KVM ネットワーク名 (kvm2 ドライバーのみ)", + "The OLM addon has stopped working, for more details visit: https://github.com/operator-framework/operator-lifecycle-manager/issues/2534": "", "The VM driver crashed. Run 'minikube start --alsologtostderr -v=8' to see the VM driver error message": "VM ドライバーがクラッシュしました。'minikube start --alsologtostderr -v=8' を実行して、VM ドライバーのエラーメッセージを参照してください", "The VM driver exited with an error, and may be corrupt. Run 'minikube start' with --alsologtostderr -v=8 to see the error": "VM ドライバーがエラー停止したため、破損している可能性があります。'minikube start --alsologtostderr -v=8' を実行して、エラーを参照してください", "The VM that minikube is configured for no longer exists. Run 'minikube delete'": "minikube が設定された VM はもう存在しません。'minikube delete' を実行してください", diff --git a/translations/ko.json b/translations/ko.json index 3b16f8902b..026532b9a1 100644 --- a/translations/ko.json +++ b/translations/ko.json @@ -69,6 +69,7 @@ "Another minikube instance is downloading dependencies... ": "", "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": "", "At least needs control plane nodes to enable addon": "", + "Auto-pause is already enabled.": "", "Automatically selected the {{.driver}} driver": "자동적으로 {{.driver}} 드라이버가 선택되었습니다", "Automatically selected the {{.driver}} driver. Other choices: {{.alternates}}": "자동적으로 {{.driver}} 드라이버가 선택되었습니다. 다른 드라이버 목록: {{.alternates}}", "Available Commands": "사용 가능한 명령어", @@ -631,6 +632,7 @@ "Stops a node in a cluster.": "클러스터의 한 노드를 중지합니다", "Stops a running local Kubernetes cluster": "실행 중인 로컬 쿠버네티스 클러스터를 중지합니다", "Stops a running local kubernetes cluster": "실행 중인 로컬 쿠버네티스 클러스터를 중지합니다", + "Subnet to be used on kic cluster. If left empty, minikube will choose subnet address, beginning from 192.168.49.0. (docker and podman driver only)": "", "Successfully added {{.name}} to {{.cluster}}!": "{{.name}} 를 {{.cluster}} 에 성공적으로 추가하였습니다!", "Successfully deleted all profiles": "모든 프로필이 성공적으로 삭제되었습니다", "Successfully mounted {{.sourcePath}} to {{.destinationPath}}": "", @@ -661,6 +663,7 @@ "The KVM QEMU connection URI. (kvm2 driver only)": "", "The KVM default network name. (kvm2 driver only)": "", "The KVM driver is unable to resurrect this old VM. Please run `minikube delete` to delete it and try again.": "", + "The OLM addon has stopped working, for more details visit: https://github.com/operator-framework/operator-lifecycle-manager/issues/2534": "", "The VM driver crashed. Run 'minikube start --alsologtostderr -v=8' to see the VM driver error message": "", "The VM driver exited with an error, and may be corrupt. Run 'minikube start' with --alsologtostderr -v=8 to see the error": "", "The VM that minikube is configured for no longer exists. Run 'minikube delete'": "", diff --git a/translations/pl.json b/translations/pl.json index a7223b57bc..e81b0eda56 100644 --- a/translations/pl.json +++ b/translations/pl.json @@ -67,6 +67,7 @@ "Another minikube instance is downloading dependencies... ": "Inny program minikube już pobiera zależności...", "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": "Inny program używa pliku wymaganego przez minikube. Jeśli używasz Hyper-V, spróbuj zatrzymać maszynę wirtualną minikube z poziomu managera Hyper-V", "At least needs control plane nodes to enable addon": "Wymaga węzłów z płaszczyzny kontrolnej do włączenia addona", + "Auto-pause is already enabled.": "", "Automatically selected the {{.driver}} driver": "Automatycznie wybrano sterownik {{.driver}}", "Automatically selected the {{.driver}} driver. Other choices: {{.alternates}}": "Automatycznie wybrano sterownik {{.driver}}. Inne możliwe sterowniki: {{.alternates}}", "Available Commands": "Dostępne polecenia", @@ -630,6 +631,7 @@ "Stops a node in a cluster.": "", "Stops a running local Kubernetes cluster": "", "Stops a running local kubernetes cluster": "Zatrzymuje lokalny klaster kubernetesa", + "Subnet to be used on kic cluster. If left empty, minikube will choose subnet address, beginning from 192.168.49.0. (docker and podman driver only)": "", "Successfully added {{.name}} to {{.cluster}}!": "", "Successfully deleted all profiles": "", "Successfully mounted {{.sourcePath}} to {{.destinationPath}}": "Pomyślnie zamontowano {{.sourcePath}} do {{.destinationPath}}", @@ -663,6 +665,7 @@ "The KVM default network name. (kvm2 driver only)": "", "The KVM driver is unable to resurrect this old VM. Please run `minikube delete` to delete it and try again.": "", "The KVM network name. (kvm2 driver only)": "Nazwa sieci KVM. (wspierane tylko przez kvm2)", + "The OLM addon has stopped working, for more details visit: https://github.com/operator-framework/operator-lifecycle-manager/issues/2534": "", "The VM driver crashed. Run 'minikube start --alsologtostderr -v=8' to see the VM driver error message": "", "The VM driver exited with an error, and may be corrupt. Run 'minikube start' with --alsologtostderr -v=8 to see the error": "", "The VM that minikube is configured for no longer exists. Run 'minikube delete'": "", diff --git a/translations/ru.json b/translations/ru.json index 5cbbc79e26..429ebd5483 100644 --- a/translations/ru.json +++ b/translations/ru.json @@ -60,6 +60,7 @@ "Another minikube instance is downloading dependencies... ": "", "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": "", "At least needs control plane nodes to enable addon": "", + "Auto-pause is already enabled.": "", "Automatically selected the {{.driver}} driver": "", "Automatically selected the {{.driver}} driver. Other choices: {{.alternates}}": "", "Available Commands": "", @@ -575,6 +576,7 @@ "Stops a local Kubernetes cluster. This command stops the underlying VM or container, but keeps user data intact. The cluster can be started again with the \"start\" command.": "", "Stops a node in a cluster.": "", "Stops a running local Kubernetes cluster": "", + "Subnet to be used on kic cluster. If left empty, minikube will choose subnet address, beginning from 192.168.49.0. (docker and podman driver only)": "", "Successfully added {{.name}} to {{.cluster}}!": "", "Successfully deleted all profiles": "", "Successfully mounted {{.sourcePath}} to {{.destinationPath}}": "", @@ -604,6 +606,7 @@ "The KVM QEMU connection URI. (kvm2 driver only)": "", "The KVM default network name. (kvm2 driver only)": "", "The KVM driver is unable to resurrect this old VM. Please run `minikube delete` to delete it and try again.": "", + "The OLM addon has stopped working, for more details visit: https://github.com/operator-framework/operator-lifecycle-manager/issues/2534": "", "The VM driver crashed. Run 'minikube start --alsologtostderr -v=8' to see the VM driver error message": "", "The VM driver exited with an error, and may be corrupt. Run 'minikube start' with --alsologtostderr -v=8 to see the error": "", "The VM that minikube is configured for no longer exists. Run 'minikube delete'": "", diff --git a/translations/strings.txt b/translations/strings.txt index a634bd3f14..48c9f80a3a 100644 --- a/translations/strings.txt +++ b/translations/strings.txt @@ -60,6 +60,7 @@ "Another minikube instance is downloading dependencies... ": "", "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": "", "At least needs control plane nodes to enable addon": "", + "Auto-pause is already enabled.": "", "Automatically selected the {{.driver}} driver": "", "Automatically selected the {{.driver}} driver. Other choices: {{.alternates}}": "", "Available Commands": "", @@ -575,6 +576,7 @@ "Stops a local Kubernetes cluster. This command stops the underlying VM or container, but keeps user data intact. The cluster can be started again with the \"start\" command.": "", "Stops a node in a cluster.": "", "Stops a running local Kubernetes cluster": "", + "Subnet to be used on kic cluster. If left empty, minikube will choose subnet address, beginning from 192.168.49.0. (docker and podman driver only)": "", "Successfully added {{.name}} to {{.cluster}}!": "", "Successfully deleted all profiles": "", "Successfully mounted {{.sourcePath}} to {{.destinationPath}}": "", @@ -604,6 +606,7 @@ "The KVM QEMU connection URI. (kvm2 driver only)": "", "The KVM default network name. (kvm2 driver only)": "", "The KVM driver is unable to resurrect this old VM. Please run `minikube delete` to delete it and try again.": "", + "The OLM addon has stopped working, for more details visit: https://github.com/operator-framework/operator-lifecycle-manager/issues/2534": "", "The VM driver crashed. Run 'minikube start --alsologtostderr -v=8' to see the VM driver error message": "", "The VM driver exited with an error, and may be corrupt. Run 'minikube start' with --alsologtostderr -v=8 to see the error": "", "The VM that minikube is configured for no longer exists. Run 'minikube delete'": "", diff --git a/translations/zh-CN.json b/translations/zh-CN.json index dc20948fa1..82fa27097b 100644 --- a/translations/zh-CN.json +++ b/translations/zh-CN.json @@ -78,6 +78,7 @@ "Another minikube instance is downloading dependencies... ": "", "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": "", "At least needs control plane nodes to enable addon": "", + "Auto-pause is already enabled.": "", "Automatically selected the '{{.driver}}' driver": "自动选择 '{{.driver}}' 驱动", "Automatically selected the '{{.driver}}' driver (alternates: {{.alternates}})": "自动选择 '{{.driver}}' 驱动(可选项:{{.alternates}})", "Automatically selected the {{.driver}} driver": "自动选择 {{.driver}} 驱动", @@ -713,6 +714,7 @@ "Stops a node in a cluster.": "", "Stops a running local Kubernetes cluster": "", "Stops a running local kubernetes cluster": "停止正在运行的本地 kubernetes 集群", + "Subnet to be used on kic cluster. If left empty, minikube will choose subnet address, beginning from 192.168.49.0. (docker and podman driver only)": "", "Successfully added {{.name}} to {{.cluster}}!": "", "Successfully deleted all profiles": "成功删除所有配置文件", "Successfully deleted profile \\\"{{.name}}\\\"": "成功删除配置文件 \\\"{{.name}}\\\"", @@ -752,6 +754,7 @@ "The KVM default network name. (kvm2 driver only)": "", "The KVM driver is unable to resurrect this old VM. Please run `minikube delete` to delete it and try again.": "", "The KVM network name. (kvm2 driver only)": "KVM 网络名称。(仅限 kvm2 驱动程序)", + "The OLM addon has stopped working, for more details visit: https://github.com/operator-framework/operator-lifecycle-manager/issues/2534": "", "The VM driver crashed. Run 'minikube start --alsologtostderr -v=8' to see the VM driver error message": "", "The VM driver exited with an error, and may be corrupt. Run 'minikube start' with --alsologtostderr -v=8 to see the error": "", "The VM that minikube is configured for no longer exists. Run 'minikube delete'": "",