Ironic: report node.resource_class

Bump API microversion and expose this up to the resource tracker.

Change-Id: Ie0f1e7b04cefc0d4656dce7ade81b5148f528dc5
Partial-Bug: #1604916
This commit is contained in:
Jim Rollenhagen 2016-07-20 22:39:46 +00:00
parent c1e739c607
commit 7b8195a8a8
6 changed files with 14 additions and 6 deletions

View File

@ -74,7 +74,7 @@ class IronicClientWrapperTestCase(test.NoDBTestCase):
'ironic_url': CONF.ironic.api_endpoint,
'max_retries': CONF.ironic.api_max_retries,
'retry_interval': CONF.ironic.api_retry_interval,
'os_ironic_api_version': '1.20'}
'os_ironic_api_version': '1.21'}
mock_ir_cli.assert_called_once_with(1, **expected)
@mock.patch.object(ironic_client, 'get_client')
@ -87,7 +87,7 @@ class IronicClientWrapperTestCase(test.NoDBTestCase):
'ironic_url': CONF.ironic.api_endpoint,
'max_retries': CONF.ironic.api_max_retries,
'retry_interval': CONF.ironic.api_retry_interval,
'os_ironic_api_version': '1.20'}
'os_ironic_api_version': '1.21'}
mock_ir_cli.assert_called_once_with(1, **expected)
@mock.patch.object(ironic_client, 'get_client')
@ -101,7 +101,7 @@ class IronicClientWrapperTestCase(test.NoDBTestCase):
'ironic_url': CONF.ironic.api_endpoint,
'max_retries': CONF.ironic.api_max_retries,
'retry_interval': CONF.ironic.api_retry_interval,
'os_ironic_api_version': '1.20',
'os_ironic_api_version': '1.21',
'os_cacert': 'fake-cafile',
'ca_file': 'fake-cafile'}
mock_ir_cli.assert_called_once_with(1, **expected)

View File

@ -254,7 +254,8 @@ class IronicDriverTestCase(test.NoDBTestCase):
node = ironic_utils.get_test_node(uuid=node_uuid,
instance_uuid=self.instance_uuid,
instance_info=instance_info,
properties=props)
properties=props,
resource_class='foo')
result = self.driver._node_resource(node)
@ -266,7 +267,7 @@ class IronicDriverTestCase(test.NoDBTestCase):
"disk_available_least",
"supported_instances",
"stats",
"numa_topology"]
"numa_topology", "resource_class"]
wantkeys.sort()
gotkeys = result.keys()
gotkeys.sort()
@ -287,6 +288,7 @@ class IronicDriverTestCase(test.NoDBTestCase):
self.assertEqual(node_uuid, result['hypervisor_hostname'])
self.assertEqual(stats, result['stats'])
self.assertEqual('foo', result['resource_class'])
self.assertIsNone(result['numa_topology'])
def test__node_resource(self):

View File

@ -46,6 +46,7 @@ def get_test_node(**kw):
'reservation': kw.get('reservation'),
'maintenance': kw.get('maintenance', False),
'network_interface': kw.get('network_interface'),
'resource_class': kw.get('resource_class'),
'extra': kw.get('extra', {}),
'updated_at': kw.get('created_at'),
'created_at': kw.get('updated_at')})()

View File

@ -29,7 +29,7 @@ CONF = cfg.CONF
ironic = None
# The API version required by the Ironic driver
IRONIC_API_VERSION = (1, 20)
IRONIC_API_VERSION = (1, 21)
class IronicClientWrapper(object):

View File

@ -322,6 +322,7 @@ class IronicDriver(virt_driver.ComputeDriver):
'hypervisor_hostname': str(node.uuid),
'hypervisor_type': self._get_hypervisor_type(),
'hypervisor_version': self._get_hypervisor_version(),
'resource_class': node.resource_class,
# The Ironic driver manages multiple hosts, so there are
# likely many different CPU models in use. As such it is
# impossible to provide any meaningful info on the CPU

View File

@ -0,0 +1,4 @@
---
upgrade:
- The ironic driver now requires python-ironicclient>=1.6.0,
and requires the ironic service to support API version 1.21.