Merge branch 'master' into automateTimeToK8s
commit
ee5faa6fc4
2
Makefile
2
Makefile
|
|
@ -369,7 +369,7 @@ test: $(SOURCE_GENERATED) ## Trigger minikube test
|
|||
|
||||
.PHONY: generate-docs
|
||||
generate-docs: extract out/minikube ## Automatically generate commands documentation.
|
||||
out/minikube generate-docs --path ./site/content/en/docs/commands/ --test-path ./site/content/en/docs/contrib/tests.en.md
|
||||
out/minikube generate-docs --path ./site/content/en/docs/commands/ --test-path ./site/content/en/docs/contrib/tests.en.md --code-path ./site/content/en/docs/contrib/errorcodes.en.md
|
||||
|
||||
.PHONY: gotest
|
||||
gotest: $(SOURCE_GENERATED) ## Trigger minikube test
|
||||
|
|
|
|||
|
|
@ -29,6 +29,7 @@ import (
|
|||
|
||||
var docsPath string
|
||||
var testPath string
|
||||
var codePath string
|
||||
|
||||
// generateDocs represents the generate-docs command
|
||||
var generateDocs = &cobra.Command{
|
||||
|
|
@ -45,16 +46,18 @@ var generateDocs = &cobra.Command{
|
|||
}
|
||||
|
||||
// generate docs
|
||||
if err := generate.Docs(RootCmd, docsPath, testPath); err != nil {
|
||||
if err := generate.Docs(RootCmd, docsPath, testPath, codePath); err != nil {
|
||||
exit.Error(reason.InternalGenerateDocs, "Unable to generate docs", err)
|
||||
}
|
||||
out.Step(style.Documentation, "Docs have been saved at - {{.path}}", out.V{"path": docsPath})
|
||||
out.Step(style.Documentation, "Test docs have been saved at - {{.path}}", out.V{"path": testPath})
|
||||
out.Step(style.Documentation, "Error code docs have been saved at - {{.path}}", out.V{"path": codePath})
|
||||
},
|
||||
}
|
||||
|
||||
func init() {
|
||||
generateDocs.Flags().StringVar(&docsPath, "path", "", "The path on the file system where the docs in markdown need to be saved")
|
||||
generateDocs.Flags().StringVar(&testPath, "test-path", "", "The path on the file system where the testing docs in markdown need to be saved")
|
||||
generateDocs.Flags().StringVar(&codePath, "code-path", "", "The path on the file system where the error code docs in markdown need to be saved")
|
||||
RootCmd.AddCommand(generateDocs)
|
||||
}
|
||||
|
|
|
|||
|
|
@ -1510,5 +1510,8 @@ func exitGuestProvision(err error) {
|
|||
if errors.Cause(err) == oci.ErrInsufficientDockerStorage {
|
||||
exit.Message(reason.RsrcInsufficientDockerStorage, "preload extraction failed: \"No space left on device\"")
|
||||
}
|
||||
if errors.Cause(err) == oci.ErrGetSSHPortContainerNotRunning {
|
||||
exit.Message(reason.GuestProvisionContainerExited, "Docker container exited prematurely after it was created, consider investigating Docker's performance/health.")
|
||||
}
|
||||
exit.Error(reason.GuestProvision, "error provisioning host", err)
|
||||
}
|
||||
|
|
|
|||
|
|
@ -147,7 +147,7 @@ func initMinikubeFlags() {
|
|||
startCmd.Flags().String(containerRuntime, constants.DefaultContainerRuntime, fmt.Sprintf("The container runtime to be used (%s).", strings.Join(cruntime.ValidRuntimes(), ", ")))
|
||||
startCmd.Flags().Bool(createMount, false, "This will start the mount daemon and automatically mount files into minikube.")
|
||||
startCmd.Flags().String(mountString, constants.DefaultMountDir+":/minikube-host", "The argument to pass the minikube mount command on start.")
|
||||
startCmd.Flags().StringSliceVar(&config.AddonList, "addons", nil, "Enable addons. see `minikube addons list` for a list of valid addon names.")
|
||||
startCmd.Flags().StringSlice(config.AddonListFlag, nil, "Enable addons. see `minikube addons list` for a list of valid addon names.")
|
||||
startCmd.Flags().String(criSocket, "", "The cri socket path to be used.")
|
||||
startCmd.Flags().String(networkPlugin, "", "Kubelet network plug-in to use (default: auto)")
|
||||
startCmd.Flags().Bool(enableDefaultCNI, false, "DEPRECATED: Replaced by --cni=bridge")
|
||||
|
|
|
|||
8
go.mod
8
go.mod
|
|
@ -52,7 +52,7 @@ require (
|
|||
github.com/kballard/go-shellquote v0.0.0-20180428030007-95032a82bc51
|
||||
github.com/klauspost/cpuid v1.2.0
|
||||
github.com/libvirt/libvirt-go v3.9.0+incompatible
|
||||
github.com/machine-drivers/docker-machine-driver-vmware v0.1.1
|
||||
github.com/machine-drivers/docker-machine-driver-vmware v0.1.3
|
||||
github.com/mattbaird/jsonpatch v0.0.0-20200820163806-098863c1fc24
|
||||
github.com/mattn/go-isatty v0.0.12
|
||||
github.com/mitchellh/go-ps v1.0.0
|
||||
|
|
@ -82,13 +82,13 @@ require (
|
|||
golang.org/x/crypto v0.0.0-20201002170205-7f63de1d35b0
|
||||
golang.org/x/exp v0.0.0-20200224162631-6cc2880d07d6
|
||||
golang.org/x/mod v0.4.2
|
||||
golang.org/x/oauth2 v0.0.0-20210427180440-81ed05c6b58c
|
||||
golang.org/x/oauth2 v0.0.0-20210514164344-f6687ab2804c
|
||||
golang.org/x/sync v0.0.0-20210220032951-036812b2e83c
|
||||
golang.org/x/sys v0.0.0-20210503080704-8803ae5d1324
|
||||
golang.org/x/sys v0.0.0-20210514084401-e8d321eab015
|
||||
golang.org/x/term v0.0.0-20210406210042-72f3dc4e9b72
|
||||
golang.org/x/text v0.3.6
|
||||
gonum.org/v1/plot v0.9.0
|
||||
google.golang.org/api v0.46.0
|
||||
google.golang.org/api v0.47.0
|
||||
gopkg.in/mgo.v2 v2.0.0-20190816093944-a6b53ec6cb22 // indirect
|
||||
gopkg.in/yaml.v2 v2.4.0
|
||||
gotest.tools/v3 v3.0.3 // indirect
|
||||
|
|
|
|||
36
go.sum
36
go.sum
|
|
@ -689,8 +689,8 @@ github.com/lucas-clemente/aes12 v0.0.0-20171027163421-cd47fb39b79f/go.mod h1:JpH
|
|||
github.com/lucas-clemente/quic-clients v0.1.0/go.mod h1:y5xVIEoObKqULIKivu+gD/LU90pL73bTdtQjPBvtCBk=
|
||||
github.com/lucas-clemente/quic-go v0.10.2/go.mod h1:hvaRS9IHjFLMq76puFJeWNfmn+H70QZ/CXoxqw9bzao=
|
||||
github.com/lucas-clemente/quic-go-certificates v0.0.0-20160823095156-d2f86524cced/go.mod h1:NCcRLrOTZbzhZvixZLlERbJtDtYsmMw8Jc4vS8Z0g58=
|
||||
github.com/machine-drivers/docker-machine-driver-vmware v0.1.1 h1:+E1IKKk+6kaQrCPg6edJZ/zISZijuZTPnzy6RE4C/Ho=
|
||||
github.com/machine-drivers/docker-machine-driver-vmware v0.1.1/go.mod h1:ej014C83EmSnxJeJ8PtVb8OLJ91PJKO1Q8Y7sM5CK0o=
|
||||
github.com/machine-drivers/docker-machine-driver-vmware v0.1.3 h1:CIdHhp5vSr+7i3DYmXyJHjVOeo27AGWtvq5SfmjyMVs=
|
||||
github.com/machine-drivers/docker-machine-driver-vmware v0.1.3/go.mod h1:p2hY99UqqG4FNLvAotM0K5kPlShyQ486ymrkNqv1NiA=
|
||||
github.com/machine-drivers/machine v0.7.1-0.20210306082426-fcb2ad5bcb17 h1:fQoDTuCuJ30R+D6TSB9SALB+J3jUMa8ID8YPfmSDA20=
|
||||
github.com/machine-drivers/machine v0.7.1-0.20210306082426-fcb2ad5bcb17/go.mod h1:79Uwa2hGd5S39LDJt58s8JZcIhGEK6pkq9bsuTbFWbk=
|
||||
github.com/magiconair/properties v1.8.0/go.mod h1:PppfXfuXeibc/6YijjN8zIbojt8czPbwD3XqdrwzmxQ=
|
||||
|
|
@ -924,6 +924,7 @@ github.com/shurcooL/sanitized_anchor_name v1.0.0/go.mod h1:1NzhyTcUVG4SuEtjjoZeV
|
|||
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=
|
||||
github.com/sirupsen/logrus v1.2.0/go.mod h1:LxeOpSwHxABJmUn/MG1IvRgCAasNZTLOkJPxbbu5VWo=
|
||||
github.com/sirupsen/logrus v1.3.0/go.mod h1:LxeOpSwHxABJmUn/MG1IvRgCAasNZTLOkJPxbbu5VWo=
|
||||
github.com/sirupsen/logrus v1.4.1/go.mod h1:ni0Sbl8bgC9z8RoU9G6nDWqqs/fq4eDPysMBDgk/93Q=
|
||||
github.com/sirupsen/logrus v1.4.2/go.mod h1:tLMulIdttU9McNUspp0xgXVQah82FyeX6MwdIuYE2rE=
|
||||
github.com/sirupsen/logrus v1.6.0/go.mod h1:7uNnSEd1DgxDLC74fIahvMZmmYsHGZGEOFrfsX/uA88=
|
||||
|
|
@ -1022,6 +1023,7 @@ github.com/yuin/goldmark v1.1.25/go.mod h1:3hX8gzYuyVAZsxl0MRgGTJEmQBFcNTphYh9de
|
|||
github.com/yuin/goldmark v1.1.27/go.mod h1:3hX8gzYuyVAZsxl0MRgGTJEmQBFcNTphYh9decYSb74=
|
||||
github.com/yuin/goldmark v1.1.32/go.mod h1:3hX8gzYuyVAZsxl0MRgGTJEmQBFcNTphYh9decYSb74=
|
||||
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/yvasiyarov/go-metrics v0.0.0-20140926110328-57bccd1ccd43/go.mod h1:aX5oPXxHm3bOH+xeAttToC8pqch2ScQN/JoXYupl6xs=
|
||||
github.com/yvasiyarov/gorelic v0.0.0-20141212073537-a9bba5b9ab50/go.mod h1:NUSPSUX/bi6SeDMUh6brw0nXpxHnc96TguQh0+r/ssA=
|
||||
github.com/yvasiyarov/newrelic_platform_go v0.0.0-20140908184405-b21fdbd4370f/go.mod h1:GlGEuHIJweS1mbCqG+7vt2nvWLzLLnRHbXz5JKd/Qbg=
|
||||
|
|
@ -1067,6 +1069,7 @@ golang.org/x/crypto v0.0.0-20171113213409-9f005a07e0d3/go.mod h1:6SG95UA2DQfeDnf
|
|||
golang.org/x/crypto v0.0.0-20180904163835-0709b304e793/go.mod h1:6SG95UA2DQfeDnfUPMdvaQW0Q7yPrPDi9nlGo2tz2b4=
|
||||
golang.org/x/crypto v0.0.0-20181009213950-7c1a557ab941/go.mod h1:6SG95UA2DQfeDnfUPMdvaQW0Q7yPrPDi9nlGo2tz2b4=
|
||||
golang.org/x/crypto v0.0.0-20181029021203-45a5f77698d3/go.mod h1:6SG95UA2DQfeDnfUPMdvaQW0Q7yPrPDi9nlGo2tz2b4=
|
||||
golang.org/x/crypto v0.0.0-20190103213133-ff983b9c42bc/go.mod h1:6SG95UA2DQfeDnfUPMdvaQW0Q7yPrPDi9nlGo2tz2b4=
|
||||
golang.org/x/crypto v0.0.0-20190123085648-057139ce5d2b/go.mod h1:6SG95UA2DQfeDnfUPMdvaQW0Q7yPrPDi9nlGo2tz2b4=
|
||||
golang.org/x/crypto v0.0.0-20190211182817-74369b46fc67/go.mod h1:6SG95UA2DQfeDnfUPMdvaQW0Q7yPrPDi9nlGo2tz2b4=
|
||||
golang.org/x/crypto v0.0.0-20190228161510-8dd112bcdc25/go.mod h1:djNgcEr1/C05ACkg1iLfiJU5Ep61QUkGW8qpdssI0+w=
|
||||
|
|
@ -1119,8 +1122,9 @@ golang.org/x/lint v0.0.0-20190930215403-16217165b5de/go.mod h1:6SW0HCj/g11FgYtHl
|
|||
golang.org/x/lint v0.0.0-20191125180803-fdd1cda4f05f/go.mod h1:5qLYkcX4OjUUV8bRuDixDT3tpyyb+LUpUlRWLxfhWrs=
|
||||
golang.org/x/lint v0.0.0-20200130185559-910be7a94367/go.mod h1:3xt1FjdF8hUf6vQPIChWIBhFzV8gjjsPE/fR3IyQdNY=
|
||||
golang.org/x/lint v0.0.0-20200302205851-738671d3881b/go.mod h1:3xt1FjdF8hUf6vQPIChWIBhFzV8gjjsPE/fR3IyQdNY=
|
||||
golang.org/x/lint v0.0.0-20201208152925-83fdc39ff7b5 h1:2M3HP5CCK1Si9FQhwnzYhXdG6DXeebvUHFpre8QvbyI=
|
||||
golang.org/x/lint v0.0.0-20201208152925-83fdc39ff7b5/go.mod h1:3xt1FjdF8hUf6vQPIChWIBhFzV8gjjsPE/fR3IyQdNY=
|
||||
golang.org/x/lint v0.0.0-20210508222113-6edffad5e616 h1:VLliZ0d+/avPrXXH+OakdXhpJuEoBZuwh1m2j7U6Iug=
|
||||
golang.org/x/lint v0.0.0-20210508222113-6edffad5e616/go.mod h1:3xt1FjdF8hUf6vQPIChWIBhFzV8gjjsPE/fR3IyQdNY=
|
||||
golang.org/x/mobile v0.0.0-20190312151609-d3739f865fa6/go.mod h1:z+o9i4GpDbdi3rU15maQ/Ox0txvL9dWGYEHz965HBQE=
|
||||
golang.org/x/mobile v0.0.0-20190719004257-d2bd2a29d028/go.mod h1:E/iHnbuqvinMTCcRqshq8CkpyQDoeVncDDYHnLhea+o=
|
||||
golang.org/x/mod v0.0.0-20190513183733-4bf6d317e70e/go.mod h1:mXi4GBBbnImb6dmsKGUJ2LatrhH/nqhxcFungHvyanc=
|
||||
|
|
@ -1186,6 +1190,7 @@ golang.org/x/net v0.0.0-20201224014010-6772e930b67b/go.mod h1:m0MpNAwzfU5UDzcl9v
|
|||
golang.org/x/net v0.0.0-20210119194325-5f4716e94777/go.mod h1:m0MpNAwzfU5UDzcl9v0D8zg8gWTRqZa9RBIspLL5mdg=
|
||||
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-20210503060351-7fd8e65b6420 h1:a8jGStKg0XqKDlKqjLrXn0ioF5MH36pT7Z0BRTqLhbk=
|
||||
golang.org/x/net v0.0.0-20210503060351-7fd8e65b6420/go.mod h1:9nx3DQGgdP8bBQD5qxJ1jj9UTztislL4KSBs9R2vV5Y=
|
||||
golang.org/x/oauth2 v0.0.0-20180821212333-d2e6202438be/go.mod h1:N/0e6XlmueqKjAGxoOufVs8QHGRruUQn6yWY3a++T0U=
|
||||
|
|
@ -1201,8 +1206,8 @@ golang.org/x/oauth2 v0.0.0-20210218202405-ba52d332ba99/go.mod h1:KelEdhl1UZF7XfJ
|
|||
golang.org/x/oauth2 v0.0.0-20210220000619-9bb904979d93/go.mod h1:KelEdhl1UZF7XfJ4dDtk6s++YSgaE7mD/BuKKDLBl4A=
|
||||
golang.org/x/oauth2 v0.0.0-20210313182246-cd4f82c27b84/go.mod h1:KelEdhl1UZF7XfJ4dDtk6s++YSgaE7mD/BuKKDLBl4A=
|
||||
golang.org/x/oauth2 v0.0.0-20210413134643-5e61552d6c78/go.mod h1:KelEdhl1UZF7XfJ4dDtk6s++YSgaE7mD/BuKKDLBl4A=
|
||||
golang.org/x/oauth2 v0.0.0-20210427180440-81ed05c6b58c h1:SgVl/sCtkicsS7psKkje4H9YtjdEl3xsYh7N+5TDHqY=
|
||||
golang.org/x/oauth2 v0.0.0-20210427180440-81ed05c6b58c/go.mod h1:KelEdhl1UZF7XfJ4dDtk6s++YSgaE7mD/BuKKDLBl4A=
|
||||
golang.org/x/oauth2 v0.0.0-20210514164344-f6687ab2804c h1:pkQiBZBvdos9qq4wBAHqlzuZHEXo07pqV06ef90u1WI=
|
||||
golang.org/x/oauth2 v0.0.0-20210514164344-f6687ab2804c/go.mod h1:KelEdhl1UZF7XfJ4dDtk6s++YSgaE7mD/BuKKDLBl4A=
|
||||
golang.org/x/perf v0.0.0-20180704124530-6e6d33e29852/go.mod h1:JLpeXjPJfIyPr5TlbXLkXWLhP8nz10XfvxElABhCtcw=
|
||||
golang.org/x/sync v0.0.0-20180314180146-1d60e4601c6f/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM=
|
||||
golang.org/x/sync v0.0.0-20181108010431-42b317875d0f/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM=
|
||||
|
|
@ -1223,6 +1228,7 @@ golang.org/x/sys v0.0.0-20180909124046-d0be0721c37e/go.mod h1:STP8DvDyc/dI5b8T5h
|
|||
golang.org/x/sys v0.0.0-20181026203630-95b1ffbd15a5/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY=
|
||||
golang.org/x/sys v0.0.0-20181107165924-66b7b1311ac8/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY=
|
||||
golang.org/x/sys v0.0.0-20181116152217-5ac8a444bdc5/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY=
|
||||
golang.org/x/sys v0.0.0-20190115152922-a457fd036447/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY=
|
||||
golang.org/x/sys v0.0.0-20190124100055-b90733256f2e/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY=
|
||||
golang.org/x/sys v0.0.0-20190209173611-3b5209105503/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY=
|
||||
golang.org/x/sys v0.0.0-20190215142949-d0b11bdaac8a/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY=
|
||||
|
|
@ -1300,11 +1306,13 @@ golang.org/x/sys v0.0.0-20210304124612-50617c2ba197/go.mod h1:h1NjWce9XRLGQEsW7w
|
|||
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=
|
||||
golang.org/x/sys v0.0.0-20210330210617-4fbd30eecc44/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
|
||||
golang.org/x/sys v0.0.0-20210403161142-5e06dd20ab57/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
|
||||
golang.org/x/sys v0.0.0-20210412220455-f1c623a9e750/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
|
||||
golang.org/x/sys v0.0.0-20210423082822-04245dca01da/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
|
||||
golang.org/x/sys v0.0.0-20210503080704-8803ae5d1324 h1:pAwJxDByZctfPwzlNGrDN2BQLsdPb9NkhoTJtUkAO28=
|
||||
golang.org/x/sys v0.0.0-20210503080704-8803ae5d1324/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
|
||||
golang.org/x/sys v0.0.0-20210510120138-977fb7262007/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
|
||||
golang.org/x/sys v0.0.0-20210514084401-e8d321eab015 h1:hZR0X1kPW+nwyJ9xRxqZk1vx5RUObAPBdKVvXPDUH/E=
|
||||
golang.org/x/sys v0.0.0-20210514084401-e8d321eab015/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
|
||||
golang.org/x/term v0.0.0-20201126162022-7de9c90e9dd1/go.mod h1:bj7SfCRtBDWHUb9snDiAeCFNEtKQo2Wmx5Cou7ajbmo=
|
||||
golang.org/x/term v0.0.0-20210406210042-72f3dc4e9b72 h1:VqE9gduFZ4dbR7XoL77lHFp0/DyDUBKSXK7CMFkVcV0=
|
||||
golang.org/x/term v0.0.0-20210406210042-72f3dc4e9b72/go.mod h1:bj7SfCRtBDWHUb9snDiAeCFNEtKQo2Wmx5Cou7ajbmo=
|
||||
|
|
@ -1389,8 +1397,9 @@ golang.org/x/tools v0.0.0-20201201161351-ac6f37ff4c2a/go.mod h1:emZCQorbCU4vsT4f
|
|||
golang.org/x/tools v0.0.0-20201208233053-a543418bbed2/go.mod h1:emZCQorbCU4vsT4fOWvOPXz4eW1wZW4PmDk9uLelYpA=
|
||||
golang.org/x/tools v0.0.0-20210105154028-b0ab187a4818/go.mod h1:emZCQorbCU4vsT4fOWvOPXz4eW1wZW4PmDk9uLelYpA=
|
||||
golang.org/x/tools v0.0.0-20210106214847-113979e3529a/go.mod h1:emZCQorbCU4vsT4fOWvOPXz4eW1wZW4PmDk9uLelYpA=
|
||||
golang.org/x/tools v0.1.0 h1:po9/4sTYwZU9lPhi1tOrb4hCv3qrhiQ77LZfGa2OjwY=
|
||||
golang.org/x/tools v0.1.0/go.mod h1:xkSsbof2nBLbhDlRMhhhyNLN/zl3eTqcnHD5viDpcZ0=
|
||||
golang.org/x/tools v0.1.1 h1:wGiQel/hW0NnEkJUk8lbzkX2gFJU6PFxf1v5OlCfuOs=
|
||||
golang.org/x/tools v0.1.1/go.mod h1:o0xws9oXOQQZyjljx8fwUC0k7L1pTE6eaCbjGeHmOkk=
|
||||
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=
|
||||
|
|
@ -1431,8 +1440,8 @@ google.golang.org/api v0.40.0/go.mod h1:fYKFpnQN0DsDSKRVRcQSDQNtqWPfM9i+zNPxepjR
|
|||
google.golang.org/api v0.41.0/go.mod h1:RkxM5lITDfTzmyKFPt+wGrCJbVfniCr2ool8kTBzRTU=
|
||||
google.golang.org/api v0.43.0/go.mod h1:nQsDGjRXMo4lvh5hP0TKqF244gqhGcr/YSIykhUk/94=
|
||||
google.golang.org/api v0.45.0/go.mod h1:ISLIJCedJolbZvDfAk+Ctuq5hf+aJ33WgtUsfyFoLXA=
|
||||
google.golang.org/api v0.46.0 h1:jkDWHOBIoNSD0OQpq4rtBVu+Rh325MPjXG1rakAp8JU=
|
||||
google.golang.org/api v0.46.0/go.mod h1:ceL4oozhkAiTID8XMmJBsIxID/9wMXJVVFXPg4ylg3I=
|
||||
google.golang.org/api v0.47.0 h1:sQLWZQvP6jPGIP4JGPkJu4zHswrv81iobiyszr3b/0I=
|
||||
google.golang.org/api v0.47.0/go.mod h1:Wbvgpq1HddcWVtzsVLyfLp8lDg6AA241LmgIL59tHXo=
|
||||
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=
|
||||
|
|
@ -1490,8 +1499,8 @@ google.golang.org/genproto v0.0.0-20210319143718-93e7006c17a6/go.mod h1:FWY/as6D
|
|||
google.golang.org/genproto v0.0.0-20210402141018-6c239bbf2bb1/go.mod h1:9lPAdzaEmUacj36I+k7YKbEc5CXzPIeORRgDAUOu28A=
|
||||
google.golang.org/genproto v0.0.0-20210413151531-c14fb6ef47c3/go.mod h1:P3QM42oQyzQSnHPnZ/vqoCdDmzH28fzWByN9asMeM8A=
|
||||
google.golang.org/genproto v0.0.0-20210420162539-3c870d7478d2/go.mod h1:P3QM42oQyzQSnHPnZ/vqoCdDmzH28fzWByN9asMeM8A=
|
||||
google.golang.org/genproto v0.0.0-20210429181445-86c259c2b4ab h1:dkb90hr43A2Q5as5ZBphcOF2II0+EqfCBqGp7qFSpN4=
|
||||
google.golang.org/genproto v0.0.0-20210429181445-86c259c2b4ab/go.mod h1:P3QM42oQyzQSnHPnZ/vqoCdDmzH28fzWByN9asMeM8A=
|
||||
google.golang.org/genproto v0.0.0-20210513213006-bf773b8c8384 h1:z+j74wi4yV+P7EtK9gPLGukOk7mFOy9wMQaC0wNb7eY=
|
||||
google.golang.org/genproto v0.0.0-20210513213006-bf773b8c8384/go.mod h1:P3QM42oQyzQSnHPnZ/vqoCdDmzH28fzWByN9asMeM8A=
|
||||
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=
|
||||
|
|
@ -1515,8 +1524,9 @@ google.golang.org/grpc v1.34.0/go.mod h1:WotjhfgOW/POjDeRt8vscBtXq+2VjORFy659qA5
|
|||
google.golang.org/grpc v1.35.0/go.mod h1:qjiiYl8FncCW8feJPdyg3v6XW24KsRHe+dy9BAGRRjU=
|
||||
google.golang.org/grpc v1.36.0/go.mod h1:qjiiYl8FncCW8feJPdyg3v6XW24KsRHe+dy9BAGRRjU=
|
||||
google.golang.org/grpc v1.36.1/go.mod h1:qjiiYl8FncCW8feJPdyg3v6XW24KsRHe+dy9BAGRRjU=
|
||||
google.golang.org/grpc v1.37.0 h1:uSZWeQJX5j11bIQ4AJoj+McDBo29cY1MCoC1wO3ts+c=
|
||||
google.golang.org/grpc v1.37.0/go.mod h1:NREThFqKR1f3iQ6oBuvc5LadQuXVGo9rkm5ZGrQdJfM=
|
||||
google.golang.org/grpc v1.37.1 h1:ARnQJNWxGyYJpdf/JXscNlQr/uv607ZPU9Z7ogHi+iI=
|
||||
google.golang.org/grpc v1.37.1/go.mod h1:NREThFqKR1f3iQ6oBuvc5LadQuXVGo9rkm5ZGrQdJfM=
|
||||
google.golang.org/protobuf v0.0.0-20200109180630-ec00e32a8dfd/go.mod h1:DFci5gLYBciE7Vtevhsrf46CRTquxDuWsQurQQe4oz8=
|
||||
google.golang.org/protobuf v0.0.0-20200221191635-4d8936d0db64/go.mod h1:kwYJMbMJ01Woi6D6+Kah6886xMZcty6N08ah7+eCXa0=
|
||||
google.golang.org/protobuf v0.0.0-20200228230310-ab0ca4ff8a60/go.mod h1:cfTl7dwQJ+fmap5saPgwCLgHXTUD7jkjRqWcaiX5VyM=
|
||||
|
|
|
|||
|
|
@ -65,5 +65,10 @@ echo ""
|
|||
AWK_ISSUE_COMMENTS='NR>1{arr[$4] += $7}END{for (a in arr) printf "%d %s\n", arr[a], a}'
|
||||
"${DIR}/pullsheet" issue-comments --since "$recent_date" --repos kubernetes/minikube --token-path $DIR/gh_token.txt --logtostderr=false --stderrthreshold=2 | awk -F ',' "$AWK_ISSUE_COMMENTS" | sort -k1nr -k2d | awk -F ' ' "$AWK_FORMAT_ITEM" | head -n 5
|
||||
|
||||
if [[ "$recent" != *"beta"* ]]; then
|
||||
echo ""
|
||||
echo "Check out our [contributions leaderboard](https://minikube.sigs.k8s.io/docs/contrib/leaderboard/$recent/) for this release!"
|
||||
fi
|
||||
|
||||
echo ""
|
||||
echo "Don't forget to run `make update-leaderboard` & `make time-to-k8s-benchmark`!"
|
||||
|
|
|
|||
|
|
@ -20,6 +20,7 @@ import (
|
|||
"fmt"
|
||||
"strconv"
|
||||
|
||||
"github.com/spf13/viper"
|
||||
"k8s.io/minikube/pkg/minikube/assets"
|
||||
"k8s.io/minikube/pkg/minikube/config"
|
||||
"k8s.io/minikube/pkg/minikube/cruntime"
|
||||
|
|
@ -63,7 +64,8 @@ func IsVolumesnapshotsEnabled(cc *config.ClusterConfig, _, value string) error {
|
|||
isCsiDriverEnabled, _ := strconv.ParseBool(value)
|
||||
// assets.Addons[].IsEnabled() returns the current status of the addon or default value.
|
||||
// config.AddonList contains list of addons to be enabled.
|
||||
isVolumesnapshotsEnabled := assets.Addons[volumesnapshotsAddon].IsEnabled(cc) || contains(config.AddonList, volumesnapshotsAddon)
|
||||
addonList := viper.GetStringSlice(config.AddonListFlag)
|
||||
isVolumesnapshotsEnabled := assets.Addons[volumesnapshotsAddon].IsEnabled(cc) || contains(addonList, volumesnapshotsAddon)
|
||||
if isCsiDriverEnabled && !isVolumesnapshotsEnabled {
|
||||
// just print out a warning directly, we don't want to return any errors since
|
||||
// that would prevent the addon from being enabled (callbacks wouldn't be run)
|
||||
|
|
|
|||
|
|
@ -69,6 +69,12 @@ var ErrNetworkGatewayTaken = errors.New("network gateway is taken")
|
|||
// ErrNetworkInUse is when trying to delete a network which is attached to another container
|
||||
var ErrNetworkInUse = errors.New("unable to delete a network that is attached to a running container")
|
||||
|
||||
// ErrGetSSHPortContainerNotRunning happens when you try to inspect a container (in order to get SSH port) that "exists" but is no longer running
|
||||
var ErrGetSSHPortContainerNotRunning = errors.New("unable to inspect a not running container to get SSH port")
|
||||
|
||||
// ErrGetPortContainerNotRunning happens when you try to inspect a container (in order to get Port) that "exists" but is no longer running
|
||||
var ErrGetPortContainerNotRunning = errors.New("unable to inspect a not running container to get port")
|
||||
|
||||
// LogContainerDebug will print relevant docker/podman infos after a container fails
|
||||
func LogContainerDebug(ociBin string, name string) string {
|
||||
rr, err := containerInspect(ociBin, name)
|
||||
|
|
|
|||
|
|
@ -28,6 +28,7 @@ import (
|
|||
"github.com/pkg/errors"
|
||||
|
||||
"k8s.io/klog/v2"
|
||||
"k8s.io/minikube/pkg/minikube/constants"
|
||||
)
|
||||
|
||||
// RoutableHostIPFromInside returns the ip/dns of the host that container lives on
|
||||
|
|
@ -150,6 +151,14 @@ func ForwardedPort(ociBin string, ociID string, contPort int) (int, error) {
|
|||
} else {
|
||||
rr, err = runCmd(exec.Command(ociBin, "container", "inspect", "-f", fmt.Sprintf("'{{(index (index .NetworkSettings.Ports \"%d/tcp\") 0).HostPort}}'", contPort), ociID))
|
||||
if err != nil {
|
||||
|
||||
// Error: "Template parsing error: template: :1:3: executing "" at <index (index .NetworkSettings.Ports "22/tcp") 0>: error calling index: index of untyped nil"
|
||||
if strings.Contains(rr.Output(), `<index (index .NetworkSettings.Ports "22/tcp") 0>: error calling index: index of untyped nil`) && contPort == constants.SSHPort {
|
||||
return 0, ErrGetSSHPortContainerNotRunning
|
||||
}
|
||||
if strings.Contains(rr.Output(), "error calling index: index of untyped nil") {
|
||||
return 0, ErrGetPortContainerNotRunning
|
||||
}
|
||||
return 0, errors.Wrapf(err, "get port %d for %q", contPort, ociID)
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -32,7 +32,7 @@ import (
|
|||
)
|
||||
|
||||
// Docs generates docs for minikube command
|
||||
func Docs(root *cobra.Command, path string, testPath string) error {
|
||||
func Docs(root *cobra.Command, path string, testPath string, codePath string) error {
|
||||
cmds := root.Commands()
|
||||
for _, c := range cmds {
|
||||
if c.Hidden {
|
||||
|
|
@ -47,7 +47,12 @@ func Docs(root *cobra.Command, path string, testPath string) error {
|
|||
return errors.Wrapf(err, "saving doc for %s", c.Name())
|
||||
}
|
||||
}
|
||||
return TestDocs(testPath, "test/integration")
|
||||
err := TestDocs(testPath, "test/integration")
|
||||
if err != nil {
|
||||
return errors.Wrap(err, "failed to generate test docs")
|
||||
}
|
||||
|
||||
return ErrorCodes(codePath, []string{"pkg/minikube/reason/exitcodes.go", "pkg/minikube/reason/reason.go"})
|
||||
}
|
||||
|
||||
// DocForCommand returns the specific doc for that command
|
||||
|
|
|
|||
|
|
@ -0,0 +1,126 @@
|
|||
/*
|
||||
Copyright 2021 The Kubernetes Authors All rights reserved.
|
||||
|
||||
Licensed under the Apache License, Version 2.0 (the "License");
|
||||
you may not use this file except in compliance with the License.
|
||||
You may obtain a copy of the License at
|
||||
|
||||
http://www.apache.org/licenses/LICENSE-2.0
|
||||
|
||||
Unless required by applicable law or agreed to in writing, software
|
||||
distributed under the License is distributed on an "AS IS" BASIS,
|
||||
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
See the License for the specific language governing permissions and
|
||||
limitations under the License.
|
||||
*/
|
||||
|
||||
package generate
|
||||
|
||||
import (
|
||||
"bytes"
|
||||
"fmt"
|
||||
"go/ast"
|
||||
"go/parser"
|
||||
"go/token"
|
||||
"io/ioutil"
|
||||
"strings"
|
||||
"time"
|
||||
|
||||
"github.com/pkg/errors"
|
||||
"k8s.io/minikube/pkg/minikube/out"
|
||||
)
|
||||
|
||||
func ErrorCodes(docPath string, pathsToCheck []string) error {
|
||||
buf := bytes.NewBuffer([]byte{})
|
||||
date := time.Now().Format("2006-01-02")
|
||||
title := out.Fmt(title, out.V{"Command": "Error Codes", "Description": "minikube error codes and strings", "Date": date})
|
||||
_, err := buf.Write([]byte(title))
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
|
||||
fset := token.NewFileSet()
|
||||
for _, pathToCheck := range pathsToCheck {
|
||||
r, err := ioutil.ReadFile(pathToCheck)
|
||||
if err != nil {
|
||||
return errors.Wrap(err, fmt.Sprintf("error reading file %s", pathToCheck))
|
||||
}
|
||||
file, err := parser.ParseFile(fset, "", r, parser.ParseComments)
|
||||
if err != nil {
|
||||
return errors.Wrap(err, fmt.Sprintf("error parsing file %s", pathToCheck))
|
||||
}
|
||||
|
||||
if strings.Contains(pathToCheck, "exitcodes.go") {
|
||||
buf.WriteString("## Error Codes\n\n")
|
||||
currentGroup := ""
|
||||
currentError := ""
|
||||
ast.Inspect(file, func(x ast.Node) bool {
|
||||
if c, ok := x.(*ast.Comment); ok {
|
||||
// Start a new group of errors
|
||||
comment := c.Text
|
||||
if !strings.HasPrefix(comment, "// Error codes specific") {
|
||||
return true
|
||||
}
|
||||
currentGroup = strings.Replace(comment, "//", "###", 1)
|
||||
buf.WriteString("\n" + currentGroup + "\n")
|
||||
}
|
||||
if id, ok := x.(*ast.Ident); ok {
|
||||
// This is the name of the error, e.g. ExGuestError
|
||||
currentError = id.Name
|
||||
}
|
||||
if s, ok := x.(*ast.BasicLit); ok {
|
||||
// Filter out random strings that aren't error codes
|
||||
if currentError == "" {
|
||||
return true
|
||||
}
|
||||
|
||||
// No specific group means generic errors
|
||||
if currentGroup == "" {
|
||||
currentGroup = "### Generic Errors"
|
||||
buf.WriteString("\n" + currentGroup + "\n")
|
||||
}
|
||||
|
||||
// This is the numeric code of the error, e.g. 80 for ExGuest Error
|
||||
code := s.Value
|
||||
buf.WriteString(fmt.Sprintf("%s: %s \n", code, currentError))
|
||||
}
|
||||
return true
|
||||
})
|
||||
buf.WriteString("\n\n")
|
||||
}
|
||||
|
||||
if strings.Contains(pathToCheck, "reason.go") {
|
||||
buf.WriteString("## Error Strings\n\n")
|
||||
currentNode := ""
|
||||
currentID := ""
|
||||
currentComment := ""
|
||||
ast.Inspect(file, func(x ast.Node) bool {
|
||||
if id, ok := x.(*ast.Ident); ok {
|
||||
currentNode = id.Name
|
||||
if strings.HasPrefix(currentNode, "Ex") && currentNode != "ExitCode" {
|
||||
// We have all the info we're going to get on this error, print it out
|
||||
buf.WriteString(fmt.Sprintf("%s (Exit code %v) \n", currentID, currentNode))
|
||||
if currentComment != "" {
|
||||
buf.WriteString(currentComment + " \n")
|
||||
}
|
||||
buf.WriteString("\n")
|
||||
currentComment = ""
|
||||
currentID = ""
|
||||
currentNode = ""
|
||||
}
|
||||
}
|
||||
if s, ok := x.(*ast.BasicLit); ok {
|
||||
if currentNode == "ID" {
|
||||
currentID = s.Value
|
||||
}
|
||||
}
|
||||
if c, ok := x.(*ast.Comment); ok {
|
||||
currentComment = c.Text[3:]
|
||||
}
|
||||
return true
|
||||
})
|
||||
}
|
||||
}
|
||||
|
||||
return ioutil.WriteFile(docPath, buf.Bytes(), 0o644)
|
||||
}
|
||||
|
|
@ -56,6 +56,8 @@ const (
|
|||
AddonImages = "addon-images"
|
||||
// AddonRegistries stores custom addon images config
|
||||
AddonRegistries = "addon-registries"
|
||||
// AddonListFlag represents the key for addons parameter
|
||||
AddonListFlag = "addons"
|
||||
)
|
||||
|
||||
var (
|
||||
|
|
@ -67,8 +69,6 @@ var (
|
|||
DockerOpt []string
|
||||
// ExtraOptions contains extra options (if any)
|
||||
ExtraOptions ExtraOptionSlice
|
||||
// AddonList contains the list of addons
|
||||
AddonList []string
|
||||
)
|
||||
|
||||
// ErrNotExist is the error returned when a config does not exist
|
||||
|
|
|
|||
|
|
@ -32,6 +32,8 @@ func TestDownload(t *testing.T) {
|
|||
t.Run("PreloadDownloadPreventsMultipleDownload", testPreloadDownloadPreventsMultipleDownload)
|
||||
t.Run("ImageToCache", testImageToCache)
|
||||
t.Run("ImageToDaemon", testImageToDaemon)
|
||||
t.Run("PreloadNotExists", testPreloadNotExists)
|
||||
t.Run("PreloadChecksumMismatch", testPreloadChecksumMismatch)
|
||||
}
|
||||
|
||||
// Returns a mock function that sleeps before incrementing `downloadsCounter` and creates the requested file.
|
||||
|
|
@ -85,14 +87,14 @@ func testPreloadDownloadPreventsMultipleDownload(t *testing.T) {
|
|||
return nil, nil
|
||||
}
|
||||
checkPreloadExists = func(k8sVersion, containerRuntime string, forcePreload ...bool) bool { return true }
|
||||
getChecksum = func(k8sVersion, containerRuntime string) (string, error) { return "check", nil }
|
||||
ensureChecksumValid = func(k8sVersion, containerRuntime, path string) error { return nil }
|
||||
getChecksum = func(k8sVersion, containerRuntime string) ([]byte, error) { return []byte("check"), nil }
|
||||
ensureChecksumValid = func(k8sVersion, containerRuntime, path string, checksum []byte) error { return nil }
|
||||
|
||||
var group sync.WaitGroup
|
||||
group.Add(2)
|
||||
dlCall := func() {
|
||||
if err := Preload(constants.DefaultKubernetesVersion, constants.DefaultContainerRuntime); err != nil {
|
||||
t.Errorf("Failed to download preload: %+v", err)
|
||||
t.Logf("Failed to download preload: %+v (may be ok)", err)
|
||||
}
|
||||
group.Done()
|
||||
}
|
||||
|
|
@ -107,6 +109,45 @@ func testPreloadDownloadPreventsMultipleDownload(t *testing.T) {
|
|||
}
|
||||
}
|
||||
|
||||
func testPreloadNotExists(t *testing.T) {
|
||||
downloadNum := 0
|
||||
DownloadMock = mockSleepDownload(&downloadNum)
|
||||
|
||||
checkCache = func(file string) (fs.FileInfo, error) { return nil, fmt.Errorf("cache not found") }
|
||||
checkPreloadExists = func(k8sVersion, containerRuntime string, forcePreload ...bool) bool { return false }
|
||||
getChecksum = func(k8sVersion, containerRuntime string) ([]byte, error) { return []byte("check"), nil }
|
||||
ensureChecksumValid = func(k8sVersion, containerRuntime, path string, checksum []byte) error { return nil }
|
||||
|
||||
err := Preload(constants.DefaultKubernetesVersion, constants.DefaultContainerRuntime)
|
||||
if err != nil {
|
||||
t.Errorf("Expected no error when preload exists")
|
||||
}
|
||||
|
||||
if downloadNum != 0 {
|
||||
t.Errorf("Expected no download attempt but got %v!", downloadNum)
|
||||
}
|
||||
}
|
||||
|
||||
func testPreloadChecksumMismatch(t *testing.T) {
|
||||
downloadNum := 0
|
||||
DownloadMock = mockSleepDownload(&downloadNum)
|
||||
|
||||
checkCache = func(file string) (fs.FileInfo, error) { return nil, fmt.Errorf("cache not found") }
|
||||
checkPreloadExists = func(k8sVersion, containerRuntime string, forcePreload ...bool) bool { return true }
|
||||
getChecksum = func(k8sVersion, containerRuntime string) ([]byte, error) { return []byte("check"), nil }
|
||||
ensureChecksumValid = func(k8sVersion, containerRuntime, path string, checksum []byte) error {
|
||||
return fmt.Errorf("checksum mismatch")
|
||||
}
|
||||
|
||||
err := Preload(constants.DefaultKubernetesVersion, constants.DefaultContainerRuntime)
|
||||
expectedErrMsg := "checksum mismatch"
|
||||
if err == nil {
|
||||
t.Errorf("Expected error when checksum mismatches")
|
||||
} else if err.Error() != expectedErrMsg {
|
||||
t.Errorf("Expected error to be %s, got %s", expectedErrMsg, err.Error())
|
||||
}
|
||||
}
|
||||
|
||||
func testImageToCache(t *testing.T) {
|
||||
downloadNum := 0
|
||||
DownloadMock = mockSleepDownload(&downloadNum)
|
||||
|
|
|
|||
|
|
@ -163,15 +163,16 @@ func Preload(k8sVersion, containerRuntime string) error {
|
|||
return errors.Wrap(err, "tempfile")
|
||||
}
|
||||
targetPath = tmp.Name()
|
||||
} else if checksum != "" {
|
||||
url += "?checksum=" + checksum
|
||||
} else if checksum != nil {
|
||||
// add URL parameter for go-getter to automatically verify the checksum
|
||||
url += fmt.Sprintf("?checksum=md5:%s", hex.EncodeToString(checksum))
|
||||
}
|
||||
|
||||
if err := download(url, targetPath); err != nil {
|
||||
return errors.Wrapf(err, "download failed: %s", url)
|
||||
}
|
||||
|
||||
if err := ensureChecksumValid(k8sVersion, containerRuntime, targetPath); err != nil {
|
||||
if err := ensureChecksumValid(k8sVersion, containerRuntime, targetPath, checksum); err != nil {
|
||||
return err
|
||||
}
|
||||
|
||||
|
|
@ -199,23 +200,19 @@ func getStorageAttrs(name string) (*storage.ObjectAttrs, error) {
|
|||
return attrs, nil
|
||||
}
|
||||
|
||||
var getChecksum = func(k8sVersion, containerRuntime string) (string, error) {
|
||||
// getChecksum returns the MD5 checksum of the preload tarball
|
||||
var getChecksum = func(k8sVersion, containerRuntime string) ([]byte, error) {
|
||||
klog.Infof("getting checksum for %s ...", TarballName(k8sVersion, containerRuntime))
|
||||
attrs, err := getStorageAttrs(TarballName(k8sVersion, containerRuntime))
|
||||
if err != nil {
|
||||
return "", err
|
||||
return nil, err
|
||||
}
|
||||
md5 := hex.EncodeToString(attrs.MD5)
|
||||
return fmt.Sprintf("md5:%s", md5), nil
|
||||
return attrs.MD5, nil
|
||||
}
|
||||
|
||||
func saveChecksumFile(k8sVersion, containerRuntime string) error {
|
||||
// saveChecksumFile saves the checksum to a local file for later verification
|
||||
func saveChecksumFile(k8sVersion, containerRuntime string, checksum []byte) error {
|
||||
klog.Infof("saving checksum for %s ...", TarballName(k8sVersion, containerRuntime))
|
||||
attrs, err := getStorageAttrs(TarballName(k8sVersion, containerRuntime))
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
checksum := attrs.MD5
|
||||
return ioutil.WriteFile(PreloadChecksumPath(k8sVersion, containerRuntime), checksum, 0o644)
|
||||
}
|
||||
|
||||
|
|
@ -243,8 +240,8 @@ func verifyChecksum(k8sVersion, containerRuntime, path string) error {
|
|||
}
|
||||
|
||||
// ensureChecksumValid saves and verifies local binary checksum matches remote binary checksum
|
||||
var ensureChecksumValid = func(k8sVersion, containerRuntime, targetPath string) error {
|
||||
if err := saveChecksumFile(k8sVersion, containerRuntime); err != nil {
|
||||
var ensureChecksumValid = func(k8sVersion, containerRuntime, targetPath string, checksum []byte) error {
|
||||
if err := saveChecksumFile(k8sVersion, containerRuntime, checksum); err != nil {
|
||||
return errors.Wrap(err, "saving checksum file")
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -48,6 +48,7 @@ var exclude = []string{
|
|||
"- {{.profile}}",
|
||||
" - {{.profile}}",
|
||||
"test/integration",
|
||||
"pkg/minikube/reason/exitcodes.go",
|
||||
}
|
||||
|
||||
// ErrMapFile is a constant to refer to the err_map file, which contains the Advice strings.
|
||||
|
|
@ -298,7 +299,6 @@ func checkIdentForStringValue(i *ast.Ident) string {
|
|||
if rhs, ok := as.Rhs[0].(*ast.BasicLit); ok {
|
||||
s = rhs.Value
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
// This Identifier is part of the const or var declaration
|
||||
|
|
|
|||
|
|
@ -171,12 +171,13 @@ func Start(starter Starter, apiServer bool) (*kubeconfig.Settings, error) {
|
|||
}()
|
||||
|
||||
// enable addons, both old and new!
|
||||
addonList := viper.GetStringSlice(config.AddonListFlag)
|
||||
if starter.ExistingAddons != nil {
|
||||
if viper.GetBool("force") {
|
||||
addons.Force = true
|
||||
}
|
||||
wg.Add(1)
|
||||
go addons.Start(&wg, starter.Cfg, starter.ExistingAddons, config.AddonList)
|
||||
go addons.Start(&wg, starter.Cfg, starter.ExistingAddons, addonList)
|
||||
}
|
||||
|
||||
if apiServer {
|
||||
|
|
@ -480,7 +481,7 @@ func startMachine(cfg *config.ClusterConfig, node *config.Node, delOnFail bool)
|
|||
if err != nil {
|
||||
return runner, preExists, m, host, errors.Wrap(err, "Failed to get machine client")
|
||||
}
|
||||
host, preExists, err = startHost(m, cfg, node, delOnFail)
|
||||
host, preExists, err = startHostInternal(m, cfg, node, delOnFail)
|
||||
if err != nil {
|
||||
return runner, preExists, m, host, errors.Wrap(err, "Failed to start host")
|
||||
}
|
||||
|
|
@ -503,8 +504,8 @@ func startMachine(cfg *config.ClusterConfig, node *config.Node, delOnFail bool)
|
|||
return runner, preExists, m, host, err
|
||||
}
|
||||
|
||||
// startHost starts a new minikube host using a VM or None
|
||||
func startHost(api libmachine.API, cc *config.ClusterConfig, n *config.Node, delOnFail bool) (*host.Host, bool, error) {
|
||||
// startHostInternal starts a new minikube host using a VM or None
|
||||
func startHostInternal(api libmachine.API, cc *config.ClusterConfig, n *config.Node, delOnFail bool) (*host.Host, bool, error) {
|
||||
host, exists, err := machine.StartHost(api, cc, n)
|
||||
if err == nil {
|
||||
return host, exists, nil
|
||||
|
|
|
|||
|
|
@ -56,7 +56,6 @@ const (
|
|||
// navailableOff = 9 // (~EX_UNAVAILABLE)
|
||||
|
||||
// Error codes specific to the minikube program
|
||||
|
||||
ExProgramError = 10 // generic error
|
||||
ExProgramUsage = 14 // bad command-line options
|
||||
ExProgramConflict = 11 // can't do what you want because of existing data
|
||||
|
|
@ -65,7 +64,6 @@ const (
|
|||
ExProgramConfig = 18 // bad configuration specified
|
||||
|
||||
// Error codes specific to resource limits (exit code layout follows no rules)
|
||||
|
||||
ExResourceError = 20
|
||||
ExInsufficientMemory = 23
|
||||
ExInsufficientStorage = 26
|
||||
|
|
@ -73,7 +71,6 @@ const (
|
|||
ExInsufficientCores = 29
|
||||
|
||||
// Error codes specific to the host
|
||||
|
||||
ExHostError = 30
|
||||
ExHostConflict = 31
|
||||
ExHostTimeout = 32
|
||||
|
|
@ -84,7 +81,6 @@ const (
|
|||
ExHostConfig = 38
|
||||
|
||||
// Error codes specific to remote networking
|
||||
|
||||
ExInternetError = 40
|
||||
ExInternetConflict = 41
|
||||
ExInternetTimeout = 42
|
||||
|
|
@ -93,7 +89,6 @@ const (
|
|||
ExInternetUnavailable = 49
|
||||
|
||||
// Error codes specific to the libmachine driver
|
||||
|
||||
ExDriverError = 50
|
||||
ExDriverConflict = 51
|
||||
ExDriverTimeout = 52
|
||||
|
|
@ -105,7 +100,6 @@ const (
|
|||
ExDriverUnavailable = 59
|
||||
|
||||
// Error codes specific to the driver provider
|
||||
|
||||
ExProviderError = 60
|
||||
ExProviderConflict = 61
|
||||
ExProviderTimeout = 62
|
||||
|
|
@ -120,7 +114,6 @@ const (
|
|||
ExProviderUnavailable = 69 // In common use
|
||||
|
||||
// Error codes specific to local networking
|
||||
|
||||
ExLocalNetworkError = 70
|
||||
ExLocalNetworkConflict = 71
|
||||
ExLocalNetworkTimeout = 72
|
||||
|
|
@ -130,7 +123,6 @@ const (
|
|||
ExLocalNetworkUnavailable = 79
|
||||
|
||||
// Error codes specific to the guest host
|
||||
|
||||
ExGuestError = 80
|
||||
ExGuestConflict = 81
|
||||
ExGuestTimeout = 82
|
||||
|
|
@ -142,14 +134,12 @@ const (
|
|||
ExGuestUnavailable = 89
|
||||
|
||||
// Error codes specific to the container runtime
|
||||
|
||||
ExRuntimeError = 90
|
||||
ExRuntimeNotRunning = 93
|
||||
ExRuntimeNotFound = 95
|
||||
ExRuntimeUnavailable = 99
|
||||
|
||||
// Error codes specific to the Kubernetes control plane
|
||||
|
||||
ExControlPlaneError = 100
|
||||
ExControlPlaneConflict = 101
|
||||
ExControlPlaneTimeout = 102
|
||||
|
|
@ -160,7 +150,6 @@ const (
|
|||
ExControlPlaneUnavailable = 109
|
||||
|
||||
// Error codes specific to a Kubernetes service
|
||||
|
||||
ExSvcError = 110
|
||||
ExSvcConflict = 111
|
||||
ExSvcTimeout = 112
|
||||
|
|
|
|||
|
|
@ -56,7 +56,9 @@ func (k *Kind) IssueURLs() []string {
|
|||
|
||||
// Sections are ordered roughly by stack dependencies
|
||||
var (
|
||||
Usage = Kind{ID: "MK_USAGE", ExitCode: ExProgramUsage}
|
||||
// minikube has been passed an incorrect parameter
|
||||
Usage = Kind{ID: "MK_USAGE", ExitCode: ExProgramUsage}
|
||||
// minikube has no current cluster running
|
||||
UsageNoProfileRunning = Kind{ID: "MK_USAGE_NO_PROFILE", ExitCode: ExProgramUsage,
|
||||
Advice: `You can create one using 'minikube start'.
|
||||
`,
|
||||
|
|
@ -229,32 +231,33 @@ var (
|
|||
DrvNeedsRoot = Kind{ID: "DRV_NEEDS_ROOT", ExitCode: ExDriverPermission}
|
||||
DrvNeedsAdministrator = Kind{ID: "DRV_NEEDS_ADMINISTRATOR", ExitCode: ExDriverPermission}
|
||||
|
||||
GuestCacheLoad = Kind{ID: "GUEST_CACHE_LOAD", ExitCode: ExGuestError}
|
||||
GuestCert = Kind{ID: "GUEST_CERT", ExitCode: ExGuestError}
|
||||
GuestCpConfig = Kind{ID: "GUEST_CP_CONFIG", ExitCode: ExGuestConfig}
|
||||
GuestDeletion = Kind{ID: "GUEST_DELETION", ExitCode: ExGuestError}
|
||||
GuestImageList = Kind{ID: "GUEST_IMAGE_LIST", ExitCode: ExGuestError}
|
||||
GuestImageLoad = Kind{ID: "GUEST_IMAGE_LOAD", ExitCode: ExGuestError}
|
||||
GuestImageRemove = Kind{ID: "GUEST_IMAGE_REMOVE", ExitCode: ExGuestError}
|
||||
GuestImageBuild = Kind{ID: "GUEST_IMAGE_BUILD", ExitCode: ExGuestError}
|
||||
GuestLoadHost = Kind{ID: "GUEST_LOAD_HOST", ExitCode: ExGuestError}
|
||||
GuestMount = Kind{ID: "GUEST_MOUNT", ExitCode: ExGuestError}
|
||||
GuestMountConflict = Kind{ID: "GUEST_MOUNT_CONFLICT", ExitCode: ExGuestConflict}
|
||||
GuestNodeAdd = Kind{ID: "GUEST_NODE_ADD", ExitCode: ExGuestError}
|
||||
GuestNodeDelete = Kind{ID: "GUEST_NODE_DELETE", ExitCode: ExGuestError}
|
||||
GuestNodeProvision = Kind{ID: "GUEST_NODE_PROVISION", ExitCode: ExGuestError}
|
||||
GuestNodeRetrieve = Kind{ID: "GUEST_NODE_RETRIEVE", ExitCode: ExGuestNotFound}
|
||||
GuestNodeStart = Kind{ID: "GUEST_NODE_START", ExitCode: ExGuestError}
|
||||
GuestPause = Kind{ID: "GUEST_PAUSE", ExitCode: ExGuestError}
|
||||
GuestProfileDeletion = Kind{ID: "GUEST_PROFILE_DELETION", ExitCode: ExGuestError}
|
||||
GuestProvision = Kind{ID: "GUEST_PROVISION", ExitCode: ExGuestError}
|
||||
GuestStart = Kind{ID: "GUEST_START", ExitCode: ExGuestError}
|
||||
GuestStatus = Kind{ID: "GUEST_STATUS", ExitCode: ExGuestError}
|
||||
GuestStopTimeout = Kind{ID: "GUEST_STOP_TIMEOUT", ExitCode: ExGuestTimeout}
|
||||
GuestUnpause = Kind{ID: "GUEST_UNPAUSE", ExitCode: ExGuestError}
|
||||
GuestCheckPaused = Kind{ID: "GUEST_CHECK_PAUSED", ExitCode: ExGuestError}
|
||||
GuestDrvMismatch = Kind{ID: "GUEST_DRIVER_MISMATCH", ExitCode: ExGuestConflict, Style: style.Conflict}
|
||||
GuestMissingConntrack = Kind{ID: "GUEST_MISSING_CONNTRACK", ExitCode: ExGuestUnsupported}
|
||||
GuestCacheLoad = Kind{ID: "GUEST_CACHE_LOAD", ExitCode: ExGuestError}
|
||||
GuestCert = Kind{ID: "GUEST_CERT", ExitCode: ExGuestError}
|
||||
GuestCpConfig = Kind{ID: "GUEST_CP_CONFIG", ExitCode: ExGuestConfig}
|
||||
GuestDeletion = Kind{ID: "GUEST_DELETION", ExitCode: ExGuestError}
|
||||
GuestImageList = Kind{ID: "GUEST_IMAGE_LIST", ExitCode: ExGuestError}
|
||||
GuestImageLoad = Kind{ID: "GUEST_IMAGE_LOAD", ExitCode: ExGuestError}
|
||||
GuestImageRemove = Kind{ID: "GUEST_IMAGE_REMOVE", ExitCode: ExGuestError}
|
||||
GuestImageBuild = Kind{ID: "GUEST_IMAGE_BUILD", ExitCode: ExGuestError}
|
||||
GuestLoadHost = Kind{ID: "GUEST_LOAD_HOST", ExitCode: ExGuestError}
|
||||
GuestMount = Kind{ID: "GUEST_MOUNT", ExitCode: ExGuestError}
|
||||
GuestMountConflict = Kind{ID: "GUEST_MOUNT_CONFLICT", ExitCode: ExGuestConflict}
|
||||
GuestNodeAdd = Kind{ID: "GUEST_NODE_ADD", ExitCode: ExGuestError}
|
||||
GuestNodeDelete = Kind{ID: "GUEST_NODE_DELETE", ExitCode: ExGuestError}
|
||||
GuestNodeProvision = Kind{ID: "GUEST_NODE_PROVISION", ExitCode: ExGuestError}
|
||||
GuestNodeRetrieve = Kind{ID: "GUEST_NODE_RETRIEVE", ExitCode: ExGuestNotFound}
|
||||
GuestNodeStart = Kind{ID: "GUEST_NODE_START", ExitCode: ExGuestError}
|
||||
GuestPause = Kind{ID: "GUEST_PAUSE", ExitCode: ExGuestError}
|
||||
GuestProfileDeletion = Kind{ID: "GUEST_PROFILE_DELETION", ExitCode: ExGuestError}
|
||||
GuestProvision = Kind{ID: "GUEST_PROVISION", ExitCode: ExGuestError}
|
||||
GuestProvisionContainerExited = Kind{ID: "GUEST_PROVISION_CONTAINER_EXITED", ExitCode: ExGuestError}
|
||||
GuestStart = Kind{ID: "GUEST_START", ExitCode: ExGuestError}
|
||||
GuestStatus = Kind{ID: "GUEST_STATUS", ExitCode: ExGuestError}
|
||||
GuestStopTimeout = Kind{ID: "GUEST_STOP_TIMEOUT", ExitCode: ExGuestTimeout}
|
||||
GuestUnpause = Kind{ID: "GUEST_UNPAUSE", ExitCode: ExGuestError}
|
||||
GuestCheckPaused = Kind{ID: "GUEST_CHECK_PAUSED", ExitCode: ExGuestError}
|
||||
GuestDrvMismatch = Kind{ID: "GUEST_DRIVER_MISMATCH", ExitCode: ExGuestConflict, Style: style.Conflict}
|
||||
GuestMissingConntrack = Kind{ID: "GUEST_MISSING_CONNTRACK", ExitCode: ExGuestUnsupported}
|
||||
|
||||
IfHostIP = Kind{ID: "IF_HOST_IP", ExitCode: ExLocalNetworkError}
|
||||
IfMountIP = Kind{ID: "IF_MOUNT_IP", ExitCode: ExLocalNetworkError}
|
||||
|
|
|
|||
|
|
@ -0,0 +1,409 @@
|
|||
---
|
||||
title: "Error Codes"
|
||||
description: >
|
||||
minikube error codes and strings
|
||||
---
|
||||
|
||||
|
||||
## Error Codes
|
||||
|
||||
|
||||
### Generic Errors
|
||||
1: ExFailure
|
||||
2: ExInterrupted
|
||||
|
||||
### Error codes specific to the minikube program
|
||||
10: ExProgramError
|
||||
14: ExProgramUsage
|
||||
11: ExProgramConflict
|
||||
15: ExProgramNotFound
|
||||
16: ExProgramUnsupported
|
||||
18: ExProgramConfig
|
||||
|
||||
### Error codes specific to resource limits (exit code layout follows no rules)
|
||||
20: ExResourceError
|
||||
23: ExInsufficientMemory
|
||||
26: ExInsufficientStorage
|
||||
27: ExInsufficientPermission
|
||||
29: ExInsufficientCores
|
||||
|
||||
### Error codes specific to the host
|
||||
30: ExHostError
|
||||
31: ExHostConflict
|
||||
32: ExHostTimeout
|
||||
34: ExHostUsage
|
||||
35: ExHostNotFound
|
||||
38: ExHostUnsupported
|
||||
37: ExHostPermission
|
||||
38: ExHostConfig
|
||||
|
||||
### Error codes specific to remote networking
|
||||
40: ExInternetError
|
||||
41: ExInternetConflict
|
||||
42: ExInternetTimeout
|
||||
45: ExInternetNotFound
|
||||
48: ExInternetConfig
|
||||
49: ExInternetUnavailable
|
||||
|
||||
### Error codes specific to the libmachine driver
|
||||
50: ExDriverError
|
||||
51: ExDriverConflict
|
||||
52: ExDriverTimeout
|
||||
54: ExDriverUsage
|
||||
55: ExDriverNotFound
|
||||
56: ExDriverUnsupported
|
||||
57: ExDriverPermission
|
||||
58: ExDriverConfig
|
||||
59: ExDriverUnavailable
|
||||
|
||||
### Error codes specific to the driver provider
|
||||
60: ExProviderError
|
||||
61: ExProviderConflict
|
||||
62: ExProviderTimeout
|
||||
63: ExProviderNotRunning
|
||||
65: ExProviderNotFound
|
||||
66: ExProviderUnsupported
|
||||
67: ExProviderPermission
|
||||
68: ExProviderConfig
|
||||
69: ExProviderUnavailable
|
||||
|
||||
### Error codes specific to local networking
|
||||
70: ExLocalNetworkError
|
||||
71: ExLocalNetworkConflict
|
||||
72: ExLocalNetworkTimeout
|
||||
75: ExLocalNetworkNotFound
|
||||
77: ExLocalNetworkPermission
|
||||
78: ExLocalNetworkConfig
|
||||
79: ExLocalNetworkUnavailable
|
||||
|
||||
### Error codes specific to the guest host
|
||||
80: ExGuestError
|
||||
81: ExGuestConflict
|
||||
82: ExGuestTimeout
|
||||
83: ExGuestNotRunning
|
||||
85: ExGuestNotFound
|
||||
86: ExGuestUnsupported
|
||||
87: ExGuestPermission
|
||||
88: ExGuestConfig
|
||||
89: ExGuestUnavailable
|
||||
|
||||
### Error codes specific to the container runtime
|
||||
90: ExRuntimeError
|
||||
93: ExRuntimeNotRunning
|
||||
95: ExRuntimeNotFound
|
||||
99: ExRuntimeUnavailable
|
||||
|
||||
### Error codes specific to the Kubernetes control plane
|
||||
100: ExControlPlaneError
|
||||
101: ExControlPlaneConflict
|
||||
102: ExControlPlaneTimeout
|
||||
103: ExControlPlaneNotRunning
|
||||
105: ExControlPlaneNotFound
|
||||
106: ExControlPlaneUnsupported
|
||||
108: ExControlPlaneConfig
|
||||
109: ExControlPlaneUnavailable
|
||||
|
||||
### Error codes specific to a Kubernetes service
|
||||
110: ExSvcError
|
||||
111: ExSvcConflict
|
||||
112: ExSvcTimeout
|
||||
113: ExSvcNotRunning
|
||||
115: ExSvcNotFound
|
||||
116: ExSvcUnsupported
|
||||
117: ExSvcPermission
|
||||
118: ExSvcConfig
|
||||
119: ExSvcUnavailable
|
||||
|
||||
|
||||
## Error Strings
|
||||
|
||||
"MK_USAGE" (Exit code ExProgramUsage)
|
||||
minikube has been passed an incorrect parameter
|
||||
|
||||
"MK_USAGE_NO_PROFILE" (Exit code ExProgramUsage)
|
||||
minikube has no current cluster running
|
||||
|
||||
"MK_INTERRUPTED" (Exit code ExProgramConflict)
|
||||
|
||||
"MK_WRONG_BINARY_WSL" (Exit code ExProgramUnsupported)
|
||||
|
||||
"MK_WRONG_BINARY_M1" (Exit code ExProgramUnsupported)
|
||||
|
||||
"MK_NEW_APICLIENT" (Exit code ExProgramError)
|
||||
|
||||
"MK_ADDON_ENABLE" (Exit code ExProgramError)
|
||||
|
||||
"MK_ADD_CONFIG" (Exit code ExProgramError)
|
||||
|
||||
"MK_BIND_FLAGS" (Exit code ExProgramError)
|
||||
|
||||
"MK_BOOTSTRAPPER" (Exit code ExProgramError)
|
||||
|
||||
"MK_CACHE_LIST" (Exit code ExProgramError)
|
||||
|
||||
"MK_CACHE_LOAD" (Exit code ExProgramError)
|
||||
|
||||
"MK_COMMAND_RUNNER" (Exit code ExProgramError)
|
||||
|
||||
"MK_COMPLETION" (Exit code ExProgramError)
|
||||
|
||||
"MK_CONFIG_SET" (Exit code ExProgramError)
|
||||
|
||||
"MK_CONFIG_UNSET" (Exit code ExProgramError)
|
||||
|
||||
"MK_CONFIG_VIEW" (Exit code ExProgramError)
|
||||
|
||||
"MK_DEL_CONFIG" (Exit code ExProgramError)
|
||||
|
||||
"MK_DISABLE" (Exit code ExProgramError)
|
||||
|
||||
"MK_DOCKER_SCRIPT" (Exit code ExProgramError)
|
||||
|
||||
"MK_ENABLE" (Exit code ExProgramError)
|
||||
|
||||
"MK_FLAGS_BIND" (Exit code ExProgramError)
|
||||
|
||||
"MK_FLAGS_SET" (Exit code ExProgramError)
|
||||
|
||||
"MK_FORMAT_USAGE" (Exit code ExProgramError)
|
||||
|
||||
"MK_GENERATE_DOCS" (Exit code ExProgramError)
|
||||
|
||||
"MK_JSON_MARSHAL" (Exit code ExProgramError)
|
||||
|
||||
"MK_K8S_CLIENT" (Exit code ExControlPlaneUnavailable)
|
||||
|
||||
"MK_LIST_CONFIG" (Exit code ExProgramError)
|
||||
|
||||
"MK_LOGTOSTDERR_FLAG" (Exit code ExProgramError)
|
||||
|
||||
"MK_LOG_FOLLOW" (Exit code ExProgramError)
|
||||
|
||||
"MK_NEW_RUNTIME" (Exit code ExProgramError)
|
||||
|
||||
"MK_OUTPUT_USAGE" (Exit code ExProgramError)
|
||||
|
||||
"MK_RUNTIME" (Exit code ExProgramError)
|
||||
|
||||
"MK_RESERVED_PROFILE" (Exit code ExProgramConflict)
|
||||
|
||||
"MK_ENV_SCRIPT" (Exit code ExProgramError)
|
||||
|
||||
"MK_SHELL_DETECT" (Exit code ExProgramError)
|
||||
|
||||
"MK_STATUS_JSON" (Exit code ExProgramError)
|
||||
|
||||
"MK_STATUS_TEXT" (Exit code ExProgramError)
|
||||
|
||||
"MK_UNSET_SCRIPT" (Exit code ExProgramError)
|
||||
|
||||
"MK_VIEW_EXEC" (Exit code ExProgramError)
|
||||
|
||||
"MK_VIEW_TMPL" (Exit code ExProgramError)
|
||||
|
||||
"MK_YAML_MARSHAL" (Exit code ExProgramError)
|
||||
|
||||
"MK_CREDENTIALS_NOT_FOUND" (Exit code ExProgramNotFound)
|
||||
|
||||
"MK_CREDENTIALS_NOT_NEEDED" (Exit code ExProgramNotFound)
|
||||
|
||||
"MK_SEMVER_PARSE" (Exit code ExProgramError)
|
||||
|
||||
"MK_DAEMONIZE" (Exit code ExProgramError)
|
||||
|
||||
"RSRC_INSUFFICIENT_CORES" (Exit code ExInsufficientCores)
|
||||
|
||||
"RSRC_DOCKER_CORES" (Exit code ExInsufficientCores)
|
||||
|
||||
"RSRC_DOCKER_CORES" (Exit code ExInsufficientCores)
|
||||
|
||||
"RSRC_INSUFFICIENT_REQ_MEMORY" (Exit code ExInsufficientMemory)
|
||||
|
||||
"RSRC_INSUFFICIENT_SYS_MEMORY" (Exit code ExInsufficientMemory)
|
||||
|
||||
"RSRC_INSUFFICIENT_CONTAINER_MEMORY" (Exit code ExInsufficientMemory)
|
||||
|
||||
"RSRC_DOCKER_MEMORY" (Exit code ExInsufficientMemory)
|
||||
|
||||
"RSRC_DOCKER_MEMORY" (Exit code ExInsufficientMemory)
|
||||
|
||||
"RSRC_DOCKER_STORAGE" (Exit code ExInsufficientStorage)
|
||||
|
||||
"RSRC_PODMAN_STORAGE" (Exit code ExInsufficientStorage)
|
||||
|
||||
"RSRC_INSUFFICIENT_STORAGE" (Exit code ExInsufficientStorage)
|
||||
|
||||
"HOST_HOME_MKDIR" (Exit code ExHostPermission)
|
||||
|
||||
"HOST_HOME_CHOWN" (Exit code ExHostPermission)
|
||||
|
||||
"HOST_BROWSER" (Exit code ExHostError)
|
||||
|
||||
"HOST_CONFIG_LOAD" (Exit code ExHostConfig)
|
||||
|
||||
"HOST_HOME_PERMISSION" (Exit code ExHostPermission)
|
||||
|
||||
"HOST_CURRENT_USER" (Exit code ExHostConfig)
|
||||
|
||||
"HOST_DEL_CACHE" (Exit code ExHostError)
|
||||
|
||||
"HOST_KILL_MOUNT_PROC" (Exit code ExHostError)
|
||||
|
||||
"HOST_KUBECNOFIG_UNSET" (Exit code ExHostConfig)
|
||||
|
||||
"HOST_KUBECONFIG_UPDATE" (Exit code ExHostConfig)
|
||||
|
||||
"HOST_KUBECONFIG_DELETE_CTX" (Exit code ExHostConfig)
|
||||
|
||||
"HOST_KUBECTL_PROXY" (Exit code ExHostError)
|
||||
|
||||
"HOST_MOUNT_PID" (Exit code ExHostError)
|
||||
|
||||
"HOST_PATH_MISSING" (Exit code ExHostNotFound)
|
||||
|
||||
"HOST_PATH_STAT" (Exit code ExHostError)
|
||||
|
||||
"HOST_PURGE" (Exit code ExHostError)
|
||||
|
||||
"HOST_SAVE_PROFILE" (Exit code ExHostConfig)
|
||||
|
||||
"PROVIDER_NOT_FOUND" (Exit code ExProviderNotFound)
|
||||
|
||||
"PROVIDER_UNAVAILABLE" (Exit code ExProviderNotFound)
|
||||
|
||||
"DRV_CP_ENDPOINT" (Exit code ExDriverError)
|
||||
|
||||
"DRV_PORT_FORWARD" (Exit code ExDriverError)
|
||||
|
||||
"DRV_UNSUPPORTED_MULTINODE" (Exit code ExDriverConflict)
|
||||
|
||||
"DRV_UNSUPPORTED_OS" (Exit code ExDriverUnsupported)
|
||||
|
||||
"DRV_UNSUPPORTED_PROFILE" (Exit code ExDriverUnsupported)
|
||||
|
||||
"DRV_NOT_FOUND" (Exit code ExDriverNotFound)
|
||||
|
||||
"DRV_NOT_DETECTED" (Exit code ExDriverNotFound)
|
||||
|
||||
"DRV_AS_ROOT" (Exit code ExDriverPermission)
|
||||
|
||||
"DRV_NEEDS_ROOT" (Exit code ExDriverPermission)
|
||||
|
||||
"DRV_NEEDS_ADMINISTRATOR" (Exit code ExDriverPermission)
|
||||
|
||||
"GUEST_CACHE_LOAD" (Exit code ExGuestError)
|
||||
|
||||
"GUEST_CERT" (Exit code ExGuestError)
|
||||
|
||||
"GUEST_CP_CONFIG" (Exit code ExGuestConfig)
|
||||
|
||||
"GUEST_DELETION" (Exit code ExGuestError)
|
||||
|
||||
"GUEST_IMAGE_LIST" (Exit code ExGuestError)
|
||||
|
||||
"GUEST_IMAGE_LOAD" (Exit code ExGuestError)
|
||||
|
||||
"GUEST_IMAGE_REMOVE" (Exit code ExGuestError)
|
||||
|
||||
"GUEST_IMAGE_BUILD" (Exit code ExGuestError)
|
||||
|
||||
"GUEST_LOAD_HOST" (Exit code ExGuestError)
|
||||
|
||||
"GUEST_MOUNT" (Exit code ExGuestError)
|
||||
|
||||
"GUEST_MOUNT_CONFLICT" (Exit code ExGuestConflict)
|
||||
|
||||
"GUEST_NODE_ADD" (Exit code ExGuestError)
|
||||
|
||||
"GUEST_NODE_DELETE" (Exit code ExGuestError)
|
||||
|
||||
"GUEST_NODE_PROVISION" (Exit code ExGuestError)
|
||||
|
||||
"GUEST_NODE_RETRIEVE" (Exit code ExGuestNotFound)
|
||||
|
||||
"GUEST_NODE_START" (Exit code ExGuestError)
|
||||
|
||||
"GUEST_PAUSE" (Exit code ExGuestError)
|
||||
|
||||
"GUEST_PROFILE_DELETION" (Exit code ExGuestError)
|
||||
|
||||
"GUEST_PROVISION" (Exit code ExGuestError)
|
||||
|
||||
"GUEST_START" (Exit code ExGuestError)
|
||||
|
||||
"GUEST_STATUS" (Exit code ExGuestError)
|
||||
|
||||
"GUEST_STOP_TIMEOUT" (Exit code ExGuestTimeout)
|
||||
|
||||
"GUEST_UNPAUSE" (Exit code ExGuestError)
|
||||
|
||||
"GUEST_CHECK_PAUSED" (Exit code ExGuestError)
|
||||
|
||||
"GUEST_DRIVER_MISMATCH" (Exit code ExGuestConflict)
|
||||
|
||||
"GUEST_MISSING_CONNTRACK" (Exit code ExGuestUnsupported)
|
||||
|
||||
"IF_HOST_IP" (Exit code ExLocalNetworkError)
|
||||
|
||||
"IF_MOUNT_IP" (Exit code ExLocalNetworkError)
|
||||
|
||||
"IF_MOUNT_PORT" (Exit code ExLocalNetworkError)
|
||||
|
||||
"IF_SSH_CLIENT" (Exit code ExLocalNetworkError)
|
||||
|
||||
"INET_CACHE_BINARIES" (Exit code ExInternetError)
|
||||
|
||||
"INET_CACHE_KUBECTL" (Exit code ExInternetError)
|
||||
|
||||
"INET_CACHE_TAR" (Exit code ExInternetError)
|
||||
|
||||
"INET_GET_VERSIONS" (Exit code ExInternetError)
|
||||
|
||||
"INET_REPO" (Exit code ExInternetError)
|
||||
|
||||
"INET_REPOS_UNAVAILABLE" (Exit code ExInternetError)
|
||||
|
||||
"INET_VERSION_UNAVAILABLE" (Exit code ExInternetUnavailable)
|
||||
|
||||
"INET_VERSION_EMPTY" (Exit code ExInternetConfig)
|
||||
|
||||
"RUNTIME_ENABLE" (Exit code ExRuntimeError)
|
||||
|
||||
"RUNTIME_CACHE" (Exit code ExRuntimeError)
|
||||
|
||||
"RUNTIME_RESTART" (Exit code ExRuntimeError)
|
||||
|
||||
"SVC_CHECK_TIMEOUT" (Exit code ExSvcTimeout)
|
||||
|
||||
"SVC_TIMEOUT" (Exit code ExSvcTimeout)
|
||||
|
||||
"SVC_LIST" (Exit code ExSvcError)
|
||||
|
||||
"SVC_TUNNEL_START" (Exit code ExSvcError)
|
||||
|
||||
"SVC_TUNNEL_STOP" (Exit code ExSvcError)
|
||||
|
||||
"SVC_URL_TIMEOUT" (Exit code ExSvcTimeout)
|
||||
|
||||
"SVC_NOT_FOUND" (Exit code ExSvcNotFound)
|
||||
|
||||
"ENV_DRIVER_CONFLICT" (Exit code ExDriverConflict)
|
||||
|
||||
"ENV_MULTINODE_CONFLICT" (Exit code ExGuestConflict)
|
||||
|
||||
"ENV_DOCKER_UNAVAILABLE" (Exit code ExRuntimeUnavailable)
|
||||
|
||||
"ENV_PODMAN_UNAVAILABLE" (Exit code ExRuntimeUnavailable)
|
||||
|
||||
"SVC_ADDON_UNSUPPORTED" (Exit code ExSvcUnsupported)
|
||||
|
||||
"SVC_ADDON_NOT_ENABLED" (Exit code ExProgramConflict)
|
||||
|
||||
"K8S_INSTALL_FAILED" (Exit code ExControlPlaneError)
|
||||
|
||||
"K8S_INSTALL_FAILED_CONTAINER_RUNTIME_NOT_RUNNING" (Exit code ExRuntimeNotRunning)
|
||||
|
||||
"K8S_OLD_UNSUPPORTED" (Exit code ExControlPlaneUnsupported)
|
||||
|
||||
"K8S_DOWNGRADE_UNSUPPORTED" (Exit code ExControlPlaneUnsupported)
|
||||
|
||||
|
|
@ -99,6 +99,12 @@ Presentations about the minikube project, mostly from the Kubernetes blog and th
|
|||
|
||||
* _No results found for minikube_
|
||||
|
||||
### KubeCon EU 2021 (Online, Europe) - Virtual
|
||||
|
||||
* <http://www.youtube.com/watch?v=nqKYgeUtk8s> (32:48)
|
||||
* "Minikube and Three Different Local Kubernetes Learning Environments"
|
||||
* Anders Björklund & Predrag Rogic
|
||||
|
||||
## Other conferences
|
||||
|
||||
### Helm Summit EU 2019 (Amsterdam, The Netherlands)
|
||||
|
|
|
|||
|
|
@ -178,6 +178,7 @@
|
|||
"Environment variables to pass to the Docker daemon. (format: key=value)": "Umgebungsvariablen, die an den Docker-Daemon übergeben werden. (Format: Schlüssel = Wert)",
|
||||
"Environment variables to pass to the build. (format: key=value)": "",
|
||||
"Error checking driver version: {{.error}}": "Fehler beim Prüfen der Treiberversion: {{.error}}",
|
||||
"Error code docs have been saved at - {{.path}}": "",
|
||||
"Error creating minikube directory": "",
|
||||
"Error creating view template": "",
|
||||
"Error detecting shell": "",
|
||||
|
|
@ -642,6 +643,7 @@
|
|||
"The number of nodes to spin up. Defaults to 1.": "",
|
||||
"The output format. One of 'json', 'table'": "",
|
||||
"The path on the file system where the docs in markdown need to be saved": "",
|
||||
"The path on the file system where the error code docs in markdown need to be saved": "",
|
||||
"The path on the file system where the testing docs in markdown need to be saved": "",
|
||||
"The podman service within '{{.cluster}}' is not active": "",
|
||||
"The podman-env command is incompatible with multi-node clusters. Use the 'registry' add-on: https://minikube.sigs.k8s.io/docs/handbook/registry/": "",
|
||||
|
|
|
|||
|
|
@ -183,6 +183,7 @@
|
|||
"Environment variables to pass to the Docker daemon. (format: key=value)": "Variables de entorno que se transferirán al daemon de Docker. Formato: clave=valor",
|
||||
"Environment variables to pass to the build. (format: key=value)": "",
|
||||
"Error checking driver version: {{.error}}": "No se ha podido comprobar la versión del controlador: {{.error}}",
|
||||
"Error code docs have been saved at - {{.path}}": "",
|
||||
"Error creating minikube directory": "Error al crear el directorio minikube",
|
||||
"Error creating view template": "Error al crear la plantilla de vista",
|
||||
"Error detecting shell": "Error al detectar la shell",
|
||||
|
|
@ -647,6 +648,7 @@
|
|||
"The number of nodes to spin up. Defaults to 1.": "",
|
||||
"The output format. One of 'json', 'table'": "",
|
||||
"The path on the file system where the docs in markdown need to be saved": "",
|
||||
"The path on the file system where the error code docs in markdown need to be saved": "",
|
||||
"The path on the file system where the testing docs in markdown need to be saved": "",
|
||||
"The podman service within '{{.cluster}}' is not active": "",
|
||||
"The podman-env command is incompatible with multi-node clusters. Use the 'registry' add-on: https://minikube.sigs.k8s.io/docs/handbook/registry/": "",
|
||||
|
|
|
|||
|
|
@ -180,6 +180,7 @@
|
|||
"Environment variables to pass to the Docker daemon. (format: key=value)": "Variables d'environment à transmettre au daemon Docker (format : clé = valeur).",
|
||||
"Environment variables to pass to the build. (format: key=value)": "",
|
||||
"Error checking driver version: {{.error}}": "Erreur lors de la vérification de la version du driver : {{.error}}",
|
||||
"Error code docs have been saved at - {{.path}}": "",
|
||||
"Error creating minikube directory": "",
|
||||
"Error creating view template": "",
|
||||
"Error detecting shell": "",
|
||||
|
|
@ -645,6 +646,7 @@
|
|||
"The number of nodes to spin up. Defaults to 1.": "",
|
||||
"The output format. One of 'json', 'table'": "",
|
||||
"The path on the file system where the docs in markdown need to be saved": "",
|
||||
"The path on the file system where the error code docs in markdown need to be saved": "",
|
||||
"The path on the file system where the testing docs in markdown need to be saved": "",
|
||||
"The podman service within '{{.cluster}}' is not active": "",
|
||||
"The podman-env command is incompatible with multi-node clusters. Use the 'registry' add-on: https://minikube.sigs.k8s.io/docs/handbook/registry/": "",
|
||||
|
|
|
|||
|
|
@ -172,6 +172,7 @@
|
|||
"Ensure your {{.driver_name}} is running and is healthy.": "",
|
||||
"Environment variables to pass to the Docker daemon. (format: key=value)": "Docker デーモンに渡す環境変数(形式: Key=Value)",
|
||||
"Environment variables to pass to the build. (format: key=value)": "",
|
||||
"Error code docs have been saved at - {{.path}}": "",
|
||||
"Error creating minikube directory": "minikube のディレクトリ作成中にエラーが発生しました",
|
||||
"Error creating view template": "表示用のテンプレートを作成中にエラーが発生しました",
|
||||
"Error detecting shell": "シェルの確認中にエラーが発生しました",
|
||||
|
|
@ -641,6 +642,7 @@
|
|||
"The number of nodes to spin up. Defaults to 1.": "",
|
||||
"The output format. One of 'json', 'table'": "",
|
||||
"The path on the file system where the docs in markdown need to be saved": "",
|
||||
"The path on the file system where the error code docs in markdown need to be saved": "",
|
||||
"The path on the file system where the testing docs in markdown need to be saved": "",
|
||||
"The podman service within '{{.cluster}}' is not active": "",
|
||||
"The podman-env command is incompatible with multi-node clusters. Use the 'registry' add-on: https://minikube.sigs.k8s.io/docs/handbook/registry/": "",
|
||||
|
|
|
|||
|
|
@ -188,6 +188,7 @@
|
|||
"Environment variables to pass to the Docker daemon. (format: key=value)": "",
|
||||
"Environment variables to pass to the build. (format: key=value)": "",
|
||||
"Error adding node to cluster": "클러스터에 노드 추가 오류",
|
||||
"Error code docs have been saved at - {{.path}}": "",
|
||||
"Error creating minikube directory": "minikube 폴더 생성 오류",
|
||||
"Error creating view template": "",
|
||||
"Error detecting shell": "shell 탐지 오류",
|
||||
|
|
@ -654,6 +655,7 @@
|
|||
"The number of nodes to spin up. Defaults to 1.": "",
|
||||
"The output format. One of 'json', 'table'": "",
|
||||
"The path on the file system where the docs in markdown need to be saved": "",
|
||||
"The path on the file system where the error code docs in markdown need to be saved": "",
|
||||
"The path on the file system where the testing docs in markdown need to be saved": "",
|
||||
"The podman service within '{{.cluster}}' is not active": "",
|
||||
"The podman-env command is incompatible with multi-node clusters. Use the 'registry' add-on: https://minikube.sigs.k8s.io/docs/handbook/registry/": "",
|
||||
|
|
|
|||
|
|
@ -188,6 +188,7 @@
|
|||
"Environment variables to pass to the Docker daemon. (format: key=value)": "Zmienne środowiskowe do przekazania do demona docker (format: klucz-wartość)",
|
||||
"Environment variables to pass to the build. (format: key=value)": "",
|
||||
"Error checking driver version: {{.error}}": "Błąd podczas sprawdzania wersji sterownika : {{.error}}",
|
||||
"Error code docs have been saved at - {{.path}}": "",
|
||||
"Error creating minikube directory": "",
|
||||
"Error creating view template": "",
|
||||
"Error detecting shell": "",
|
||||
|
|
@ -662,6 +663,7 @@
|
|||
"The number of nodes to spin up. Defaults to 1.": "",
|
||||
"The output format. One of 'json', 'table'": "",
|
||||
"The path on the file system where the docs in markdown need to be saved": "",
|
||||
"The path on the file system where the error code docs in markdown need to be saved": "",
|
||||
"The path on the file system where the testing docs in markdown need to be saved": "",
|
||||
"The podman service within '{{.cluster}}' is not active": "",
|
||||
"The podman-env command is incompatible with multi-node clusters. Use the 'registry' add-on: https://minikube.sigs.k8s.io/docs/handbook/registry/": "",
|
||||
|
|
|
|||
|
|
@ -168,6 +168,7 @@
|
|||
"Ensure your {{.driver_name}} is running and is healthy.": "",
|
||||
"Environment variables to pass to the Docker daemon. (format: key=value)": "",
|
||||
"Environment variables to pass to the build. (format: key=value)": "",
|
||||
"Error code docs have been saved at - {{.path}}": "",
|
||||
"Error creating minikube directory": "",
|
||||
"Error creating view template": "",
|
||||
"Error detecting shell": "",
|
||||
|
|
@ -600,6 +601,7 @@
|
|||
"The number of nodes to spin up. Defaults to 1.": "",
|
||||
"The output format. One of 'json', 'table'": "",
|
||||
"The path on the file system where the docs in markdown need to be saved": "",
|
||||
"The path on the file system where the error code docs in markdown need to be saved": "",
|
||||
"The path on the file system where the testing docs in markdown need to be saved": "",
|
||||
"The podman service within '{{.cluster}}' is not active": "",
|
||||
"The podman-env command is incompatible with multi-node clusters. Use the 'registry' add-on: https://minikube.sigs.k8s.io/docs/handbook/registry/": "",
|
||||
|
|
|
|||
|
|
@ -216,6 +216,7 @@
|
|||
"Environment variables to pass to the Docker daemon. (format: key=value)": "传递给 Docker 守护进程的环境变量。(格式:键值对)",
|
||||
"Environment variables to pass to the build. (format: key=value)": "",
|
||||
"Error checking driver version: {{.error}}": "检查驱动程序版本时出错:{{.error}}",
|
||||
"Error code docs have been saved at - {{.path}}": "",
|
||||
"Error converting status to json": "转换状态为 json 时出错",
|
||||
"Error creating list template": "创建 list template 时出错",
|
||||
"Error creating minikube directory": "创建 minikube 目录时出错",
|
||||
|
|
@ -749,6 +750,7 @@
|
|||
"The number of nodes to spin up. Defaults to 1.": "",
|
||||
"The output format. One of 'json', 'table'": "输出的格式。'json' 或者 'table'",
|
||||
"The path on the file system where the docs in markdown need to be saved": "",
|
||||
"The path on the file system where the error code docs in markdown need to be saved": "",
|
||||
"The path on the file system where the testing docs in markdown need to be saved": "",
|
||||
"The podman service within '{{.cluster}}' is not active": "",
|
||||
"The podman-env command is incompatible with multi-node clusters. Use the 'registry' add-on: https://minikube.sigs.k8s.io/docs/handbook/registry/": "",
|
||||
|
|
|
|||
Loading…
Reference in New Issue