From 36484175a8f96e7b21beda841db8473969b9cc9c Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Andork=C3=B3=20Bal=C3=A1zs?= Date: Tue, 8 Jun 2021 13:52:13 +0200 Subject: [PATCH 1/3] debian10 support added --- mongobin/downloadSpec.go | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/mongobin/downloadSpec.go b/mongobin/downloadSpec.go index 4e98acb..cb15ef2 100644 --- a/mongobin/downloadSpec.go +++ b/mongobin/downloadSpec.go @@ -34,6 +34,7 @@ type DownloadSpec struct { // - ubuntu1804 // - ubuntu1604 // - ubuntu1404 + // - debian10 // - debian92 // - debian81 // - suse12 @@ -216,6 +217,9 @@ func osNameFromOsRelease(osRelease map[string]string, mongoVersion []int) string return "rhel70" } case "debian": + if majorVersion >= 10 && versionGTE(mongoVersion, []int{4, 2, 1}) { + return "debian10" + } if majorVersion >= 9 && versionGTE(mongoVersion, []int{3, 6, 5}) { return "debian92" } From 0c03e215b959db68a6afa69cec64a227196ba99d Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Andork=C3=B3=20Bal=C3=A1zs?= Date: Tue, 8 Jun 2021 14:28:27 +0200 Subject: [PATCH 2/3] Add support for debian10, test --- mongobin/downloadSpec_test.go | 47 +++++++++++++++++++ mongobin/downloadURL_test.go | 11 +++++ mongobin/testdata/etc/debianbuster/os-release | 8 ++++ 3 files changed, 66 insertions(+) create mode 100644 mongobin/testdata/etc/debianbuster/os-release diff --git a/mongobin/downloadSpec_test.go b/mongobin/downloadSpec_test.go index 96ec4d6..b62886b 100644 --- a/mongobin/downloadSpec_test.go +++ b/mongobin/downloadSpec_test.go @@ -160,6 +160,53 @@ func TestMakeDownloadSpec(t *testing.T) { OSName: "rhel62", }, }, + "Debian buster": { + etcFolder: "debianbuster", + + expectedSpec: &DownloadSpec{ + Version: testMongoVersion, + Platform: "linux", + SSLBuildNeeded: false, + Arch: "x86_64", + OSName: "debian92", + }, + }, + "Debian buster new mongo": { + mongoVersion: "4.2.1", + etcFolder: "debianbuster", + + expectedSpec: &DownloadSpec{ + Version: "4.2.1", + Platform: "linux", + SSLBuildNeeded: false, + Arch: "x86_64", + OSName: "debian10", + }, + }, + "Debian buster older mongo": { + mongoVersion: "3.6.4", + etcFolder: "debianbuster", + + expectedSpec: &DownloadSpec{ + Version: "3.6.4", + Platform: "linux", + SSLBuildNeeded: false, + Arch: "x86_64", + OSName: "debian81", + }, + }, + "Debian buster much older mongo": { + mongoVersion: "3.2.7", + etcFolder: "debianbuster", + + expectedSpec: &DownloadSpec{ + Version: "3.2.7", + Platform: "linux", + SSLBuildNeeded: false, + Arch: "x86_64", + OSName: "", + }, + }, "Debian stretch": { etcFolder: "debianstretch", diff --git a/mongobin/downloadURL_test.go b/mongobin/downloadURL_test.go index 34a1f51..dc6765c 100644 --- a/mongobin/downloadURL_test.go +++ b/mongobin/downloadURL_test.go @@ -106,6 +106,17 @@ func TestGetDownloadURL(t *testing.T) { mongoVersions: mongoVersionsToTest, expectedURL: "https://fastdl.mongodb.org/linux/mongodb-linux-x86_64-rhel62-VERSION.tgz", }, + "Debian buster": { + spec: &DownloadSpec{ + Platform: "linux", + Arch: "x86_64", + OSName: "debian10", + }, + mongoVersions: []string{ + "4.2.1", + }, + expectedURL: "https://fastdl.mongodb.org/linux/mongodb-linux-x86_64-debian10-VERSION.tgz", + }, "Debian stretch": { spec: &DownloadSpec{ Platform: "linux", diff --git a/mongobin/testdata/etc/debianbuster/os-release b/mongobin/testdata/etc/debianbuster/os-release new file mode 100644 index 0000000..e4d27d9 --- /dev/null +++ b/mongobin/testdata/etc/debianbuster/os-release @@ -0,0 +1,8 @@ +PRETTY_NAME="Debian GNU/Linux 10 (buster)" +NAME="Debian GNU/Linux" +VERSION_ID="10" +VERSION="10 (buster)" +ID=debian +HOME_URL="https://www.debian.org/" +SUPPORT_URL="https://www.debian.org/support" +BUG_REPORT_URL="https://bugs.debian.org/" From 943680c47715c06a703be213cd3e8ee1ca3dee90 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Andork=C3=B3=20Bal=C3=A1zs?= Date: Tue, 8 Jun 2021 21:56:45 +0200 Subject: [PATCH 3/3] Lint fix --- mongobin/downloadSpec.go | 59 ++++++++++++++++++++++++---------------- 1 file changed, 36 insertions(+), 23 deletions(-) diff --git a/mongobin/downloadSpec.go b/mongobin/downloadSpec.go index cb15ef2..65b7974 100644 --- a/mongobin/downloadSpec.go +++ b/mongobin/downloadSpec.go @@ -199,15 +199,7 @@ func osNameFromOsRelease(osRelease map[string]string, mongoVersion []int) string switch id { case "ubuntu": - if majorVersion >= 18 && versionGTE(mongoVersion, []int{4, 0, 1}) { - return "ubuntu1804" - } - if majorVersion >= 16 && versionGTE(mongoVersion, []int{3, 2, 7}) { - return "ubuntu1604" - } - if majorVersion >= 14 { - return "ubuntu1404" - } + return osNameFromUbuntuRelease(majorVersion, mongoVersion) case "sles": if majorVersion >= 12 { return "suse12" @@ -217,27 +209,48 @@ func osNameFromOsRelease(osRelease map[string]string, mongoVersion []int) string return "rhel70" } case "debian": - if majorVersion >= 10 && versionGTE(mongoVersion, []int{4, 2, 1}) { - return "debian10" - } - if majorVersion >= 9 && versionGTE(mongoVersion, []int{3, 6, 5}) { - return "debian92" - } - if majorVersion >= 8 && versionGTE(mongoVersion, []int{3, 2, 8}) { - return "debian81" - } + return osNameFromDebianRelease(majorVersion, mongoVersion) case "amzn": - if majorVersion == 2 && versionGTE(mongoVersion, []int{4, 0, 0}) { - return "amazon2" - } + return osNameFromAmznRelease(majorVersion, mongoVersion) + } - // Version before 2 has the release date, not a real version number - return "amazon" + return "" +} +func osNameFromUbuntuRelease(majorVersion int, mongoVersion []int) string { + if majorVersion >= 18 && versionGTE(mongoVersion, []int{4, 0, 1}) { + return "ubuntu1804" + } + if majorVersion >= 16 && versionGTE(mongoVersion, []int{3, 2, 7}) { + return "ubuntu1604" } + if majorVersion >= 14 { + return "ubuntu1404" + } + return "" +} +func osNameFromDebianRelease(majorVersion int, mongoVersion []int) string { + if majorVersion >= 10 && versionGTE(mongoVersion, []int{4, 2, 1}) { + return "debian10" + } + if majorVersion >= 9 && versionGTE(mongoVersion, []int{3, 6, 5}) { + return "debian92" + } + if majorVersion >= 8 && versionGTE(mongoVersion, []int{3, 2, 8}) { + return "debian81" + } return "" } +func osNameFromAmznRelease(majorVersion int, mongoVersion []int) string { + if majorVersion == 2 && versionGTE(mongoVersion, []int{4, 0, 0}) { + return "amazon2" + } + + // Version before 2 has the release date, not a real version number + return "amazon" +} + func osNameFromRedhatRelease(redhatRelease string) string { // RHEL 7 uses /etc/os-release, so we're just detecting RHEL 6 here if strings.Contains(redhatRelease, "release 6") {