Browse Source

Merge "Prevent un-needed iscsi cleanup" into stable/stein

stable/stein
Zuul 1 month ago
committed by Gerrit Code Review
parent
commit
1640c7b826
6 changed files with 22 additions and 2 deletions
  1. +1
    -0
      ironic_python_agent/agent.py
  2. +2
    -1
      ironic_python_agent/extensions/image.py
  3. +2
    -1
      ironic_python_agent/extensions/iscsi.py
  4. +2
    -0
      ironic_python_agent/tests/unit/extensions/test_image.py
  5. +6
    -0
      ironic_python_agent/tests/unit/extensions/test_iscsi.py
  6. +9
    -0
      releasenotes/notes/prevent-needless-iscsi-cleanup-f8d602c0abc7e8ba.yaml

+ 1
- 0
ironic_python_agent/agent.py View File

@@ -195,6 +195,7 @@ class IronicPythonAgent(base.ExecuteCommandMixin):
self.hardware_initialization_delay = hardware_initialization_delay
# IPA will stop serving requests and exit after this is set to False
self.serve_api = True
self.iscsi_started = False

def get_status(self):
"""Retrieve a serializable status.


+ 2
- 1
ironic_python_agent/extensions/image.py View File

@@ -384,7 +384,8 @@ class ImageExtension(base.BaseAgentExtension):

"""
device = hardware.dispatch_to_managers('get_os_install_device')
iscsi.clean_up(device)
if self.agent.iscsi_started:
iscsi.clean_up(device)
boot = hardware.dispatch_to_managers('get_boot_info')
if boot.current_boot_mode == 'uefi':
has_efibootmgr = True


+ 2
- 1
ironic_python_agent/extensions/iscsi.py View File

@@ -189,7 +189,8 @@ class ISCSIExtension(base.BaseAgentExtension):
else:
_start_lio(iqn, portal_port, device)
LOG.debug('Linux-IO configuration: %s', rts_root.dump())

# Mark iscsi as previously started
self.agent.iscsi_started = True
LOG.info('Created iSCSI target with iqn %(iqn)s, portal port %(port)d,'
' on device %(dev)s using %(method)s',
{'iqn': iqn, 'port': portal_port, 'dev': device,


+ 2
- 0
ironic_python_agent/tests/unit/extensions/test_image.py View File

@@ -45,6 +45,8 @@ class TestImageExtension(base.IronicAgentTest):
self.fake_efi_system_part_uuid = '45AB-2312'
self.fake_prep_boot_part_uuid = '76937797-3253-8843-999999999999'
self.fake_dir = '/tmp/fake-dir'
self.agent_extension.agent = mock.Mock()
self.agent_extension.agent.iscsi_started = True

@mock.patch.object(iscsi, 'clean_up', autospec=True)
@mock.patch.object(image, '_install_grub2', autospec=True)


+ 6
- 0
ironic_python_agent/tests/unit/extensions/test_iscsi.py View File

@@ -25,6 +25,9 @@ from ironic_python_agent import utils


class FakeAgent(object):

iscsi_started = False

def get_node_uuid(self):
return 'my_node_uuid'

@@ -47,8 +50,11 @@ class TestISCSIExtensionTgt(base.IronicAgentTest):
mock_destroy):
mock_dispatch.return_value = self.fake_dev
mock_execute.return_value = ('', '')
self.assertFalse(self.agent_extension.agent.iscsi_started)

result = self.agent_extension.start_iscsi_target(iqn=self.fake_iqn)

self.assertTrue(self.agent_extension.agent.iscsi_started)
expected = [mock.call('tgtd'),
mock.call('tgtadm', '--lld', 'iscsi', '--mode',
'target', '--op', 'show', attempts=10),


+ 9
- 0
releasenotes/notes/prevent-needless-iscsi-cleanup-f8d602c0abc7e8ba.yaml View File

@@ -0,0 +1,9 @@
---
fixes:
- |
Fixes an issue with the ironic-python-agent where we would call to
setup the bootloader, which is necessary with software raid, but also
attempt to clean up iSCSI. This can cause issues when using the ``direct``
``deploy_interface``. Now the agent will only clean up iSCSI connections
if iSCSI was explicitly started. For more information, please see
`story 2007937 <https://storyboard.openstack.org/#!/story/2007937>`_.

Loading…
Cancel
Save