Skip to content

Commit 1ea761b

Browse files
authored
⭐ Detect packages/services on Mageia Linux (#6004)
* Detect packages on Mageia Linux RPM based distro. We already checked the right path. We just needed to know to look for RPMs Signed-off-by: Tim Smith <tsmith84@gmail.com> * Detect services on mageia Signed-off-by: Tim Smith <tsmith84@gmail.com> * Add the official platform detection Signed-off-by: Tim Smith <tsmith84@gmail.com> --------- Signed-off-by: Tim Smith <tsmith84@gmail.com>
1 parent daa96d9 commit 1ea761b

File tree

6 files changed

+53
-3
lines changed

6 files changed

+53
-3
lines changed

providers/os/detector/detector_all.go

Lines changed: 12 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -560,6 +560,17 @@ var photon = &PlatformResolver{
560560
},
561561
}
562562

563+
var mageia = &PlatformResolver{
564+
Name: "mageia",
565+
IsFamily: false,
566+
Detect: func(r *PlatformResolver, pf *inventory.Platform, conn shared.Connection) (bool, error) {
567+
if pf.Name == "mageia" {
568+
return true, nil
569+
}
570+
return false, nil
571+
},
572+
}
573+
563574
var openwrt = &PlatformResolver{
564575
Name: "openwrt",
565576
IsFamily: false,
@@ -925,7 +936,7 @@ var eulerFamily = &PlatformResolver{
925936
var linuxFamily = &PlatformResolver{
926937
Name: inventory.FAMILY_LINUX,
927938
IsFamily: true,
928-
Children: []*PlatformResolver{archFamily, redhatFamily, debianFamily, suseFamily, eulerFamily, amazonlinux, alpine, gentoo, busybox, photon, windriver, openwrt, ubios, plcnext, defaultLinux},
939+
Children: []*PlatformResolver{archFamily, redhatFamily, debianFamily, suseFamily, eulerFamily, amazonlinux, alpine, gentoo, busybox, photon, windriver, openwrt, ubios, plcnext, mageia, defaultLinux},
929940
Detect: func(r *PlatformResolver, pf *inventory.Platform, conn shared.Connection) (bool, error) {
930941
detected := false
931942
osrd := NewOSReleaseDetector(conn)

providers/os/detector/detector_platform_test.go

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -900,3 +900,14 @@ func TestOpenEulerDetector(t *testing.T) {
900900
assert.Equal(t, "aarch64", di.Arch, "os arch should be identified")
901901
assert.Equal(t, []string{"euler", "linux", "unix", "os"}, di.Family)
902902
}
903+
904+
func TestMageiaDetector(t *testing.T) {
905+
di, err := detectPlatformFromMock("./testdata/detect-mageia-9.toml")
906+
assert.Nil(t, err, "was able to create the provider")
907+
908+
assert.Equal(t, "mageia", di.Name, "os name should be identified")
909+
assert.Equal(t, "Mageia 9", di.Title, "os title should be identified")
910+
assert.Equal(t, "9", di.Version, "os version should be identified")
911+
assert.Equal(t, "aarch64", di.Arch, "os arch should be identified")
912+
assert.Equal(t, []string{"linux", "unix", "os"}, di.Family)
913+
}
Lines changed: 26 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,26 @@
1+
[commands."uname -s"]
2+
stdout = "Linux"
3+
4+
[commands."uname -m"]
5+
stdout = "aarch64"
6+
7+
[commands."uname -r"]
8+
stdout = "6.10.14-linuxkit"
9+
10+
[files."/etc/redhat-release"]
11+
content = "Mageia release 9 (Official) for aarch64"
12+
13+
[files."/etc/os-release"]
14+
content = """
15+
NAME="Mageia"
16+
VERSION="9"
17+
ID=mageia
18+
VERSION_ID=9
19+
ID_LIKE="mandriva fedora"
20+
PRETTY_NAME="Mageia 9"
21+
ANSI_COLOR="1;36"
22+
HOME_URL="https://www.mageia.org/"
23+
SUPPORT_URL="https://www.mageia.org/support/"
24+
BUG_REPORT_URL="https://bugs.mageia.org/"
25+
PRIVACY_POLICY_URL="https://wiki.mageia.org/en/Privacy_policy"
26+
"""

providers/os/resources/packages/packages.go

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -107,7 +107,7 @@ func ResolveSystemPkgManagers(conn shared.Connection) ([]OperatingSystemPkgManag
107107
pms = append(pms, &SnapPkgManager{conn: conn, platform: asset.Platform})
108108
case asset.Platform.Name == "amazonlinux" || asset.Platform.Name == "photon" || asset.Platform.Name == "wrlinux":
109109
fallthrough
110-
case asset.Platform.IsFamily("redhat") || asset.Platform.IsFamily("euler"): // rhel and euler based systems
110+
case asset.Platform.IsFamily("redhat") || asset.Platform.IsFamily("euler") || asset.Platform.Name == "mageia": // rhel/euler/mageia based systems
111111
pms = append(pms, &RpmPkgManager{conn: conn, platform: asset.Platform})
112112
if asset.Platform.Name == "fedora" {
113113
// https: // snapcraft.io/docs/distro-support

providers/os/resources/packages/rpm_packages.go

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -237,7 +237,7 @@ func (rpm *RpmPkgManager) staticList() ([]Package, error) {
237237
"/usr/lib/sysimage/rpm/Packages", // used on opensuse container
238238
"/usr/lib/sysimage/rpm/Packages.db", // used on SLES bci-base container
239239
"/usr/lib/sysimage/rpm/rpmdb.sqlite", // used on fedora 36+ and photon4
240-
"/var/lib/rpm/rpmdb.sqlite", // used on fedora 33-35
240+
"/var/lib/rpm/rpmdb.sqlite", // used on fedora 33-35 and mageia
241241
"/var/lib/rpm/Packages", // used on fedora 32
242242
"/var/lib/rpm/Packages.db", // used on openeuler
243243
}

providers/os/resources/services/manager.go

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -164,6 +164,8 @@ func ResolveManager(conn shared.Connection) (OSServiceManager, error) {
164164
osm = &AixServiceManager{conn: conn}
165165
case asset.Platform.Name == "kali": // debian based with versions from 2015 onwards being systemd based
166166
osm = ResolveSystemdServiceManager(conn)
167+
case asset.Platform.Name == "mageia": // mageia 2 and later are systemd based
168+
osm = ResolveSystemdServiceManager(conn)
167169
case asset.Platform.Name == "cloudlinux": // rhel based
168170
osm = ResolveSystemdServiceManager(conn)
169171
}

0 commit comments

Comments
 (0)