summaryrefslogtreecommitdiff
path: root/ironic_python_agent/hardware.py
diff options
context:
space:
mode:
Diffstat (limited to 'ironic_python_agent/hardware.py')
-rw-r--r--ironic_python_agent/hardware.py15
1 files changed, 9 insertions, 6 deletions
diff --git a/ironic_python_agent/hardware.py b/ironic_python_agent/hardware.py
index 95078da6..87f05f9c 100644
--- a/ironic_python_agent/hardware.py
+++ b/ironic_python_agent/hardware.py
@@ -17,6 +17,7 @@ import binascii
import functools
import json
import os
+import re
import shlex
import time
@@ -46,7 +47,7 @@ WARN_BIOSDEVNAME_NOT_FOUND = False
UNIT_CONVERTER = pint.UnitRegistry(filename=None)
UNIT_CONVERTER.define('bytes = []')
UNIT_CONVERTER.define('MB = 1048576 bytes')
-
+_MEMORY_ID_RE = re.compile(r'^memory(:\d+)?$')
NODE = None
@@ -706,11 +707,13 @@ class GenericHardwareManager(HardwareManager):
for sys_child in sys_dict['children']:
if sys_child['id'] == 'core':
for core_child in sys_child['children']:
- if core_child['id'] == 'memory':
- if core_child.get('size'):
- value = "%(size)s %(units)s" % core_child
- physical += int(UNIT_CONVERTER(value).to(
- 'MB').magnitude)
+ if _MEMORY_ID_RE.match(core_child['id']):
+ 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)
+
if not physical:
LOG.warning('Did not find any physical RAM')