Merge "Use driver_internal_info methods for ilo driver"
This commit is contained in:
commit
b600cb8b5f
@ -100,13 +100,11 @@ class IloBIOS(base.BIOSInterface):
|
|||||||
|
|
||||||
deploy_utils.set_async_step_flags(node, reboot=True,
|
deploy_utils.set_async_step_flags(node, reboot=True,
|
||||||
skip_current_step=False)
|
skip_current_step=False)
|
||||||
driver_internal_info = node.driver_internal_info
|
|
||||||
if step == 'apply_configuration':
|
if step == 'apply_configuration':
|
||||||
driver_internal_info['apply_bios'] = True
|
node.set_driver_internal_info('apply_bios', True)
|
||||||
else:
|
else:
|
||||||
driver_internal_info['reset_bios'] = True
|
node.set_driver_internal_info('reset_bios', True)
|
||||||
|
|
||||||
node.driver_internal_info = driver_internal_info
|
|
||||||
node.save()
|
node.save()
|
||||||
return return_state
|
return return_state
|
||||||
|
|
||||||
@ -122,11 +120,9 @@ class IloBIOS(base.BIOSInterface):
|
|||||||
"""
|
"""
|
||||||
node = task.node
|
node = task.node
|
||||||
|
|
||||||
driver_internal_info = node.driver_internal_info
|
node.del_driver_internal_info('apply_bios')
|
||||||
driver_internal_info.pop('apply_bios', None)
|
node.del_driver_internal_info('reset_bios')
|
||||||
driver_internal_info.pop('reset_bios', None)
|
node.save()
|
||||||
task.node.driver_internal_info = driver_internal_info
|
|
||||||
task.node.save()
|
|
||||||
|
|
||||||
if step not in ('apply_configuration', 'factory_reset'):
|
if step not in ('apply_configuration', 'factory_reset'):
|
||||||
errmsg = (_('Could not find the step %(step)s for the '
|
errmsg = (_('Could not find the step %(step)s for the '
|
||||||
@ -174,11 +170,10 @@ class IloBIOS(base.BIOSInterface):
|
|||||||
|
|
||||||
"""
|
"""
|
||||||
node = task.node
|
node = task.node
|
||||||
driver_internal_info = node.driver_internal_info
|
|
||||||
data = {}
|
data = {}
|
||||||
for setting in settings:
|
for setting in settings:
|
||||||
data.update({setting['name']: setting['value']})
|
data.update({setting['name']: setting['value']})
|
||||||
if not driver_internal_info.get('apply_bios'):
|
if not node.driver_internal_info.get('apply_bios'):
|
||||||
return self._execute_pre_boot_bios_step(
|
return self._execute_pre_boot_bios_step(
|
||||||
task, 'apply_configuration', data)
|
task, 'apply_configuration', data)
|
||||||
else:
|
else:
|
||||||
@ -198,9 +193,8 @@ class IloBIOS(base.BIOSInterface):
|
|||||||
|
|
||||||
"""
|
"""
|
||||||
node = task.node
|
node = task.node
|
||||||
driver_internal_info = node.driver_internal_info
|
|
||||||
|
|
||||||
if not driver_internal_info.get('reset_bios'):
|
if not node.driver_internal_info.get('reset_bios'):
|
||||||
return self._execute_pre_boot_bios_step(task, 'factory_reset')
|
return self._execute_pre_boot_bios_step(task, 'factory_reset')
|
||||||
else:
|
else:
|
||||||
return self._execute_post_boot_bios_step(task, 'factory_reset')
|
return self._execute_post_boot_bios_step(task, 'factory_reset')
|
||||||
|
@ -288,9 +288,7 @@ def prepare_node_for_deploy(task):
|
|||||||
# not provided.
|
# not provided.
|
||||||
# Since secure boot was disabled, we are in 'uefi' boot mode.
|
# Since secure boot was disabled, we are in 'uefi' boot mode.
|
||||||
if boot_mode_utils.get_boot_mode_for_deploy(task.node) is None:
|
if boot_mode_utils.get_boot_mode_for_deploy(task.node) is None:
|
||||||
driver_internal_info = task.node.driver_internal_info
|
task.node.set_driver_internal_info('deploy_boot_mode', 'uefi')
|
||||||
driver_internal_info['deploy_boot_mode'] = 'uefi'
|
|
||||||
task.node.driver_internal_info = driver_internal_info
|
|
||||||
task.node.save()
|
task.node.save()
|
||||||
|
|
||||||
|
|
||||||
@ -458,9 +456,7 @@ class IloVirtualMediaBoot(base.BootInterface):
|
|||||||
# It will set iSCSI info onto iLO
|
# It will set iSCSI info onto iLO
|
||||||
if boot_mode == 'uefi':
|
if boot_mode == 'uefi':
|
||||||
# Need to set 'ilo_uefi_iscsi_boot' param for clean up
|
# Need to set 'ilo_uefi_iscsi_boot' param for clean up
|
||||||
driver_internal_info = task.node.driver_internal_info
|
task.node.set_driver_internal_info('ilo_uefi_iscsi_boot', True)
|
||||||
driver_internal_info['ilo_uefi_iscsi_boot'] = True
|
|
||||||
task.node.driver_internal_info = driver_internal_info
|
|
||||||
task.node.save()
|
task.node.save()
|
||||||
task.driver.management.set_iscsi_boot_target(task)
|
task.driver.management.set_iscsi_boot_target(task)
|
||||||
manager_utils.node_set_boot_device(
|
manager_utils.node_set_boot_device(
|
||||||
@ -516,9 +512,7 @@ class IloVirtualMediaBoot(base.BootInterface):
|
|||||||
and task.node.driver_internal_info.get('ilo_uefi_iscsi_boot')):
|
and task.node.driver_internal_info.get('ilo_uefi_iscsi_boot')):
|
||||||
# It will clear iSCSI info from iLO
|
# It will clear iSCSI info from iLO
|
||||||
task.driver.management.clear_iscsi_boot_target(task)
|
task.driver.management.clear_iscsi_boot_target(task)
|
||||||
driver_internal_info = task.node.driver_internal_info
|
task.node.del_driver_internal_info('ilo_uefi_iscsi_boot')
|
||||||
driver_internal_info.pop('ilo_uefi_iscsi_boot', None)
|
|
||||||
task.node.driver_internal_info = driver_internal_info
|
|
||||||
task.node.save()
|
task.node.save()
|
||||||
else:
|
else:
|
||||||
image_utils.cleanup_iso_image(task)
|
image_utils.cleanup_iso_image(task)
|
||||||
@ -626,9 +620,7 @@ class IloPXEBoot(pxe.PXEBoot):
|
|||||||
# Need to enable secure boot, if being requested
|
# Need to enable secure boot, if being requested
|
||||||
boot_mode_utils.configure_secure_boot_if_needed(task)
|
boot_mode_utils.configure_secure_boot_if_needed(task)
|
||||||
# Need to set 'ilo_uefi_iscsi_boot' param for clean up
|
# Need to set 'ilo_uefi_iscsi_boot' param for clean up
|
||||||
driver_internal_info = task.node.driver_internal_info
|
task.node.set_driver_internal_info('ilo_uefi_iscsi_boot', True)
|
||||||
driver_internal_info['ilo_uefi_iscsi_boot'] = True
|
|
||||||
task.node.driver_internal_info = driver_internal_info
|
|
||||||
task.node.save()
|
task.node.save()
|
||||||
# It will set iSCSI info onto iLO
|
# It will set iSCSI info onto iLO
|
||||||
task.driver.management.set_iscsi_boot_target(task)
|
task.driver.management.set_iscsi_boot_target(task)
|
||||||
@ -654,7 +646,6 @@ class IloPXEBoot(pxe.PXEBoot):
|
|||||||
:raises: IloOperationError, if some operation on iLO failed.
|
:raises: IloOperationError, if some operation on iLO failed.
|
||||||
"""
|
"""
|
||||||
manager_utils.node_power_action(task, states.POWER_OFF)
|
manager_utils.node_power_action(task, states.POWER_OFF)
|
||||||
driver_internal_info = task.node.driver_internal_info
|
|
||||||
|
|
||||||
if (deploy_utils.is_iscsi_boot(task)
|
if (deploy_utils.is_iscsi_boot(task)
|
||||||
and task.node.driver_internal_info.get('ilo_uefi_iscsi_boot')):
|
and task.node.driver_internal_info.get('ilo_uefi_iscsi_boot')):
|
||||||
@ -662,8 +653,7 @@ class IloPXEBoot(pxe.PXEBoot):
|
|||||||
# It will clear iSCSI info from iLO in case of booting from
|
# It will clear iSCSI info from iLO in case of booting from
|
||||||
# volume in UEFI boot mode
|
# volume in UEFI boot mode
|
||||||
task.driver.management.clear_iscsi_boot_target(task)
|
task.driver.management.clear_iscsi_boot_target(task)
|
||||||
driver_internal_info.pop('ilo_uefi_iscsi_boot', None)
|
task.node.del_driver_internal_info('ilo_uefi_iscsi_boot')
|
||||||
task.node.driver_internal_info = driver_internal_info
|
|
||||||
task.node.save()
|
task.node.save()
|
||||||
else:
|
else:
|
||||||
# Volume boot in BIOS boot mode is handled using
|
# Volume boot in BIOS boot mode is handled using
|
||||||
@ -723,9 +713,7 @@ class IloiPXEBoot(ipxe.iPXEBoot):
|
|||||||
# Need to enable secure boot, if being requested
|
# Need to enable secure boot, if being requested
|
||||||
boot_mode_utils.configure_secure_boot_if_needed(task)
|
boot_mode_utils.configure_secure_boot_if_needed(task)
|
||||||
# Need to set 'ilo_uefi_iscsi_boot' param for clean up
|
# Need to set 'ilo_uefi_iscsi_boot' param for clean up
|
||||||
driver_internal_info = task.node.driver_internal_info
|
task.node.set_driver_internal_info('ilo_uefi_iscsi_boot', True)
|
||||||
driver_internal_info['ilo_uefi_iscsi_boot'] = True
|
|
||||||
task.node.driver_internal_info = driver_internal_info
|
|
||||||
task.node.save()
|
task.node.save()
|
||||||
# It will set iSCSI info onto iLO
|
# It will set iSCSI info onto iLO
|
||||||
task.driver.management.set_iscsi_boot_target(task)
|
task.driver.management.set_iscsi_boot_target(task)
|
||||||
@ -751,7 +739,6 @@ class IloiPXEBoot(ipxe.iPXEBoot):
|
|||||||
:raises: IloOperationError, if some operation on iLO failed.
|
:raises: IloOperationError, if some operation on iLO failed.
|
||||||
"""
|
"""
|
||||||
manager_utils.node_power_action(task, states.POWER_OFF)
|
manager_utils.node_power_action(task, states.POWER_OFF)
|
||||||
driver_internal_info = task.node.driver_internal_info
|
|
||||||
|
|
||||||
if (deploy_utils.is_iscsi_boot(task)
|
if (deploy_utils.is_iscsi_boot(task)
|
||||||
and task.node.driver_internal_info.get('ilo_uefi_iscsi_boot')):
|
and task.node.driver_internal_info.get('ilo_uefi_iscsi_boot')):
|
||||||
@ -759,8 +746,7 @@ class IloiPXEBoot(ipxe.iPXEBoot):
|
|||||||
# It will clear iSCSI info from iLO in case of booting from
|
# It will clear iSCSI info from iLO in case of booting from
|
||||||
# volume in UEFI boot mode
|
# volume in UEFI boot mode
|
||||||
task.driver.management.clear_iscsi_boot_target(task)
|
task.driver.management.clear_iscsi_boot_target(task)
|
||||||
driver_internal_info.pop('ilo_uefi_iscsi_boot', None)
|
task.node.del_driver_internal_info('ilo_uefi_iscsi_boot')
|
||||||
task.node.driver_internal_info = driver_internal_info
|
|
||||||
task.node.save()
|
task.node.save()
|
||||||
else:
|
else:
|
||||||
# Volume boot in BIOS boot mode is handled using
|
# Volume boot in BIOS boot mode is handled using
|
||||||
|
@ -637,9 +637,7 @@ def update_boot_mode(task):
|
|||||||
# No boot mode found. Check if default_boot_mode is defined
|
# No boot mode found. Check if default_boot_mode is defined
|
||||||
if not boot_mode and (CONF.ilo.default_boot_mode in ['bios', 'uefi']):
|
if not boot_mode and (CONF.ilo.default_boot_mode in ['bios', 'uefi']):
|
||||||
boot_mode = CONF.ilo.default_boot_mode
|
boot_mode = CONF.ilo.default_boot_mode
|
||||||
driver_internal_info = node.driver_internal_info
|
node.set_driver_internal_info('deploy_boot_mode', boot_mode)
|
||||||
driver_internal_info['deploy_boot_mode'] = boot_mode
|
|
||||||
node.driver_internal_info = driver_internal_info
|
|
||||||
node.save()
|
node.save()
|
||||||
|
|
||||||
# Boot mode is computed, setting it for the deploy
|
# Boot mode is computed, setting it for the deploy
|
||||||
@ -679,9 +677,7 @@ def update_boot_mode(task):
|
|||||||
"as pending boot mode is unknown.",
|
"as pending boot mode is unknown.",
|
||||||
{'uuid': node.uuid, 'boot_mode': boot_mode})
|
{'uuid': node.uuid, 'boot_mode': boot_mode})
|
||||||
|
|
||||||
driver_internal_info = node.driver_internal_info
|
node.set_driver_internal_info('deploy_boot_mode', boot_mode)
|
||||||
driver_internal_info['deploy_boot_mode'] = boot_mode
|
|
||||||
node.driver_internal_info = driver_internal_info
|
|
||||||
node.save()
|
node.save()
|
||||||
|
|
||||||
|
|
||||||
|
@ -951,17 +951,13 @@ class IloManagement(base.ManagementInterface):
|
|||||||
class Ilo5Management(IloManagement):
|
class Ilo5Management(IloManagement):
|
||||||
|
|
||||||
def _set_driver_internal_value(self, task, value, *keys):
|
def _set_driver_internal_value(self, task, value, *keys):
|
||||||
driver_internal_info = task.node.driver_internal_info
|
|
||||||
for key in keys:
|
for key in keys:
|
||||||
driver_internal_info[key] = value
|
task.node.set_driver_internal_info(key, value)
|
||||||
task.node.driver_internal_info = driver_internal_info
|
|
||||||
task.node.save()
|
task.node.save()
|
||||||
|
|
||||||
def _pop_driver_internal_values(self, task, *keys):
|
def _pop_driver_internal_values(self, task, *keys):
|
||||||
driver_internal_info = task.node.driver_internal_info
|
|
||||||
for key in keys:
|
for key in keys:
|
||||||
driver_internal_info.pop(key, None)
|
task.node.del_driver_internal_info(key)
|
||||||
task.node.driver_internal_info = driver_internal_info
|
|
||||||
task.node.save()
|
task.node.save()
|
||||||
|
|
||||||
def _wait_for_disk_erase_status(self, node):
|
def _wait_for_disk_erase_status(self, node):
|
||||||
@ -1041,7 +1037,6 @@ class Ilo5Management(IloManagement):
|
|||||||
{'hdd': 'overwrite', 'ssd': 'block'})
|
{'hdd': 'overwrite', 'ssd': 'block'})
|
||||||
node = task.node
|
node = task.node
|
||||||
self._validate_erase_pattern(erase_pattern, node)
|
self._validate_erase_pattern(erase_pattern, node)
|
||||||
driver_internal_info = node.driver_internal_info
|
|
||||||
LOG.debug("Calling out-of-band sanitize disk erase for node %(node)s",
|
LOG.debug("Calling out-of-band sanitize disk erase for node %(node)s",
|
||||||
{'node': node.uuid})
|
{'node': node.uuid})
|
||||||
try:
|
try:
|
||||||
@ -1056,7 +1051,7 @@ class Ilo5Management(IloManagement):
|
|||||||
# First disk-erase will execute for HDD's and after reboot only
|
# First disk-erase will execute for HDD's and after reboot only
|
||||||
# try for SSD, since both share same redfish api and would be
|
# try for SSD, since both share same redfish api and would be
|
||||||
# overwritten.
|
# overwritten.
|
||||||
if not driver_internal_info.get(
|
if not node.driver_internal_info.get(
|
||||||
'ilo_disk_erase_hdd_check') and ('HDD' in disk_types):
|
'ilo_disk_erase_hdd_check') and ('HDD' in disk_types):
|
||||||
ilo_object.do_disk_erase('HDD', erase_pattern.get('hdd'))
|
ilo_object.do_disk_erase('HDD', erase_pattern.get('hdd'))
|
||||||
self._set_driver_internal_value(
|
self._set_driver_internal_value(
|
||||||
@ -1066,7 +1061,7 @@ class Ilo5Management(IloManagement):
|
|||||||
task, False, 'skip_current_clean_step')
|
task, False, 'skip_current_clean_step')
|
||||||
return deploy_utils.reboot_to_finish_step(task)
|
return deploy_utils.reboot_to_finish_step(task)
|
||||||
|
|
||||||
if not driver_internal_info.get(
|
if not node.driver_internal_info.get(
|
||||||
'ilo_disk_erase_ssd_check') and ('SSD' in disk_types):
|
'ilo_disk_erase_ssd_check') and ('SSD' in disk_types):
|
||||||
ilo_object.do_disk_erase('SSD', erase_pattern.get('ssd'))
|
ilo_object.do_disk_erase('SSD', erase_pattern.get('ssd'))
|
||||||
self._set_driver_internal_value(
|
self._set_driver_internal_value(
|
||||||
@ -1145,14 +1140,12 @@ class Ilo5Management(IloManagement):
|
|||||||
:raises: InstanceDeployFailure, on failure to execute of deploy step.
|
:raises: InstanceDeployFailure, on failure to execute of deploy step.
|
||||||
"""
|
"""
|
||||||
node = task.node
|
node = task.node
|
||||||
driver_internal_info = node.driver_internal_info
|
|
||||||
|
|
||||||
if driver_internal_info.get('clear_ca_certs_flag'):
|
if node.driver_internal_info.get('clear_ca_certs_flag'):
|
||||||
# NOTE(vmud213): Clear the flag and do nothing as this flow
|
# NOTE(vmud213): Clear the flag and do nothing as this flow
|
||||||
# is part of the reboot required by the clean step that is
|
# is part of the reboot required by the clean step that is
|
||||||
# already executed.
|
# already executed.
|
||||||
driver_internal_info.pop('clear_ca_certs_flag', None)
|
node.del_driver_internal_info('clear_ca_certs_flag')
|
||||||
node.driver_internal_info = driver_internal_info
|
|
||||||
node.save()
|
node.save()
|
||||||
return
|
return
|
||||||
|
|
||||||
@ -1167,8 +1160,7 @@ class Ilo5Management(IloManagement):
|
|||||||
raise exception.NodeCleaningFailure(msg)
|
raise exception.NodeCleaningFailure(msg)
|
||||||
raise exception.InstanceDeployFailure(msg)
|
raise exception.InstanceDeployFailure(msg)
|
||||||
|
|
||||||
driver_internal_info['clear_ca_certs_flag'] = True
|
node.set_driver_internal_info('clear_ca_certs_flag', True)
|
||||||
node.driver_internal_info = driver_internal_info
|
|
||||||
node.save()
|
node.save()
|
||||||
|
|
||||||
deploy_opts = deploy_utils.build_agent_options(task.node)
|
deploy_opts = deploy_utils.build_agent_options(task.node)
|
||||||
|
@ -78,24 +78,18 @@ class Ilo5RAID(base.RAIDInterface):
|
|||||||
manager_utils.cleaning_error_handler(task, log_msg, errmsg=msg)
|
manager_utils.cleaning_error_handler(task, log_msg, errmsg=msg)
|
||||||
|
|
||||||
def _set_driver_internal_true_value(self, task, *keys):
|
def _set_driver_internal_true_value(self, task, *keys):
|
||||||
driver_internal_info = task.node.driver_internal_info
|
|
||||||
for key in keys:
|
for key in keys:
|
||||||
driver_internal_info[key] = True
|
task.node.set_driver_internal_info(key, True)
|
||||||
task.node.driver_internal_info = driver_internal_info
|
|
||||||
task.node.save()
|
task.node.save()
|
||||||
|
|
||||||
def _set_driver_internal_false_value(self, task, *keys):
|
def _set_driver_internal_false_value(self, task, *keys):
|
||||||
driver_internal_info = task.node.driver_internal_info
|
|
||||||
for key in keys:
|
for key in keys:
|
||||||
driver_internal_info[key] = False
|
task.node.set_driver_internal_info(key, False)
|
||||||
task.node.driver_internal_info = driver_internal_info
|
|
||||||
task.node.save()
|
task.node.save()
|
||||||
|
|
||||||
def _pop_driver_internal_values(self, task, *keys):
|
def _pop_driver_internal_values(self, task, *keys):
|
||||||
driver_internal_info = task.node.driver_internal_info
|
|
||||||
for key in keys:
|
for key in keys:
|
||||||
driver_internal_info.pop(key, None)
|
task.node.del_driver_internal_info(key)
|
||||||
task.node.driver_internal_info = driver_internal_info
|
|
||||||
task.node.save()
|
task.node.save()
|
||||||
|
|
||||||
def _prepare_for_read_raid(self, task, raid_step):
|
def _prepare_for_read_raid(self, task, raid_step):
|
||||||
@ -157,9 +151,8 @@ class Ilo5RAID(base.RAIDInterface):
|
|||||||
target_raid_config = raid.filter_target_raid_config(
|
target_raid_config = raid.filter_target_raid_config(
|
||||||
node, create_root_volume=create_root_volume,
|
node, create_root_volume=create_root_volume,
|
||||||
create_nonroot_volumes=create_nonroot_volumes)
|
create_nonroot_volumes=create_nonroot_volumes)
|
||||||
driver_internal_info = node.driver_internal_info
|
node.set_driver_internal_info('target_raid_config',
|
||||||
driver_internal_info['target_raid_config'] = target_raid_config
|
target_raid_config)
|
||||||
node.driver_internal_info = driver_internal_info
|
|
||||||
node.save()
|
node.save()
|
||||||
LOG.debug("Calling OOB RAID create_configuration for node %(node)s "
|
LOG.debug("Calling OOB RAID create_configuration for node %(node)s "
|
||||||
"with the following target RAID configuration: %(target)s",
|
"with the following target RAID configuration: %(target)s",
|
||||||
@ -168,7 +161,8 @@ class Ilo5RAID(base.RAIDInterface):
|
|||||||
|
|
||||||
try:
|
try:
|
||||||
# Raid configuration in progress, checking status
|
# Raid configuration in progress, checking status
|
||||||
if not driver_internal_info.get('ilo_raid_create_in_progress'):
|
if not node.driver_internal_info.get(
|
||||||
|
'ilo_raid_create_in_progress'):
|
||||||
ilo_object.create_raid_configuration(target_raid_config)
|
ilo_object.create_raid_configuration(target_raid_config)
|
||||||
self._prepare_for_read_raid(task, 'create_raid')
|
self._prepare_for_read_raid(task, 'create_raid')
|
||||||
return deploy_utils.get_async_step_return_state(node)
|
return deploy_utils.get_async_step_return_state(node)
|
||||||
@ -221,12 +215,12 @@ class Ilo5RAID(base.RAIDInterface):
|
|||||||
node = task.node
|
node = task.node
|
||||||
LOG.debug("OOB RAID delete_configuration invoked for node %s.",
|
LOG.debug("OOB RAID delete_configuration invoked for node %s.",
|
||||||
node.uuid)
|
node.uuid)
|
||||||
driver_internal_info = node.driver_internal_info
|
|
||||||
ilo_object = ilo_common.get_ilo_object(node)
|
ilo_object = ilo_common.get_ilo_object(node)
|
||||||
|
|
||||||
try:
|
try:
|
||||||
# Raid configuration in progress, checking status
|
# Raid configuration in progress, checking status
|
||||||
if not driver_internal_info.get('ilo_raid_delete_in_progress'):
|
if not node.driver_internal_info.get(
|
||||||
|
'ilo_raid_delete_in_progress'):
|
||||||
ilo_object.delete_raid_configuration()
|
ilo_object.delete_raid_configuration()
|
||||||
self._prepare_for_read_raid(task, 'delete_raid')
|
self._prepare_for_read_raid(task, 'delete_raid')
|
||||||
return deploy_utils.get_async_step_return_state(node)
|
return deploy_utils.get_async_step_return_state(node)
|
||||||
|
Loading…
Reference in New Issue
Block a user