summaryrefslogtreecommitdiff
path: root/ironic_python_agent/hardware.py
diff options
context:
space:
mode:
authorZuul <zuul@review.opendev.org>2019-05-30 21:50:29 +0000
committerGerrit Code Review <review@openstack.org>2019-05-30 21:50:29 +0000
commit78ba0d1c30776607c1563bae847c062622ff12b7 (patch)
tree589faf349b570e0b1300bbade96596231381cb9d /ironic_python_agent/hardware.py
parent4f03661f6878c1e5103683fa496202b166b3cf08 (diff)
parent8fc63adaf87d76928530efa95864d519f827a297 (diff)
downloadironic-python-agent-3.3.2.tar.gz
Merge "Ironic python agent does not extract correct available memory" into stable/rocky3.3.2
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')