def _do_update_firmware_sum(self, task, **kwargs): """Update the firmware using Smart Update Manager (SUM). :param task: a TaskManager object. :raises: NodeCleaningFailure or InstanceDeployFailure, on failure to execute of clean or deploy step respectively. :returns: states.CLEANWAIT or states.DEPLOYWAIT to signify the step will be completed async for clean or deploy step respectively. """ node = task.node if node.provision_state == states.DEPLOYING: step = node.deploy_step step_type = 'deploy' else: step = node.clean_step step_type = 'clean' # The arguments are validated and sent to the ProliantHardwareManager # to perform SUM based firmware update clean step. firmware_processor.get_and_validate_firmware_image_info(kwargs, 'sum') url = kwargs['url'] if urlparse.urlparse(url).scheme == 'swift': url = firmware_processor.get_swift_url(urlparse.urlparse(url)) step['args']['url'] = url # Insert SPP ISO into virtual media CDROM ilo_common.attach_vmedia(node, 'CDROM', url) return agent_base.execute_step(task, step, step_type)
def test_attach_vmedia(self, get_ilo_object_mock): ilo_mock_object = get_ilo_object_mock.return_value insert_media_mock = ilo_mock_object.insert_virtual_media set_status_mock = ilo_mock_object.set_vm_status ilo_common.attach_vmedia(self.node, "FLOPPY", "url") insert_media_mock.assert_called_once_with("url", device="FLOPPY") set_status_mock.assert_called_once_with(device="FLOPPY", boot_option="CONNECT", write_protect="YES")
def test_attach_vmedia(self, get_ilo_object_mock): ilo_mock_object = get_ilo_object_mock.return_value insert_media_mock = ilo_mock_object.insert_virtual_media set_status_mock = ilo_mock_object.set_vm_status ilo_common.attach_vmedia(self.node, 'FLOPPY', 'url') insert_media_mock.assert_called_once_with('url', device='FLOPPY') set_status_mock.assert_called_once_with( device='FLOPPY', boot_option='CONNECT', write_protect='YES')
def test_attach_vmedia(self, ilo_client_mock): ilo_client_mock.IloError = Exception ilo_mock_object = ilo_client_mock.IloClient.return_value insert_media_mock = ilo_mock_object.insert_virtual_media set_status_mock = ilo_mock_object.set_vm_status ilo_common.attach_vmedia(self.node, 'FLOPPY', 'url') insert_media_mock.assert_called_once_with('url', device='FLOPPY') set_status_mock.assert_called_once_with(device='FLOPPY', boot_option='CONNECT', write_protect='YES') set_status_mock.side_effect = Exception() self.assertRaises(exception.IloOperationError, ilo_common.attach_vmedia, self.node, 'FLOPPY', 'url')
def update_firmware_sum(self, task, **kwargs): """Updates the firmware using Smart Update Manager (SUM). :param task: a TaskManager object. :raises: NodeCleaningFailure, on failure to execute step. """ node = task.node # The arguments are validated and sent to the ProliantHardwareManager # to perform SUM based firmware update clean step. firmware_processor.get_and_validate_firmware_image_info(kwargs, 'sum') url = kwargs['url'] if urlparse.urlparse(url).scheme == 'swift': url = firmware_processor.get_swift_url(urlparse.urlparse(url)) node.clean_step['args']['url'] = url # Insert SPP ISO into virtual media CDROM ilo_common.attach_vmedia(node, 'CDROM', url) step = node.clean_step return deploy_utils.agent_execute_clean_step(task, step)