From 3961aa6855015c0d7b3bf74f24e9ad790cb3f4e0 Mon Sep 17 00:00:00 2001 From: niusmallnan Date: Thu, 15 Aug 2019 13:17:07 +0800 Subject: [PATCH] Fix the wrong symlinks when using the custom docker engine --- cmd/control/console_init.go | 2 +- cmd/control/docker_init.go | 9 +++++---- cmd/control/util.go | 36 ++++++++++++++++-------------------- 3 files changed, 22 insertions(+), 25 deletions(-) diff --git a/cmd/control/console_init.go b/cmd/control/console_init.go index 5cbf5b33..e2b1b783 100644 --- a/cmd/control/console_init.go +++ b/cmd/control/console_init.go @@ -137,7 +137,7 @@ func consoleInitFunc() error { } } - baseSymlink := symLinkEngineBinary(cfg.Rancher.Docker.Engine) + baseSymlink := symLinkEngineBinary() if _, err := os.Stat(dockerCompletionFile); err == nil { baseSymlink = append(baseSymlink, symlink{ diff --git a/cmd/control/docker_init.go b/cmd/control/docker_init.go index 502409f7..5c6b13a4 100644 --- a/cmd/control/docker_init.go +++ b/cmd/control/docker_init.go @@ -86,12 +86,13 @@ func dockerInitAction(c *cli.Context) error { } cfg := config.LoadConfig() - baseSymlink := symLinkEngineBinary(cfg.Rancher.Docker.Engine) - for _, link := range baseSymlink { + for _, link := range symLinkEngineBinary() { syscall.Unlink(link.newname) - if err := os.Symlink(link.oldname, link.newname); err != nil { - log.Error(err) + if _, err := os.Stat(link.oldname); err == nil { + if err := os.Symlink(link.oldname, link.newname); err != nil { + log.Error(err) + } } } diff --git a/cmd/control/util.go b/cmd/control/util.go index 1386b648..db23dab3 100644 --- a/cmd/control/util.go +++ b/cmd/control/util.go @@ -10,7 +10,6 @@ import ( "github.com/rancher/os/config" "github.com/rancher/os/pkg/log" - "github.com/rancher/os/pkg/util/versions" "github.com/pkg/errors" ) @@ -34,30 +33,27 @@ func formatImage(image string, cfg *config.CloudConfig) string { return image } -func symLinkEngineBinary(version string) []symlink { - versionNum := strings.Replace(strings.Replace(version, "docker-", "", -1), "-ce", "", -1) +func symLinkEngineBinary() []symlink { baseSymlink := []symlink{ + {"/usr/share/ros/os-release", "/usr/lib/os-release"}, + {"/usr/share/ros/os-release", "/etc/os-release"}, + {"/var/lib/rancher/engine/docker", "/usr/bin/docker"}, {"/var/lib/rancher/engine/dockerd", "/usr/bin/dockerd"}, {"/var/lib/rancher/engine/docker-init", "/usr/bin/docker-init"}, {"/var/lib/rancher/engine/docker-proxy", "/usr/bin/docker-proxy"}, - {"/usr/share/ros/os-release", "/usr/lib/os-release"}, - {"/usr/share/ros/os-release", "/etc/os-release"}, - } - if versions.GreaterThanOrEqualTo(versionNum, "18.09.0") { - baseSymlink = append(baseSymlink, []symlink{ - {"/var/lib/rancher/engine/containerd", "/usr/bin/containerd"}, - {"/var/lib/rancher/engine/ctr", "/usr/bin/ctr"}, - {"/var/lib/rancher/engine/containerd-shim", "/usr/bin/containerd-shim"}, - {"/var/lib/rancher/engine/runc", "/usr/bin/runc"}, - }...) - } else { - baseSymlink = append(baseSymlink, []symlink{ - {"/var/lib/rancher/engine/docker-containerd", "/usr/bin/docker-containerd"}, - {"/var/lib/rancher/engine/docker-containerd-ctr", "/usr/bin/docker-containerd-ctr"}, - {"/var/lib/rancher/engine/docker-containerd-shim", "/usr/bin/docker-containerd-shim"}, - {"/var/lib/rancher/engine/docker-runc", "/usr/bin/docker-runc"}, - }...) + + // >= 18.09.0 + {"/var/lib/rancher/engine/containerd", "/usr/bin/containerd"}, + {"/var/lib/rancher/engine/ctr", "/usr/bin/ctr"}, + {"/var/lib/rancher/engine/containerd-shim", "/usr/bin/containerd-shim"}, + {"/var/lib/rancher/engine/runc", "/usr/bin/runc"}, + + // < 18.09.0 + {"/var/lib/rancher/engine/docker-containerd", "/usr/bin/docker-containerd"}, + {"/var/lib/rancher/engine/docker-containerd-ctr", "/usr/bin/docker-containerd-ctr"}, + {"/var/lib/rancher/engine/docker-containerd-shim", "/usr/bin/docker-containerd-shim"}, + {"/var/lib/rancher/engine/docker-runc", "/usr/bin/docker-runc"}, } return baseSymlink }