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/workflows/build.yml b/.github/workflows/build.yml index e568103e27..b79651aaa8 100644 --- a/.github/workflows/build.yml +++ b/.github/workflows/build.yml @@ -12,7 +12,7 @@ on: - "!deploy/iso/**" env: GOPROXY: https://proxy.golang.org - GO_VERSION: '1.17.7' + GO_VERSION: '1.18' permissions: contents: read diff --git a/.github/workflows/docs.yml b/.github/workflows/docs.yml index 8cd0cc6e3b..69bbc9bb59 100644 --- a/.github/workflows/docs.yml +++ b/.github/workflows/docs.yml @@ -6,7 +6,7 @@ on: - master env: GOPROXY: https://proxy.golang.org - GO_VERSION: '1.17.7' + GO_VERSION: '1.18' permissions: contents: read @@ -29,7 +29,7 @@ jobs: echo "::set-output name=changes::$c" - name: Create PR if: ${{ steps.gendocs.outputs.changes != '' }} - uses: peter-evans/create-pull-request@d6d5519d05f5814158ef015b8448f2f74648c421 + 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 b6e3926878..8d92994ccc 100644 --- a/.github/workflows/functional_verified.yml +++ b/.github/workflows/functional_verified.yml @@ -21,7 +21,7 @@ on: - deleted env: GOPROXY: https://proxy.golang.org - GO_VERSION: '1.17.7' + GO_VERSION: '1.18' permissions: contents: read diff --git a/.github/workflows/leaderboard.yml b/.github/workflows/leaderboard.yml index 93099be57b..defac3b945 100644 --- a/.github/workflows/leaderboard.yml +++ b/.github/workflows/leaderboard.yml @@ -7,7 +7,7 @@ on: release: types: [published] env: - GO_VERSION: '1.17.7' + GO_VERSION: '1.18' permissions: contents: read @@ -32,7 +32,7 @@ jobs: GITHUB_TOKEN: ${{ secrets.MINIKUBE_BOT_PAT }} - name: Create PR if: ${{ steps.leaderboard.outputs.changes != '' }} - uses: peter-evans/create-pull-request@d6d5519d05f5814158ef015b8448f2f74648c421 + 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 db125a97e3..005367b273 100644 --- a/.github/workflows/master.yml +++ b/.github/workflows/master.yml @@ -14,7 +14,7 @@ on: - "!deploy/iso/**" env: GOPROXY: https://proxy.golang.org - GO_VERSION: '1.17.7' + GO_VERSION: '1.18' permissions: contents: read diff --git a/.github/workflows/pr.yml b/.github/workflows/pr.yml index f097934d35..2e4edad5fc 100644 --- a/.github/workflows/pr.yml +++ b/.github/workflows/pr.yml @@ -12,7 +12,7 @@ on: - "!deploy/iso/**" env: GOPROXY: https://proxy.golang.org - GO_VERSION: '1.17.7' + GO_VERSION: '1.18' permissions: contents: read diff --git a/.github/workflows/time-to-k8s-public-chart.yml b/.github/workflows/time-to-k8s-public-chart.yml index 67b1178024..44b42ca892 100644 --- a/.github/workflows/time-to-k8s-public-chart.yml +++ b/.github/workflows/time-to-k8s-public-chart.yml @@ -6,7 +6,7 @@ on: - cron: "0 2,14 * * *" env: GOPROXY: https://proxy.golang.org - GO_VERSION: '1.17.7' + GO_VERSION: '1.18' permissions: contents: read diff --git a/.github/workflows/time-to-k8s.yml b/.github/workflows/time-to-k8s.yml index 205dc8e4e9..e7e1eadcb3 100644 --- a/.github/workflows/time-to-k8s.yml +++ b/.github/workflows/time-to-k8s.yml @@ -5,7 +5,7 @@ on: types: [released] env: GOPROXY: https://proxy.golang.org - GO_VERSION: '1.17.7' + GO_VERSION: '1.18' permissions: contents: read @@ -26,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@d6d5519d05f5814158ef015b8448f2f74648c421 + 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 181af87707..34fadcc977 100644 --- a/.github/workflows/translations.yml +++ b/.github/workflows/translations.yml @@ -6,7 +6,7 @@ on: - "translations/**" env: GOPROXY: https://proxy.golang.org - GO_VERSION: '1.17.7' + GO_VERSION: '1.18' permissions: contents: read diff --git a/.github/workflows/update-golang-version.yml b/.github/workflows/update-golang-version.yml index 2d4ffc228e..cd3ac21713 100644 --- a/.github/workflows/update-golang-version.yml +++ b/.github/workflows/update-golang-version.yml @@ -6,7 +6,7 @@ on: - cron: "0 9 * * 1" env: GOPROXY: https://proxy.golang.org - GO_VERSION: '1.17.7' + GO_VERSION: '1.18' permissions: contents: read @@ -26,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@d6d5519d05f5814158ef015b8448f2f74648c421 + 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 5ba9c675a8..ce7d850daa 100644 --- a/.github/workflows/update-golint-version.yml +++ b/.github/workflows/update-golint-version.yml @@ -6,7 +6,7 @@ on: - cron: "0 10 * * 1" env: GOPROXY: https://proxy.golang.org - GO_VERSION: '1.17.7' + GO_VERSION: '1.18' permissions: contents: read @@ -26,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@d6d5519d05f5814158ef015b8448f2f74648c421 + 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 9a11171836..949f295d1b 100644 --- a/.github/workflows/update-k8s-versions.yml +++ b/.github/workflows/update-k8s-versions.yml @@ -6,7 +6,7 @@ on: - cron: "0 8 * * 1" env: GOPROXY: https://proxy.golang.org - GO_VERSION: '1.17.7' + GO_VERSION: '1.18' permissions: contents: read @@ -31,7 +31,7 @@ jobs: echo "::set-output name=changes::$c" - name: Create PR if: ${{ steps.bumpk8s.outputs.changes != '' }} - uses: peter-evans/create-pull-request@d6d5519d05f5814158ef015b8448f2f74648c421 + 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 b964076250..182fbe2bf3 100644 --- a/.github/workflows/update-kubadm-constants.yml +++ b/.github/workflows/update-kubadm-constants.yml @@ -6,7 +6,7 @@ on: - cron: "0 6 * * 1" env: GOPROXY: https://proxy.golang.org - GO_VERSION: '1.17.7' + GO_VERSION: '1.18' permissions: contents: read @@ -29,7 +29,7 @@ jobs: echo "::set-output name=changes::$c" - name: Create PR if: ${{ steps.bumpKubAdmConsts.outputs.changes != '' }} - uses: peter-evans/create-pull-request@d6d5519d05f5814158ef015b8448f2f74648c421 + 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 41bbc92de1..726cd08e30 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-1648142972-13800 +ISO_VERSION ?= v1.25.2-1649577058-13659 # 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 @@ -872,6 +872,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/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_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/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 e387920172..50fff143ab 100644 --- a/deploy/iso/minikube-iso/package/containerd-bin/containerd-bin.hash +++ b/deploy/iso/minikube-iso/package/containerd-bin/containerd-bin.hash @@ -13,3 +13,4 @@ sha256 285a3f4c00a87538bd7d0a82a0a8a758458c02b925349f44f3189f480c326038 v1.4.6.t sha256 3bb9f54be022067847f5930d21ebbfe4e7a67f589d78930aa0ac713492c28bcc v1.4.9.tar.gz sha256 85a531725f15e2d136131119d42af4507a5389e0947015152075c4c93816fb5c v1.4.12.tar.gz sha256 7507913ba169c103ab67bc51bec31cd977d4348d7bc842da32b7eab5f930a14b v1.5.10.tar.gz +sha256 02b79d5e2b07b5e64cd28f1fe84395ee11eef95fc49fd923a9ab93022b148be6 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 d62620300a..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.5.10 -CONTAINERD_BIN_COMMIT = 2a1d4dbdb2a1030dc5b01e96fb110a9d9f150ecc +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/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 d8f2288ab6..e6c61f195a 100644 --- a/deploy/iso/minikube-iso/package/docker-bin/docker-bin.hash +++ b/deploy/iso/minikube-iso/package/docker-bin/docker-bin.hash @@ -34,3 +34,4 @@ sha256 34ad50146fce29b28e5115a1e8510dd5232459c9a4a9f28f65909f92cca314d9 docker- 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 31ec3c1184..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.13 +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/falco-module/falco-module.hash b/deploy/iso/minikube-iso/package/falco-module/falco-module.hash index def5553268..e39ff22cb3 100644 --- a/deploy/iso/minikube-iso/package/falco-module/falco-module.hash +++ b/deploy/iso/minikube-iso/package/falco-module/falco-module.hash @@ -6,9 +6,16 @@ sha256 11890b1401c197c28ee0a70a364004f58f5ec5526365e9a283699a75e5662773 0.22.0.t sha256 ed991ffbece8f543f5dc6aa5a660ab1ed4bae771b6aa4930663a3902cc160ea3 0.23.0.tar.gz sha256 5703d724e0b2ce3b98208549ca9d1abdc9a0298a9abfd748b34863c0c4015dcf 0.24.0.tar.gz sha256 1fa9c05e461817aa2542efa3b5e28e51a6caf02935dfc9d47271af79d5414947 0.28.0.tar.gz +sha256 9d90a86752a700dad2d1ea888b2cd33cdc808621faa2b6300bb0463d404744fb 0.30.0.tar.gz +sha256 0c7d88bfa2ec8e17e6e27158fabfb1d05982ede3138138b44a0f3ac6ffba5545 0.31.0.tar.gz +sha256 207b875c5b24717ecc9a5c288ff8df703d5d2a9ad00533f798d530e758f8ae42 0.31.1.tar.gz + # sysdig sha256 6e477ac5fe9d3110b870bd4495f01541373a008c375a1934a2d1c46798b6bad6 146a431edf95829ac11bfd9c85ba3ef08789bffe.tar.gz sha256 1c69363e4c36cdaeed413c2ef557af53bfc4bf1109fbcb6d6e18dc40fe6ddec8 be1ea2d9482d0e6e2cb14a0fd7e08cbecf517f94.tar.gz sha256 766e8952a36a4198fd976b9d848523e6abe4336612188e4fc911e217d8e8a00d 96bd9bc560f67742738eb7255aeb4d03046b8045.tar.gz sha256 6c3f5f2d699c9540e281f50cbc5cb6b580f0fc689798bc65d4a77f57f932a71c 85c88952b018fdbce2464222c3303229f5bfcfad.tar.gz sha256 9de717b3a4b611ea6df56afee05171860167112f74bb7717b394bcc88ac843cd 5c0b863ddade7a45568c0ac97d037422c9efb750.tar.gz +# falcosecurity/libs +sha256 2cf44f06a282e8cee7aa1f775a08ea94c06e275faaf0636b21eb06af28cf4b3f 319368f1ad778691164d33d59945e00c5752cd27.tar.gz +sha256 0f6dcdc3b94243c91294698ee343806539af81c5b33c60c6acf83fc1aa455e85 b7eb0dd65226a8dc254d228c8d950d07bf3521d2.tar.gz diff --git a/deploy/iso/minikube-iso/package/falco-module/falco-module.mk b/deploy/iso/minikube-iso/package/falco-module/falco-module.mk index 66f570a720..5e7a4460f0 100644 --- a/deploy/iso/minikube-iso/package/falco-module/falco-module.mk +++ b/deploy/iso/minikube-iso/package/falco-module/falco-module.mk @@ -4,22 +4,22 @@ # ######################################################################## -FALCO_MODULE_VERSION = 0.28.0 +FALCO_MODULE_VERSION = 0.31.1 FALCO_MODULE_SITE = https://github.com/falcosecurity/falco/archive FALCO_MODULE_SOURCE = $(FALCO_MODULE_VERSION).tar.gz FALCO_MODULE_DEPENDENCIES += ncurses libyaml FALCO_MODULE_LICENSE = Apache-2.0 FALCO_MODULE_LICENSE_FILES = COPYING -# see cmake/modules/sysdig-repo/CMakeLists.txt -FALCO_MODULE_SYSDIG_VERSION = 5c0b863ddade7a45568c0ac97d037422c9efb750 -FALCO_MODULE_EXTRA_DOWNLOADS = https://github.com/draios/sysdig/archive/${FALCO_MODULE_SYSDIG_VERSION}.tar.gz +# see cmake/modules/falcosecurity-libs.cmake +FALCO_MODULE_FALCOSECURITY_LIBS_VERSION = b7eb0dd65226a8dc254d228c8d950d07bf3521d2 +FALCO_MODULE_EXTRA_DOWNLOADS = https://github.com/falcosecurity/libs/archive/$(FALCO_MODULE_FALCOSECURITY_LIBS_VERSION).tar.gz -define FALCO_MODULE_SYSDIG_SRC - sed -e 's|URL ".*"|URL "'$(FALCO_MODULE_DL_DIR)/$(FALCO_MODULE_SYSDIG_VERSION).tar.gz'"|' -i $(@D)/cmake/modules/sysdig-repo/CMakeLists.txt +define FALCO_MODULE_FALCOSECURITY_LIBS_SRC + sed -e 's|URL ".*"|URL "'$(FALCO_MODULE_DL_DIR)/$(FALCO_MODULE_FALCOSECURITY_LIBS_VERSION).tar.gz'"|' -i $(@D)/cmake/modules/falcosecurity-libs-repo/CMakeLists.txt endef -FALCO_MODULE_POST_EXTRACT_HOOKS += FALCO_MODULE_SYSDIG_SRC +FALCO_MODULE_POST_EXTRACT_HOOKS += FALCO_MODULE_FALCOSECURITY_LIBS_SRC FALCO_MODULE_CONF_OPTS = -DFALCO_VERSION=$(FALCO_MODULE_VERSION) FALCO_MODULE_CONF_OPTS += -DUSE_BUNDLED_DEPS=ON 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/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 8719dc7ab7..25292b1d0a 100644 --- a/go.mod +++ b/go.mod @@ -1,6 +1,6 @@ module k8s.io/minikube -go 1.17 +go 1.18 require ( cloud.google.com/go/storage v1.21.0 @@ -16,9 +16,7 @@ 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/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 @@ -64,7 +62,7 @@ require ( github.com/pmezard/go-difflib v1.0.0 github.com/russross/blackfriday v1.5.3-0.20200218234912-41c5fccfd6f6 // indirect github.com/samalba/dockerclient v0.0.0-20160414174713-91d7393ff859 // indirect - github.com/shirou/gopsutil/v3 v3.22.2 + 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 @@ -79,11 +77,11 @@ require ( golang.org/x/mod v0.5.1 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-20220310020820-b874c991c1a5 + 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.11.0 - google.golang.org/api v0.73.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.5 @@ -94,11 +92,14 @@ require ( 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.8001.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 @@ -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,8 +185,8 @@ 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 @@ -193,11 +194,11 @@ require ( go.uber.org/multierr v1.6.0 // indirect go.uber.org/zap v1.19.0 // indirect golang.org/x/image v0.0.0-20220302094943-723b81ca9867 // indirect - golang.org/x/net v0.0.0-20220225172249-27dd8689420f // 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-20220310185008-1973136f34c6 // 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 diff --git a/go.sum b/go.sum index eff9e6f7f1..136aba648b 100644 --- a/go.sum +++ b/go.sum @@ -45,7 +45,6 @@ cloud.google.com/go/compute v1.5.0/go.mod h1:9SMHyhJlzhlkJqrPAc839t2BZFTSk6Jdj6m 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= @@ -67,7 +66,6 @@ contrib.go.opencensus.io/exporter/stackdriver v0.13.10 h1:a9+GZPUe+ONKUwULjlEOuc 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= @@ -101,7 +99,6 @@ 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= @@ -144,9 +141,10 @@ 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/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-20180226025133-644b8db467af/go.mod h1:K08gAheRH3/J6wwsYMMT4xOr94bZjxIelGM0+d/wbFw= 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= @@ -162,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= @@ -186,7 +182,6 @@ github.com/bitly/go-simplejson v0.5.0/go.mod h1:cXHtHw4XUPsvGaxgjIAn8PhEWG9NfngE github.com/bits-and-blooms/bitset v1.2.0/go.mod h1:gIdJ4wp64HaoK2YrL1Q5/N7Y16edYb8uY+O0FJTyyDA= 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= @@ -206,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= @@ -214,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= @@ -226,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= @@ -242,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= @@ -412,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= @@ -422,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= @@ -430,7 +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/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= @@ -576,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= @@ -618,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= @@ -628,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= @@ -645,32 +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.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= @@ -683,16 +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.4/go.mod h1:mtBihi+LeNXGtG8L9dX59gAEa12BDtBQSp4v/YAJqrc= github.com/hashicorp/memberlist v0.1.3/go.mod h1:ajVTdAv/9Im8oMAAj5G31PhhMCZJV2pPBoIllUwCN7I= -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.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= @@ -700,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= @@ -735,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= @@ -757,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= @@ -791,7 +757,6 @@ 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= @@ -810,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= @@ -819,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= @@ -837,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= @@ -953,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= @@ -980,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= @@ -989,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= @@ -1040,7 +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.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= @@ -1049,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.2 h1:wCrArWFkHYIdDxx/FSfF5RB4dpJYW6t7rcp3+zL8uks= -github.com/shirou/gopsutil/v3 v3.22.2/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= @@ -1062,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= @@ -1117,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= @@ -1156,7 +1113,6 @@ github.com/yuin/goldmark v1.1.32/go.mod h1:3hX8gzYuyVAZsxl0MRgGTJEmQBFcNTphYh9de github.com/yuin/goldmark v1.2.1/go.mod h1:3hX8gzYuyVAZsxl0MRgGTJEmQBFcNTphYh9decYSb74= github.com/yuin/goldmark v1.3.5/go.mod h1:mwnBkeHKe2W/ZEtQ+71ViKU8L12m81fl3OWwC1Zlc8k= github.com/yuin/goldmark v1.4.0/go.mod h1:mwnBkeHKe2W/ZEtQ+71ViKU8L12m81fl3OWwC1Zlc8k= -github.com/yuin/goldmark v1.4.1/go.mod h1:mwnBkeHKe2W/ZEtQ+71ViKU8L12m81fl3OWwC1Zlc8k= github.com/yusufpapurcu/wmi v1.2.2 h1:KBNDSne4vP5mbSWnJbO+51IMOXJB67QiYCSBrubbPRg= github.com/yusufpapurcu/wmi v1.2.2/go.mod h1:SBZ9tNy3G9/m5Oi98Zks0QjeHVDvuK0qfxQmPyzfmi0= github.com/yvasiyarov/go-metrics v0.0.0-20140926110328-57bccd1ccd43/go.mod h1:aX5oPXxHm3bOH+xeAttToC8pqch2ScQN/JoXYupl6xs= @@ -1169,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= @@ -1243,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= @@ -1254,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= @@ -1271,15 +1219,12 @@ 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/go.mod h1:023OzeP/+EPmXeapQh35lcL3II3LrY8Ic+EFFKVhULM= golang.org/x/image v0.0.0-20211028202545-6944b10bf410/go.mod h1:023OzeP/+EPmXeapQh35lcL3II3LrY8Ic+EFFKVhULM= @@ -1312,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= @@ -1367,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-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-20211015210444-4f30a5c0130f/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= @@ -1397,6 +1339,7 @@ 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/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= @@ -1441,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= @@ -1496,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= @@ -1515,26 +1455,24 @@ 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-20211019181941-9d821ace8654/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-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-20220310020820-b874c991c1a5 h1:y/woIyUBFbpQGKS0u1aHF/40WUDnek3fPOyD08H5Vng= -golang.org/x/sys v0.0.0-20220310020820-b874c991c1a5/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +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-20210615171337-6886f2dfbf5b/go.mod h1:jbD1KX2456YbFQfuXm/mYQcufACuNUgVhRMnK/tPxf8= @@ -1558,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= @@ -1578,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= @@ -1628,22 +1562,12 @@ golang.org/x/tools v0.1.4/go.mod h1:o0xws9oXOQQZyjljx8fwUC0k7L1pTE6eaCbjGeHmOkk= golang.org/x/tools v0.1.5/go.mod h1:o0xws9oXOQQZyjljx8fwUC0k7L1pTE6eaCbjGeHmOkk= golang.org/x/tools v0.1.6-0.20210820212750-d4cc65f0b2ff h1:VX/uD7MK0AHXGiScH3fsieUQUcpmRERPDYtqZdJnA+Q= golang.org/x/tools v0.1.6-0.20210820212750-d4cc65f0b2ff/go.mod h1:YD9qOF0M9xpSpdWTBbzEl5e/RnCefISl8E5Noe10jFM= -golang.org/x/tools v0.1.9 h1:j9KsMiaP1c3B0OTQGth0/k+miLGTgLsAFUCrF2vLcF8= -golang.org/x/tools v0.1.9/go.mod h1:nABZi5QlRsZVlzPpHl034qft6wpY4eDcsTt5AaioBiU= golang.org/x/xerrors v0.0.0-20190717185122-a985d3407aa7/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= golang.org/x/xerrors v0.0.0-20191011141410-1b5146add898/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= 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/go.mod h1:TZumC3NeyVQskjXqmyWt4S3bINhy7B4eYwW69EbyX+0= gonum.org/v1/gonum v0.11.0 h1:f1IJhK4Km5tBJmaiJXtk/PkL4cdVX6J+tGiM187uT5E= -gonum.org/v1/gonum v0.11.0/go.mod h1:fSG4YDCxxUZQJ7rKsQrj0gMOg00Il0Z96/qMA4bVQhA= -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.1/go.mod h1:VZW5OlhkL1mysU9vaqNHnsy86inf6Ot+jB3r+BczCEo= 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= @@ -1687,8 +1611,9 @@ google.golang.org/api v0.67.0/go.mod h1:ShHKP8E60yPsKNw/w8w+VYaj9H6buA5UqDp8dhbQ 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.73.0 h1:O9bThUh35K1rvUrQwTUQ1eqLC/IYyzUpWavYIO2EXvo= -google.golang.org/api v0.73.0/go.mod h1:lbd/q6BRFJbdpV6OUCXstVeiI5mL/d3/WifG7iNKnjI= +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= @@ -1763,7 +1688,6 @@ 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-20211206160659-862468c7d6e0/go.mod h1:5CzLGKJ67TSI2B9POpiiyGha0AjJvZIUgRMt1dSmuhc= google.golang.org/genproto v0.0.0-20211208223120-3a66f561d7aa/go.mod h1:5CzLGKJ67TSI2B9POpiiyGha0AjJvZIUgRMt1dSmuhc= @@ -1780,8 +1704,10 @@ google.golang.org/genproto v0.0.0-20220211171837-173942840c17/go.mod h1:kGP+zUP2 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-20220310185008-1973136f34c6 h1:FglFEfyj61zP3c6LgjmVHxYxZWXYul9oiS1EZqD5gLc= +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= @@ -1812,7 +1738,6 @@ 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.43.0/go.mod h1:k+4IHHFw41K8+bbowsex27ge2rCb65oeWqe4jJ590SU= 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= @@ -1949,11 +1874,10 @@ k8s.io/utils v0.0.0-20201110183641-67b214c5f920/go.mod h1:jPW/WVKK9YHAvNhRxK0md/ k8s.io/utils v0.0.0-20210802155522-efc7438f0176/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.8001.0 h1:JpmhiPLs+DA5shqjsqjGr4YIkVaLiDghI8qk9e34JXg= -libvirt.org/go/libvirt v1.8001.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= diff --git a/gui/window.cpp b/gui/window.cpp index 1898b77e6e..6a2af99395 100644 --- a/gui/window.cpp +++ b/gui/window.cpp @@ -79,6 +79,8 @@ #include #include #include +#include +#include #ifndef QT_NO_TERMWIDGET #include @@ -98,7 +100,7 @@ Window::Window() connect(sshButton, &QAbstractButton::clicked, this, &Window::sshConsole); connect(dashboardButton, &QAbstractButton::clicked, this, &Window::dashboardBrowser); - connect(startButton, &QAbstractButton::clicked, this, &Window::startMinikube); + connect(startButton, &QAbstractButton::clicked, this, &Window::startSelectedMinikube); connect(stopButton, &QAbstractButton::clicked, this, &Window::stopMinikube); connect(deleteButton, &QAbstractButton::clicked, this, &Window::deleteMinikube); connect(refreshButton, &QAbstractButton::clicked, this, &Window::updateClusters); @@ -192,11 +194,23 @@ void Window::createTrayIcon() trayIcon->setIcon(*trayIconIcon); } -void Window::startMinikube() +void Window::startMinikube(QStringList moreArgs) { - QStringList args = { "start", "-p", selectedCluster() }; - sendMinikubeCommand(args); + QString text; + QStringList args = { "start", "-o", "json" }; + args << moreArgs; + bool success = sendMinikubeCommand(args, text); updateClusters(); + if (success) { + return; + } + outputFailedStart(text); +} + +void Window::startSelectedMinikube() +{ + QStringList args = { "-p", selectedCluster() }; + return startMinikube(args); } void Window::stopMinikube() @@ -415,18 +429,18 @@ bool Window::sendMinikubeCommand(QStringList cmds, QString &text) } QStringList arguments; arguments << cmds; - bool success; QProcess *process = new QProcess(this); process->start(program, arguments); this->setCursor(Qt::WaitCursor); - success = process->waitForFinished(300 * 1000); + bool timedOut = process->waitForFinished(300 * 1000); + int exitCode = process->exitCode(); + bool success = !timedOut && exitCode == 0; this->unsetCursor(); + text = process->readAllStandardOutput(); if (success) { - text = process->readAllStandardOutput(); } else { - qDebug() << process->readAllStandardOutput(); qDebug() << process->readAllStandardError(); } delete process; @@ -459,8 +473,8 @@ void Window::askName() int code = dialog.exec(); profile = profileField.text(); if (code == QDialog::Accepted) { - QStringList arg = { "start", "-p", profile }; - sendMinikubeCommand(arg); + QStringList args = { "-p", profile }; + startMinikube(args); } else if (code == QDialog::Rejected) { askCustom(); } @@ -512,8 +526,7 @@ void Window::askCustom() containerRuntimeComboBox->itemText(containerRuntimeComboBox->currentIndex()); cpus = cpuField.text().toInt(); memory = memoryField.text().toInt(); - QStringList args = { "start", - "-p", + QStringList args = { "-p", profile, "--driver", driver, @@ -523,10 +536,79 @@ void Window::askCustom() QString::number(cpus), "--memory", QString::number(memory) }; - sendMinikubeCommand(args); + startMinikube(args); } } +void Window::outputFailedStart(QString text) +{ + QStringList lines; +#if QT_VERSION >= QT_VERSION_CHECK(5, 14, 0) + lines = text.split("\n", Qt::SkipEmptyParts); +#else + lines = text.split("\n", QString::SkipEmptyParts); +#endif + for (int i = 0; i < lines.size(); i++) { + QString line = lines.at(i); + QJsonParseError error; + QJsonDocument json = QJsonDocument::fromJson(line.toUtf8(), &error); + if (json.isNull() || !json.isObject()) { + continue; + } + QJsonObject par = json.object(); + QJsonObject data = par["data"].toObject(); + if (!data.contains("exitcode")) { + continue; + } + QString advice = data["advice"].toString(); + QString message = data["message"].toString(); + QString name = data["name"].toString(); + QString url = data["url"].toString(); + QString issues = data["issues"].toString(); + + QDialog dialog; + dialog.setWindowTitle(tr("minikube start failed")); + dialog.setWindowIcon(*trayIconIcon); + dialog.setFixedWidth(600); + dialog.setModal(true); + QFormLayout form(&dialog); + createLabel("Error Code", name, &form, false); + createLabel("Advice", advice, &form, false); + QLabel *errorMessage = createLabel("Error Message", message, &form, false); + errorMessage->setFont(QFont("Courier", 10)); + errorMessage->setStyleSheet("background-color:white;"); + createLabel("Link to documentation", url, &form, true); + createLabel("Link to related issue", issues, &form, true); + // Enabling once https://github.com/kubernetes/minikube/issues/13925 is fixed + // QLabel *fileLabel = new QLabel(this); + // fileLabel->setOpenExternalLinks(true); + // fileLabel->setWordWrap(true); + // QString logFile = QDir::homePath() + "/.minikube/logs/lastStart.txt"; + // fileLabel->setText("View log file"); + // form.addRow(fileLabel); + QDialogButtonBox buttonBox(Qt::Horizontal, &dialog); + buttonBox.addButton(QString(tr("OK")), QDialogButtonBox::AcceptRole); + connect(&buttonBox, &QDialogButtonBox::accepted, &dialog, &QDialog::accept); + form.addRow(&buttonBox); + dialog.exec(); + } +} + +QLabel *Window::createLabel(QString title, QString text, QFormLayout *form, bool isLink) +{ + QLabel *label = new QLabel(this); + if (!text.isEmpty()) { + form->addRow(label); + } + if (isLink) { + label->setOpenExternalLinks(true); + text = "" + text + ""; + } + label->setWordWrap(true); + label->setText(title + ": " + text); + return label; +} + void Window::initMachine() { askName(); diff --git a/gui/window.h b/gui/window.h index bed64c0dac..1c321edbde 100644 --- a/gui/window.h +++ b/gui/window.h @@ -55,6 +55,7 @@ #define WINDOW_H #include +#include #ifndef QT_NO_SYSTEMTRAYICON @@ -100,7 +101,8 @@ private: void createActionGroupBox(); void createActions(); void createTrayIcon(); - void startMinikube(); + void startMinikube(QStringList args); + void startSelectedMinikube(); void stopMinikube(); void deleteMinikube(); ClusterList getClusters(); @@ -122,6 +124,8 @@ private: void sshConsole(); void dashboardBrowser(); void checkForMinikube(); + void outputFailedStart(QString text); + QLabel *createLabel(QString title, QString text, QFormLayout *form, bool isLink); QPushButton *sshButton; QPushButton *dashboardButton; QProcess *dashboardProcess; 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/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_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 93b3bd8e24..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" @@ -736,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 548d4d8216..d8d9d3207f 100644 --- a/pkg/drivers/kic/types.go +++ b/pkg/drivers/kic/types.go @@ -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/minikube/assets/addons.go b/pkg/minikube/assets/addons.go index f84060372f..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{ 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_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_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/download/iso.go b/pkg/minikube/download/iso.go index 7227eae071..96f2312fd5 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-builds/iso/13800" + isoBucket := "minikube-builds/iso/13659" 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/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 8dbc83cb46..001bc7fef9 100644 --- a/pkg/minikube/registry/drvs/docker/docker.go +++ b/pkg/minikube/registry/drvs/docker/docker.go @@ -87,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 } 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 e422d3fd5a..a8be0ad0f7 100644 --- a/site/content/en/docs/commands/start.md +++ b/site/content/en/docs/commands/start.md @@ -69,7 +69,7 @@ minikube start [flags] --insecure-registry strings Insecure Docker registries to pass to the Docker daemon. The default service CIDR range will automatically be added. --install-addons If set, install addons. Defaults to true. (default true) --interactive Allow user prompts for more information (default true) - --iso-url strings Locations to fetch the minikube ISO from. (default [https://storage.googleapis.com/minikube-builds/iso/13800/minikube-v1.25.2-1648142972-13800.iso,https://github.com/kubernetes/minikube/releases/download/v1.25.2-1648142972-13800/minikube-v1.25.2-1648142972-13800.iso,https://kubernetes.oss-cn-hangzhou.aliyuncs.com/minikube/iso/minikube-v1.25.2-1648142972-13800.iso]) + --iso-url strings Locations to fetch the minikube ISO from. (default [https://storage.googleapis.com/minikube-builds/iso/13659/minikube-v1.25.2-1649577058-13659.iso,https://github.com/kubernetes/minikube/releases/download/v1.25.2-1649577058-13659/minikube-v1.25.2-1649577058-13659.iso,https://kubernetes.oss-cn-hangzhou.aliyuncs.com/minikube/iso/minikube-v1.25.2-1649577058-13659.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.5, 'latest' for v1.23.6-rc.0). Defaults to 'stable'. --kvm-gpu Enable experimental NVIDIA GPU support in minikube @@ -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/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 b782c32376..b8b0d58b06 100644 --- a/translations/de.json +++ b/translations/de.json @@ -609,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", @@ -645,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", diff --git a/translations/es.json b/translations/es.json index cdcffc3cc4..1639b2136f 100644 --- a/translations/es.json +++ b/translations/es.json @@ -616,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}}": "", @@ -650,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 53eb921644..028c57f2e9 100644 --- a/translations/fr.json +++ b/translations/fr.json @@ -595,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}}", @@ -626,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'", diff --git a/translations/ja.json b/translations/ja.json index 806a7a7605..e13eb5c923 100644 --- a/translations/ja.json +++ b/translations/ja.json @@ -607,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}} のマウントに成功しました", @@ -644,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 acc9d13afa..026532b9a1 100644 --- a/translations/ko.json +++ b/translations/ko.json @@ -632,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}}": "", @@ -662,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 78a3d7fa6e..e81b0eda56 100644 --- a/translations/pl.json +++ b/translations/pl.json @@ -631,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}}", @@ -664,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 b8c9e585d3..429ebd5483 100644 --- a/translations/ru.json +++ b/translations/ru.json @@ -576,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}}": "", @@ -605,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 8dd453de3d..48c9f80a3a 100644 --- a/translations/strings.txt +++ b/translations/strings.txt @@ -576,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}}": "", @@ -605,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 325f6dda19..82fa27097b 100644 --- a/translations/zh-CN.json +++ b/translations/zh-CN.json @@ -714,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}}\\\"", @@ -753,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'": "",