summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorZuul <zuul@review.openstack.org>2017-10-25 07:43:01 +0000
committerGerrit Code Review <review@openstack.org>2017-10-25 07:43:01 +0000
commitcf3665fe1c60d43aa39f1880e427875c9c571058 (patch)
treebd1f18d62ec4e99e7f6a278e89a78921256d30b1
parent6d54c627703522921f41b5a83548380f1961034b (diff)
parent3929bcbf8e48d21c4a8c344891cec0caf0376c00 (diff)
downloadironic-cf3665fe1c60d43aa39f1880e427875c9c571058.tar.gz
Merge "[bfv] Set the correct iqn for pxe" into stable/pike9.1.2
-rw-r--r--ironic/drivers/modules/pxe.py8
-rw-r--r--ironic/tests/unit/drivers/modules/test_pxe.py22
-rw-r--r--releasenotes/notes/bfv-pxe-boot-3375d331ee2f04f2.yaml5
3 files changed, 31 insertions, 4 deletions
diff --git a/ironic/drivers/modules/pxe.py b/ironic/drivers/modules/pxe.py
index 0cf416748..76cc5f5ac 100644
--- a/ironic/drivers/modules/pxe.py
+++ b/ironic/drivers/modules/pxe.py
@@ -297,10 +297,14 @@ def _get_volume_pxe_options(task):
pxe_options['username'] = properties['auth_username']
if 'auth_password' in properties:
pxe_options['password'] = properties['auth_password']
+ iscsi_initiator_iqn = None
+ for vc in task.volume_connectors:
+ if vc.type == 'iqn':
+ iscsi_initiator_iqn = vc.connector_id
+
pxe_options.update(
{'iscsi_boot_url': __generate_iscsi_url(volume.properties),
- 'iscsi_initiator_iqn': (__get_property(properties,
- 'target_iqn') or None)})
+ 'iscsi_initiator_iqn': iscsi_initiator_iqn})
# NOTE(TheJulia): This may be the route to multi-path, define
# volumes via sanhook in the ipxe template and let the OS sort it out.
additional_targets = []
diff --git a/ironic/tests/unit/drivers/modules/test_pxe.py b/ironic/tests/unit/drivers/modules/test_pxe.py
index 85ac9d926..44ccf293e 100644
--- a/ironic/tests/unit/drivers/modules/test_pxe.py
+++ b/ironic/tests/unit/drivers/modules/test_pxe.py
@@ -378,7 +378,7 @@ class PXEPrivateMethodsTestCase(db_base.DbTestCase):
expected_options.update({
'boot_from_volume': True,
'iscsi_boot_url': 'iscsi:fake_host::3260:0:fake_iqn',
- 'iscsi_initiator_iqn': 'fake_iqn',
+ 'iscsi_initiator_iqn': 'fake_iqn_initiator',
'iscsi_volumes': ['iscsi:fake_host::3260:1:fake_iqn'],
'username': 'fake_username',
'password': 'fake_password'})
@@ -419,6 +419,12 @@ class PXEPrivateMethodsTestCase(db_base.DbTestCase):
def test__build_pxe_config_options_ipxe_and_iscsi_boot(self):
vol_id = uuidutils.generate_uuid()
vol_id2 = uuidutils.generate_uuid()
+ obj_utils.create_test_volume_connector(
+ self.context,
+ uuid=uuidutils.generate_uuid(),
+ type='iqn',
+ node_id=self.node.id,
+ connector_id='fake_iqn_initiator')
obj_utils.create_test_volume_target(
self.context, node_id=self.node.id, volume_type='iscsi',
boot_index=0, volume_id='1234', uuid=vol_id,
@@ -439,6 +445,12 @@ class PXEPrivateMethodsTestCase(db_base.DbTestCase):
def test__build_pxe_config_options_ipxe_and_iscsi_boot_from_lists(self):
vol_id = uuidutils.generate_uuid()
vol_id2 = uuidutils.generate_uuid()
+ obj_utils.create_test_volume_connector(
+ self.context,
+ uuid=uuidutils.generate_uuid(),
+ type='iqn',
+ node_id=self.node.id,
+ connector_id='fake_iqn_initiator')
obj_utils.create_test_volume_target(
self.context, node_id=self.node.id, volume_type='iscsi',
boot_index=0, volume_id='1234', uuid=vol_id,
@@ -460,6 +472,12 @@ class PXEPrivateMethodsTestCase(db_base.DbTestCase):
def test__get_volume_pxe_options(self):
vol_id = uuidutils.generate_uuid()
vol_id2 = uuidutils.generate_uuid()
+ obj_utils.create_test_volume_connector(
+ self.context,
+ uuid=uuidutils.generate_uuid(),
+ type='iqn',
+ node_id=self.node.id,
+ connector_id='fake_iqn_initiator')
obj_utils.create_test_volume_target(
self.context, node_id=self.node.id, volume_type='iscsi',
boot_index=0, volume_id='1234', uuid=vol_id,
@@ -483,7 +501,7 @@ class PXEPrivateMethodsTestCase(db_base.DbTestCase):
expected = {'boot_from_volume': True,
'username': 'fake_username', 'password': 'fake_password',
'iscsi_boot_url': 'iscsi:fake_host::3260:0:fake_iqn',
- 'iscsi_initiator_iqn': 'fake_iqn',
+ 'iscsi_initiator_iqn': 'fake_iqn_initiator',
'iscsi_volumes': ['iscsi:fake_host::3260:1:fake_iqn']}
with task_manager.acquire(self.context, self.node.uuid,
shared=True) as task:
diff --git a/releasenotes/notes/bfv-pxe-boot-3375d331ee2f04f2.yaml b/releasenotes/notes/bfv-pxe-boot-3375d331ee2f04f2.yaml
new file mode 100644
index 000000000..8aae1ce6f
--- /dev/null
+++ b/releasenotes/notes/bfv-pxe-boot-3375d331ee2f04f2.yaml
@@ -0,0 +1,5 @@
+---
+fixes:
+ - Fixes a problem when using boot from volume with the pxe boot interface,
+ now when booting the correct iscsi initiator is used.
+ `bug 1724275 <https://bugs.launchpad.net/ironic/+bug/1724275>`_