diff --git a/changelog/60518.added b/changelog/60518.added index 05a3044323c..322ee04da17 100644 --- a/changelog/60518.added +++ b/changelog/60518.added @@ -1 +1 @@ -Added suport for ppc64le core grains (cpu_model, virtual, productname, manufacturer, serialnumber) +Added suport for Linux ppc64le core grains (cpu_model, virtual, productname, manufacturer, serialnumber) and arm core grains (serialnumber, productname) diff --git a/salt/grains/core.py b/salt/grains/core.py index d46096213fd..c062c344417 100644 --- a/salt/grains/core.py +++ b/salt/grains/core.py @@ -1588,11 +1588,17 @@ def _linux_devicetree_platform_data(): else: grains["productname"] = tmp[0] + # not in specs, but observed on "Linux on Power" systems systemid = _read_dt_string("system-id") if systemid: - # not in specs, but observed on "Linux on Power" systems grains["serialnumber"] = systemid + # not in spec, but populated for ARM Linux - https://github.com/torvalds/linux/blob/master/arch/arm/kernel/setup.c#L961 + # as this is "more correct" naming, this should have priority over system-id + serial = _read_dt_string("serial-number") + if serial: + grains["serialnumber"] = serial + return grains diff --git a/tests/unit/grains/test_core.py b/tests/unit/grains/test_core.py index 70cf653598f..7f9b48fb6f7 100644 --- a/tests/unit/grains/test_core.py +++ b/tests/unit/grains/test_core.py @@ -2584,6 +2584,23 @@ class CoreGrainsTestCase(TestCase, LoaderModuleMockMixin): {"/proc/device-tree/system-id": "IBM,123456,789"}, {"serialnumber": "IBM,123456,789"}, ), + ( + { + "/proc/device-tree/model": "Raspberry Pi 4 Model B Rev 1.1", + "/proc/device-tree/serial-number": "100000000123456789", + }, + { + "serialnumber": "100000000123456789", + "productname": "Raspberry Pi 4 Model B Rev 1.1", + }, + ), + ( + { + "/proc/device-tree/serial-number": "100000000123456789", + "/proc/device-tree/system-id": "fsl,ABCDEF", + }, + {"serialnumber": "100000000123456789"}, + ), ] for test_input, expected in parameters: