From f519ec50cc1f75e64bceeae36b2ce80f29f20ee9 Mon Sep 17 00:00:00 2001 From: Predrag Rogic Date: Fri, 5 Feb 2021 01:54:09 +0000 Subject: [PATCH 1/3] support ancient versions of docker again (template parsing issue) --- pkg/drivers/kic/oci/network_create.go | 6 +++++- pkg/minikube/registry/drvs/docker/docker.go | 2 +- 2 files changed, 6 insertions(+), 2 deletions(-) diff --git a/pkg/drivers/kic/oci/network_create.go b/pkg/drivers/kic/oci/network_create.go index cde14b2b0537..d12e56f09b8b 100644 --- a/pkg/drivers/kic/oci/network_create.go +++ b/pkg/drivers/kic/oci/network_create.go @@ -172,8 +172,12 @@ type networkInspect struct { } var dockerInsepctGetter = func(name string) (*RunResult, error) { - cmd := exec.Command(Docker, "network", "inspect", name, "--format", `{"Name": "{{.Name}}","Driver": "{{.Driver}}","Subnet": "{{range .IPAM.Config}}{{.Subnet}}{{end}}","Gateway": "{{range .IPAM.Config}}{{.Gateway}}{{end}}","MTU": {{if (index .Options "com.docker.network.driver.mtu")}}{{(index .Options "com.docker.network.driver.mtu")}}{{else}}0{{end}},{{$first := true}} "ContainerIPs": [{{range $k,$v := .Containers }}{{if $first}}{{$first = false}}{{else}}, {{end}}"{{$v.IPv4Address}}"{{end}}]}`) + // hack -- 'support ancient versions of docker again (template parsing issue) #10362' and resolve 'Template parsing error: template: :1: unexpected "=" in operand' / 'exit status 64' + // note: docker v18.09.7 and older use go v1.10.8 and older, whereas support for '=' operator in go templates came in go v1.11 + cmd := exec.Command(Docker, "network", "inspect", name, "--format", `{"Name": "{{.Name}}","Driver": "{{.Driver}}","Subnet": "{{range .IPAM.Config}}{{.Subnet}}{{end}}","Gateway": "{{range .IPAM.Config}}{{.Gateway}}{{end}}","MTU": {{if (index .Options "com.docker.network.driver.mtu")}}{{(index .Options "com.docker.network.driver.mtu")}}{{else}}0{{end}}, "ContainerIPs": [{{range $k,$v := .Containers }}"{{$v.IPv4Address}}",{{end}}]}`) rr, err := runCmd(cmd) + // remove extra ',' after the last element in the ContainerIPs slice + rr.Stdout = *bytes.NewBuffer(bytes.ReplaceAll(rr.Stdout.Bytes(), []byte(",]"), []byte("]"))) return rr, err } diff --git a/pkg/minikube/registry/drvs/docker/docker.go b/pkg/minikube/registry/drvs/docker/docker.go index 70603efce831..6639cea221ad 100644 --- a/pkg/minikube/registry/drvs/docker/docker.go +++ b/pkg/minikube/registry/drvs/docker/docker.go @@ -115,7 +115,7 @@ func status() registry.State { } klog.Infof("docker version: %s", o) - if s := checkDockerVersion(string(o)); s.Error != nil { + if s := checkDockerVersion(strings.TrimSpace(string(o))); s.Error != nil { // remove '\n' from o at the end return s } From 64972693e606eb5404e3bd8d1b3db407258158cc Mon Sep 17 00:00:00 2001 From: Predrag Rogic Date: Fri, 5 Feb 2021 14:30:45 +0000 Subject: [PATCH 2/3] remove the Exit for old docker versions --- pkg/minikube/registry/drvs/docker/docker.go | 6 ++---- 1 file changed, 2 insertions(+), 4 deletions(-) diff --git a/pkg/minikube/registry/drvs/docker/docker.go b/pkg/minikube/registry/drvs/docker/docker.go index 6639cea221ad..e03870013698 100644 --- a/pkg/minikube/registry/drvs/docker/docker.go +++ b/pkg/minikube/registry/drvs/docker/docker.go @@ -188,12 +188,10 @@ func checkDockerVersion(o string) registry.State { return registry.State{Installed: true, Healthy: true, Error: nil} } else if k < minDockerVersion[i] { return registry.State{ - Reason: "PROVIDER_DOCKER_VERSION_LOW", - Error: oci.ErrMinDockerVersion, Installed: true, - Healthy: false, + Healthy: true, NeedsImprovement: true, - Fix: fmt.Sprintf("Upgrade %s to a newer version (Minimum supproted version is %2d.%2d.%d)", driver.FullName(driver.Docker), minDockerVersion[0], minDockerVersion[1], minDockerVersion[2]), + Fix: fmt.Sprintf("Upgrade %s to a newer version (Minimum supproted version is %2d.%02d.%d)", driver.FullName(driver.Docker), minDockerVersion[0], minDockerVersion[1], minDockerVersion[2]), Doc: docURL + "#requirements"} } } From 51111737bb7cf9d39a161b1bf277c0366ca8c656 Mon Sep 17 00:00:00 2001 From: Predrag Rogic Date: Fri, 5 Feb 2021 21:27:35 +0000 Subject: [PATCH 3/3] change wording: supported -> recommended --- pkg/minikube/registry/drvs/docker/docker.go | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pkg/minikube/registry/drvs/docker/docker.go b/pkg/minikube/registry/drvs/docker/docker.go index e03870013698..a5350ef1a2ae 100644 --- a/pkg/minikube/registry/drvs/docker/docker.go +++ b/pkg/minikube/registry/drvs/docker/docker.go @@ -191,7 +191,7 @@ func checkDockerVersion(o string) registry.State { Installed: true, Healthy: true, NeedsImprovement: true, - Fix: fmt.Sprintf("Upgrade %s to a newer version (Minimum supproted version is %2d.%02d.%d)", driver.FullName(driver.Docker), minDockerVersion[0], minDockerVersion[1], minDockerVersion[2]), + Fix: fmt.Sprintf("Upgrade %s to a newer version (Minimum recommended version is %2d.%02d.%d)", driver.FullName(driver.Docker), minDockerVersion[0], minDockerVersion[1], minDockerVersion[2]), Doc: docURL + "#requirements"} } }