diff options
| author | Zuul <zuul@review.opendev.org> | 2021-04-30 12:24:44 +0000 |
|---|---|---|
| committer | Gerrit Code Review <review@openstack.org> | 2021-04-30 12:24:44 +0000 |
| commit | 10c29cdc41a461e38d0a8eeb9045d1aebfb44e8f (patch) | |
| tree | 663fc1f10b7f9f856efe9ccd24649f7c10df2ae7 /ironic_python_agent | |
| parent | b510d2d4d0fd5f157f3d660d876d5f89b0e3defd (diff) | |
| parent | ed791d97786f4ed37bf7b9f18eac8e2af46c3766 (diff) | |
| download | ironic-python-agent-10c29cdc41a461e38d0a8eeb9045d1aebfb44e8f.tar.gz | |
Merge "Fix getting memory size in some lshw output"
Diffstat (limited to 'ironic_python_agent')
| -rw-r--r-- | ironic_python_agent/hardware.py | 14 | ||||
| -rw-r--r-- | ironic_python_agent/tests/unit/samples/hardware_samples.py | 184 | ||||
| -rw-r--r-- | ironic_python_agent/tests/unit/test_hardware.py | 10 |
3 files changed, 201 insertions, 7 deletions
diff --git a/ironic_python_agent/hardware.py b/ironic_python_agent/hardware.py index 061af3c1..be955727 100644 --- a/ironic_python_agent/hardware.py +++ b/ironic_python_agent/hardware.py @@ -222,16 +222,16 @@ def _calc_memory(sys_dict): for core_child in sys_child['children']: if not _MEMORY_ID_RE.match(core_child['id']): continue - if (not core_child.get("children") - and core_child.get('size')): + if core_child.get('size'): value = ("%(size)s %(units)s" % core_child) physical += int(UNIT_CONVERTER(value).to ('MB').magnitude) - for bank in core_child.get('children', ()): - if bank.get('size'): - value = ("%(size)s %(units)s" % bank) - physical += int(UNIT_CONVERTER(value).to - ('MB').magnitude) + else: + for bank in core_child.get('children', ()): + if bank.get('size'): + value = ("%(size)s %(units)s" % bank) + physical += int(UNIT_CONVERTER(value).to + ('MB').magnitude) return physical diff --git a/ironic_python_agent/tests/unit/samples/hardware_samples.py b/ironic_python_agent/tests/unit/samples/hardware_samples.py index f398f60f..3ab54153 100644 --- a/ironic_python_agent/tests/unit/samples/hardware_samples.py +++ b/ironic_python_agent/tests/unit/samples/hardware_samples.py @@ -543,6 +543,190 @@ LSHW_JSON_OUTPUT_V2 = (""" } """, "") +LSHW_JSON_OUTPUT_NO_MEMORY_BANK_SIZE = (""" +{ + "id" : "bumblebee", + "class" : "system", + "claimed" : true, + "handle" : "DMI:0001", + "description" : "Rack Mount Chassis", + "product" : "ABCD", + "vendor" : "ABCD", + "version" : "1234", + "serial" : "1234", + "width" : 64, + "configuration" : { + "boot" : "normal", + "chassis" : "rackmount", + "family" : "Intel Grantley EP", + "sku" : "NULL", + "uuid" : "00010002-0003-0004-0005-000600070008" + }, + "capabilities" : { + "smbios-2.8" : "SMBIOS version 2.8", + "dmi-2.7" : "DMI version 2.7", + "vsyscall32" : "32-bit processes" + }, + "children" : [ + { + "id" : "core", + "class" : "bus", + "claimed" : true, + "handle" : "DMI:0002", + "description" : "Motherboard", + "product" : "ABCD", + "vendor" : "ABCD", + "physid" : "0", + "version" : "1234", + "serial" : "1234", + "slot" : "NULL", + "children" : [ + { + "id" : "memory:0", + "class" : "memory", + "claimed" : true, + "handle" : "DMI:004A", + "description" : "System Memory", + "physid" : "4a", + "slot" : "System board or motherboard", + "units" : "bytes", + "size" : 34359738368, + "children" : [ + { + "id" : "bank:0", + "class" : "memory", + "claimed" : true, + "handle" : "DMI:004C", + "description" : "DIMM Synchronous 2133 MHz (0.5 ns)", + "product" : "36ASF2G72PZ-2G1A2", + "vendor" : "Micron", + "physid" : "0", + "serial" : "101B6543", + "slot" : "DIMM_A0", + "width" : 64, + "clock" : 2133000000 + }, + { + "id" : "bank:1", + "class" : "memory", + "claimed" : true, + "handle" : "DMI:004E", + "description" : "DIMM Synchronous [empty]", + "product" : "NO DIMM", + "vendor" : "NO DIMM", + "physid" : "1", + "serial" : "NO DIMM", + "slot" : "DIMM_A1" + }, + { + "id" : "bank:2", + "class" : "memory", + "claimed" : true, + "handle" : "DMI:004F", + "description" : "DIMM Synchronous 2133 MHz (0.5 ns)", + "product" : "36ASF2G72PZ-2G1A2", + "vendor" : "Micron", + "physid" : "2", + "serial" : "101B654E", + "slot" : "DIMM_A2", + "width" : 64, + "clock" : 2133000000 + }, + { + "id" : "bank:3", + "class" : "memory", + "claimed" : true, + "handle" : "DMI:0051", + "description" : "DIMM Synchronous [empty]", + "product" : "NO DIMM", + "vendor" : "NO DIMM", + "physid" : "3", + "serial" : "NO DIMM", + "slot" : "DIMM_A3" + } + ] + }, + { + "id" : "memory:1", + "class" : "memory", + "claimed" : true, + "handle" : "DMI:0052", + "description" : "System Memory", + "physid" : "52", + "slot" : "System board or motherboard", + "units" : "bytes", + "size" : 34359738368, + "children" : [ + { + "id" : "bank:0", + "class" : "memory", + "claimed" : true, + "handle" : "DMI:0054", + "description" : "DIMM Synchronous 2133 MHz (0.5 ns)", + "product" : "36ASF2G72PZ-2G1A2", + "vendor" : "Micron", + "physid" : "0", + "serial" : "101B6545", + "slot" : "DIMM_A4", + "width" : 64, + "clock" : 2133000000 + }, + { + "id" : "bank:1", + "class" : "memory", + "claimed" : true, + "handle" : "DMI:0056", + "description" : "DIMM Synchronous [empty]", + "product" : "NO DIMM", + "vendor" : "NO DIMM", + "physid" : "1", + "serial" : "NO DIMM", + "slot" : "DIMM_A5" + }, + { + "id" : "bank:2", + "class" : "memory", + "claimed" : true, + "handle" : "DMI:0057", + "description" : "DIMM Synchronous 2133 MHz (0.5 ns)", + "product" : "36ASF2G72PZ-2G1A2", + "vendor" : "Micron", + "physid" : "2", + "serial" : "101B6540", + "slot" : "DIMM_A6", + "width" : 64, + "clock" : 2133000000 + }, + { + "id" : "bank:3", + "class" : "memory", + "claimed" : true, + "handle" : "DMI:0059", + "description" : "DIMM Synchronous [empty]", + "product" : "NO DIMM", + "vendor" : "NO DIMM", + "physid" : "3", + "serial" : "NO DIMM", + "slot" : "DIMM_A7" + } + ] + }, + { + "id" : "memory:4", + "class" : "memory", + "physid" : "1" + }, + { + "id" : "memory:5", + "class" : "memory", + "physid" : "2" + } + ] + } + ] +} +""", "") + LSHW_JSON_OUTPUT_ARM64 = (""" { "id" : "debian", diff --git a/ironic_python_agent/tests/unit/test_hardware.py b/ironic_python_agent/tests/unit/test_hardware.py index 4135985e..ad3a8f65 100644 --- a/ironic_python_agent/tests/unit/test_hardware.py +++ b/ironic_python_agent/tests/unit/test_hardware.py @@ -1048,6 +1048,16 @@ class TestGenericHardwareManager(base.IronicAgentTest): @mock.patch('psutil.virtual_memory', autospec=True) @mock.patch.object(utils, 'execute', autospec=True) + def test_get_memory_psutil_bank_size(self, mocked_execute, mocked_psutil): + mocked_psutil.return_value.total = 3952 * 1024 * 1024 + mocked_execute.return_value = hws.LSHW_JSON_OUTPUT_NO_MEMORY_BANK_SIZE + mem = self.hardware.get_memory() + + self.assertEqual(3952 * 1024 * 1024, mem.total) + self.assertEqual(65536, mem.physical_mb) + + @mock.patch('psutil.virtual_memory', autospec=True) + @mock.patch.object(utils, 'execute', autospec=True) def test_get_memory_psutil_exception_v1(self, mocked_execute, mocked_psutil): mocked_execute.return_value = hws.LSHW_JSON_OUTPUT_V1 |
