Description of problem:
be2iscsi driver is not included in introspection and boot initramfs images for overcloud
Version-Release number of selected component (if applicable):
How reproducible:
Introspection fails on diskless nodes with iscsi attached root disk when using default introspection image
Additional info:
Issue was solved by rebuilding the introspection and boot images using DIB.
drivers atted to images:
be2iscsi
dm_multipath
iscsi_target_mod
rpm's added to overcloud image:
iscsi-initiator-utils
openstack-ironic-python-agent
Patch added to ironic_python_agent:
--- /lib/python2.7/site-packages/ironic_python_agent/hardware.py 2016-07-18 22:02:53.668820422 -0400
+++ /lib/python2.7/site-packages/ironic_python_agent/hardware.py 2016-07-18 14:40:33.578307259 -0400
@@ -52,6 +52,27 @@
except IOError:
LOG.warning("Can't find the device vendor for device %s", dev)
+def _check_for_iscsi():
+ """iscsi detection
+ iscsistart -f will print the iBFT or OF info.
+ In case such connection exists, we would like to issue
+ iscsistart -b to create a session to the target.
+ - if no connection is detected we simply return.
+ """
+ if os.path.exists('/var/run/iscsistart.pid'):
+ return
+ else :
+ utils.execute('/bin/touch','/var/run/iscsistart.pid')
+ try:
+ utils.execute('iscsistart', '-f')
+ except processutils.ProcessExecutionError as e:
+ LOG.info('No iscsi connection detected. Skipping iscsi.')
+ return
+ try:
+ utils.execute('iscsistart', '-b')
+ except processutils.ProcessExecutionError as e:
+ LOG.warning('Something went wrong executing iscsistart -b'
+ 'Error: %s', e)
def _udev_settle():
"""Wait for the udev event queue to settle.
@@ -383,6 +404,7 @@
def evaluate_hardware_support(self):
# Do some initialization before we declare ourself ready
+ _check_for_iscsi()
self._wait_for_disks()
return HardwareSupport.GENERIC
Since the problem described in this bug report should be
resolved in a recent advisory, it has been closed with a
resolution of ERRATA.
For information on the advisory, and where to find the updated
files, follow the link below.
If the solution does not work for you, open a new bug report.
https://access.redhat.com/errata/RHEA-2017:1245
Description of problem: be2iscsi driver is not included in introspection and boot initramfs images for overcloud Version-Release number of selected component (if applicable): How reproducible: Introspection fails on diskless nodes with iscsi attached root disk when using default introspection image Additional info: Issue was solved by rebuilding the introspection and boot images using DIB. drivers atted to images: be2iscsi dm_multipath iscsi_target_mod rpm's added to overcloud image: iscsi-initiator-utils openstack-ironic-python-agent Patch added to ironic_python_agent: --- /lib/python2.7/site-packages/ironic_python_agent/hardware.py 2016-07-18 22:02:53.668820422 -0400 +++ /lib/python2.7/site-packages/ironic_python_agent/hardware.py 2016-07-18 14:40:33.578307259 -0400 @@ -52,6 +52,27 @@ except IOError: LOG.warning("Can't find the device vendor for device %s", dev) +def _check_for_iscsi(): + """iscsi detection + iscsistart -f will print the iBFT or OF info. + In case such connection exists, we would like to issue + iscsistart -b to create a session to the target. + - if no connection is detected we simply return. + """ + if os.path.exists('/var/run/iscsistart.pid'): + return + else : + utils.execute('/bin/touch','/var/run/iscsistart.pid') + try: + utils.execute('iscsistart', '-f') + except processutils.ProcessExecutionError as e: + LOG.info('No iscsi connection detected. Skipping iscsi.') + return + try: + utils.execute('iscsistart', '-b') + except processutils.ProcessExecutionError as e: + LOG.warning('Something went wrong executing iscsistart -b' + 'Error: %s', e) def _udev_settle(): """Wait for the udev event queue to settle. @@ -383,6 +404,7 @@ def evaluate_hardware_support(self): # Do some initialization before we declare ourself ready + _check_for_iscsi() self._wait_for_disks() return HardwareSupport.GENERIC