diff options
author | Rachit7194 <kapadiarachit007@gmail.com> | 2019-02-27 10:11:43 -0500 |
---|---|---|
committer | Rachit7194 <kapadiarachit007@gmail.com> | 2019-03-16 05:15:22 -0400 |
commit | a79b150ea7ef305a095b7a22f3a46a7b84a98c4a (patch) | |
tree | d027cd0f357da1866307d9b6a5f400b145560be1 | |
parent | a52f615d92a352f8ebc583c75fcfc1563d456bbc (diff) | |
download | ironic-a79b150ea7ef305a095b7a22f3a46a7b84a98c4a.tar.gz |
Set boot_mode in node properties during OOB Introspection
During OOB Introspection, it adds boot mode as capability
in node properties so that after preparation of overcloud
nodes it will show which node has uefi or bios boot mode
properties respectively.
Change-Id: Iad8060fa13e37a2fa78d998c56d132b11ff948cf
Story: 2005119
-rw-r--r-- | ironic/drivers/modules/drac/inspect.py | 9 | ||||
-rw-r--r-- | ironic/tests/unit/drivers/modules/drac/test_inspect.py | 11 | ||||
-rw-r--r-- | releasenotes/notes/set-boot-mode-4c42b3fd0b5f5b37.yaml | 5 |
3 files changed, 22 insertions, 3 deletions
diff --git a/ironic/drivers/modules/drac/inspect.py b/ironic/drivers/modules/drac/inspect.py index b452da6b0..a8e5a6cde 100644 --- a/ironic/drivers/modules/drac/inspect.py +++ b/ironic/drivers/modules/drac/inspect.py @@ -23,6 +23,7 @@ from oslo_utils import units from ironic.common import exception from ironic.common.i18n import _ from ironic.common import states +from ironic.common import utils from ironic.drivers import base from ironic.drivers.modules.drac import common as drac_common from ironic import objects @@ -84,6 +85,14 @@ class DracInspect(base.InspectInterface): [self._calculate_cpus(cpu) for cpu in cpus]) properties['cpu_arch'] = 'x86_64' if cpus[0].arch64 else 'x86' + bios_settings = client.list_bios_settings() + current_capabilities = node.properties.get('capabilities', '') + new_capabilities = { + 'boot_mode': bios_settings["BootMode"].current_value.lower()} + capabilties = utils.get_updated_capabilities(current_capabilities, + new_capabilities) + properties['capabilities'] = capabilties + virtual_disks = client.list_virtual_disks() root_disk = self._guess_root_disk(virtual_disks) if root_disk: diff --git a/ironic/tests/unit/drivers/modules/drac/test_inspect.py b/ironic/tests/unit/drivers/modules/drac/test_inspect.py index 9ab83939f..e76b351f2 100644 --- a/ironic/tests/unit/drivers/modules/drac/test_inspect.py +++ b/ironic/tests/unit/drivers/modules/drac/test_inspect.py @@ -159,7 +159,8 @@ class DracInspectionTestCase(test_utils.BaseDracTest): 'memory_mb': 32768, 'local_gb': 1116, 'cpus': 18, - 'cpu_arch': 'x86_64'} + 'cpu_arch': 'x86_64', + 'capabilities': 'boot_mode:uefi'} mock_client = mock.Mock() mock_get_drac_client.return_value = mock_client mock_client.list_memory.return_value = self.memory @@ -188,6 +189,7 @@ class DracInspectionTestCase(test_utils.BaseDracTest): mock_client.list_cpus.return_value = self.cpus mock_client.list_virtual_disks.side_effect = ( drac_exceptions.BaseClientException('boom')) + mock_client.list_bios_settings.return_value = self.bios_boot_settings with task_manager.acquire(self.context, self.node.uuid, shared=True) as task: @@ -203,7 +205,8 @@ class DracInspectionTestCase(test_utils.BaseDracTest): 'memory_mb': 32768, 'local_gb': 279, 'cpus': 18, - 'cpu_arch': 'x86_64'} + 'cpu_arch': 'x86_64', + 'capabilities': 'boot_mode:uefi'} mock_client = mock.Mock() mock_get_drac_client.return_value = mock_client mock_client.list_memory.return_value = self.memory @@ -234,6 +237,7 @@ class DracInspectionTestCase(test_utils.BaseDracTest): mock_client.list_virtual_disks.return_value = [] mock_client.list_physical_disks.return_value = self.physical_disks mock_client.list_nics.return_value = self.nics + mock_client.list_bios_settings.return_value = self.uefi_boot_settings with task_manager.acquire(self.context, self.node.uuid, shared=True) as task: @@ -249,7 +253,8 @@ class DracInspectionTestCase(test_utils.BaseDracTest): 'memory_mb': 32768, 'local_gb': 1116, 'cpus': 18, - 'cpu_arch': 'x86_64'} + 'cpu_arch': 'x86_64', + 'capabilities': 'boot_mode:uefi'} mock_client = mock.Mock() mock_get_drac_client.return_value = mock_client mock_client.list_memory.return_value = self.memory diff --git a/releasenotes/notes/set-boot-mode-4c42b3fd0b5f5b37.yaml b/releasenotes/notes/set-boot-mode-4c42b3fd0b5f5b37.yaml new file mode 100644 index 000000000..2345d9379 --- /dev/null +++ b/releasenotes/notes/set-boot-mode-4c42b3fd0b5f5b37.yaml @@ -0,0 +1,5 @@ +--- +features: + - | + Set boot_mode in node properties during OOB Introspection + for ``idrac`` hardware type. |