Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
57 changes: 37 additions & 20 deletions mongobin/downloadSpec.go
Original file line number Diff line number Diff line change
Expand Up @@ -34,6 +34,7 @@ type DownloadSpec struct {
// - ubuntu1804
// - ubuntu1604
// - ubuntu1404
// - debian10
// - debian92
// - debian81
// - suse12
Expand Down Expand Up @@ -198,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"
Expand All @@ -216,24 +209,48 @@ func osNameFromOsRelease(osRelease map[string]string, mongoVersion []int) string
return "rhel70"
}
case "debian":
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") {
Expand Down
47 changes: 47 additions & 0 deletions mongobin/downloadSpec_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -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",

Expand Down
11 changes: 11 additions & 0 deletions mongobin/downloadURL_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -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",
Expand Down
8 changes: 8 additions & 0 deletions mongobin/testdata/etc/debianbuster/os-release
Original file line number Diff line number Diff line change
@@ -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/"