diff --git a/scciclient/irmc/scci.py b/scciclient/irmc/scci.py index a9f614e..5079f0f 100644 --- a/scciclient/irmc/scci.py +++ b/scciclient/irmc/scci.py @@ -477,7 +477,8 @@ def get_essential_properties(report, prop_keys): [int(int(size.text) / 1000) for size in report.findall('.//PhysicalDrive/PhysicalSize')]) v['cpus'] = sum([int(cpu.find('./CoreNumber').text) - for cpu in report.find('./System/Processor')]) + for cpu in report.find('./System/Processor') + if cpu.find('./CoreNumber') is not None]) # v['cpus'] = sum([int(cpu.find('./LogicalCpuNumber').text) # for cpu in report.find('./System/Processor')]) v['cpu_arch'] = 'x86_64' diff --git a/scciclient/tests/irmc/fixtures/irmc_report_ng.xml b/scciclient/tests/irmc/fixtures/irmc_report_ng.xml index 313e02e..14658f3 100644 --- a/scciclient/tests/irmc/fixtures/irmc_report_ng.xml +++ b/scciclient/tests/irmc/fixtures/irmc_report_ng.xml @@ -85,6 +85,10 @@ 2048 20480 + + CPU2 + 0 + 8192 diff --git a/scciclient/tests/irmc/test_scci.py b/scciclient/tests/irmc/test_scci.py index bfbe458..ae958c3 100644 --- a/scciclient/tests/irmc/test_scci.py +++ b/scciclient/tests/irmc/test_scci.py @@ -672,3 +672,16 @@ class SCCITestCase(testtools.TestCase): self.report_ok_xml, ESSENTIAL_PROPERTIES_KEYS) self.assertEqual(expected, result) + + def test_get_essential_properties_empty_cpu_socket(self): + ESSENTIAL_PROPERTIES_KEYS = { + 'memory_mb', 'local_gb', 'cpus', 'cpu_arch'} + expected = {'memory_mb': 8192, + 'local_gb': 190, + 'cpus': 16, + 'cpu_arch': 'x86_64'} + + result = scci.get_essential_properties( + self.report_ng_xml, ESSENTIAL_PROPERTIES_KEYS) + + self.assertEqual(expected, result)