Do not require scheduling attributes in ramdisk

Discovery data might be used for other things as well, like ready-state
orchestration.

Change-Id: Ifc9089ea6af634e2b0ab6b771d156d346bf43383
This commit is contained in:
Imre Farkas 2015-05-27 17:07:03 +02:00
parent d6404d2f99
commit 63900414ba
2 changed files with 16 additions and 6 deletions

View File

@ -156,14 +156,14 @@ def discover_scheduling_properties(data, failures):
data['memory_mb'] = total_ram data['memory_mb'] = total_ram
LOG.info('total RAM: %s MiB', total_ram) LOG.info('total RAM: %s MiB', total_ram)
else: else:
failures.add('failed to get RAM information') LOG.warn('failed to get RAM information')
for key in ('cpus', 'local_gb', 'memory_mb'): for key in ('cpus', 'local_gb', 'memory_mb'):
try: try:
data[key] = int(data[key]) data[key] = int(data[key])
except (KeyError, ValueError, TypeError): except (KeyError, ValueError, TypeError):
failures.add('value for %s is missing or malformed: %s', LOG.warn('value for %s is missing or malformed: %s',
key, data.get(key)) key, data.get(key))
data[key] = None data[key] = None
# FIXME(dtantsur): -1 is required to give Ironic some spacing for # FIXME(dtantsur): -1 is required to give Ironic some spacing for
@ -171,7 +171,7 @@ def discover_scheduling_properties(data, failures):
if data['local_gb']: if data['local_gb']:
data['local_gb'] = data['local_gb'] / 1024 / 1024 / 1024 - 1 data['local_gb'] = data['local_gb'] / 1024 / 1024 / 1024 - 1
if data['local_gb'] < 1: if data['local_gb'] < 1:
failures.add('local_gb is less than 1 GiB') LOG.warn('local_gb is less than 1 GiB')
data['local_gb'] = None data['local_gb'] = None

View File

@ -211,17 +211,27 @@ class TestDiscoverSchedulingProperties(BaseDiscoverTest):
discover.discover_scheduling_properties(self.data, self.failures) discover.discover_scheduling_properties(self.data, self.failures)
self.assertIn('failed to get RAM', self.failures.get_error()) self.assertFalse(self.failures)
self.assertEqual({'cpus': 2, 'cpu_arch': 'x86_64', 'local_gb': 4, self.assertEqual({'cpus': 2, 'cpu_arch': 'x86_64', 'local_gb': 4,
'memory_mb': None}, self.data) 'memory_mb': None}, self.data)
def test_no_local_gb(self, mock_shell):
mock_shell.side_effect = iter(('2', 'x86_64', None,
'1024\n1024\nno\n2048\n'))
discover.discover_scheduling_properties(self.data, self.failures)
self.assertFalse(self.failures)
self.assertEqual({'cpus': 2, 'cpu_arch': 'x86_64', 'local_gb': None,
'memory_mb': 4096}, self.data)
def test_local_gb_too_small(self, mock_shell): def test_local_gb_too_small(self, mock_shell):
mock_shell.side_effect = iter(('2', 'x86_64', '42', mock_shell.side_effect = iter(('2', 'x86_64', '42',
'1024\n1024\nno\n2048\n')) '1024\n1024\nno\n2048\n'))
discover.discover_scheduling_properties(self.data, self.failures) discover.discover_scheduling_properties(self.data, self.failures)
self.assertIn('local_gb is less than 1 GiB', self.failures.get_error()) self.assertFalse(self.failures)
self.assertEqual({'cpus': 2, 'cpu_arch': 'x86_64', 'local_gb': None, self.assertEqual({'cpus': 2, 'cpu_arch': 'x86_64', 'local_gb': None,
'memory_mb': 4096}, self.data) 'memory_mb': 4096}, self.data)