summaryrefslogtreecommitdiff
path: root/ironic/tests
diff options
context:
space:
mode:
authorZuul <zuul@review.opendev.org>2020-04-21 16:46:12 +0000
committerGerrit Code Review <review@openstack.org>2020-04-21 16:46:12 +0000
commit81d38a836b4bd1b2cecd4acc2c285e599b64b2c5 (patch)
treec08cc1464fa9314957a9f5e123719c9a10810af1 /ironic/tests
parent2a42947b0b0d2257a763e97f898fda7ff7665ac0 (diff)
parentcf412bc81e4182a7c332545cfeb6e154015e3dc3 (diff)
downloadironic-81d38a836b4bd1b2cecd4acc2c285e599b64b2c5.tar.gz
Merge ""dual stack" support for PXE/iPXE"
Diffstat (limited to 'ironic/tests')
-rw-r--r--ironic/tests/unit/dhcp/test_neutron.py66
-rw-r--r--ironic/tests/unit/drivers/modules/test_ipxe.py19
-rw-r--r--ironic/tests/unit/drivers/modules/test_pxe.py17
3 files changed, 96 insertions, 6 deletions
diff --git a/ironic/tests/unit/dhcp/test_neutron.py b/ironic/tests/unit/dhcp/test_neutron.py
index 29983e7d3..391b1cf74 100644
--- a/ironic/tests/unit/dhcp/test_neutron.py
+++ b/ironic/tests/unit/dhcp/test_neutron.py
@@ -48,8 +48,9 @@ class TestNeutron(db_base.DbTestCase):
dhcp_factory.DHCPFactory._dhcp_provider = None
+ @mock.patch('ironic.common.neutron.get_client', autospec=True)
@mock.patch('ironic.common.neutron.update_neutron_port', autospec=True)
- def test_update_port_dhcp_opts(self, update_mock):
+ def test_update_port_dhcp_opts(self, update_mock, client_mock):
opts = [{'opt_name': 'bootfile-name',
'opt_value': 'pxelinux.0'},
{'opt_name': 'tftp-server',
@@ -58,6 +59,56 @@ class TestNeutron(db_base.DbTestCase):
'opt_value': '1.1.1.1'}]
port_id = 'fake-port-id'
expected = {'port': {'extra_dhcp_opts': opts}}
+ port_data = {
+ "id": port_id,
+ "fixed_ips": [
+ {
+ "ip_address": "192.168.1.3",
+ }
+ ],
+ }
+ client_mock.return_value.show_port.return_value = {'port': port_data}
+
+ api = dhcp_factory.DHCPFactory()
+ with task_manager.acquire(self.context, self.node.uuid) as task:
+ api.provider.update_port_dhcp_opts(port_id, opts,
+ context=task.context)
+ update_mock.assert_called_once_with(
+ self.context, port_id, expected)
+
+ @mock.patch('ironic.common.neutron.get_client', autospec=True)
+ @mock.patch('ironic.common.neutron.update_neutron_port', autospec=True)
+ def test_update_port_dhcp_opts_v6(self, update_mock, client_mock):
+ opts = [{'opt_name': 'bootfile-name',
+ 'opt_value': 'pxelinux.0',
+ 'ip_version': 4},
+ {'opt_name': 'tftp-server',
+ 'opt_value': '1.1.1.1',
+ 'ip_version': 4},
+ {'opt_name': 'server-ip-address',
+ 'opt_value': '1.1.1.1',
+ 'ip_version': 4},
+ {'opt_name': 'bootfile-url',
+ 'opt_value': 'tftp://::1/file.name',
+ 'ip_version': 6}]
+ port_id = 'fake-port-id'
+ expected = {
+ 'port': {
+ 'extra_dhcp_opts': [{
+ 'opt_name': 'bootfile-url',
+ 'opt_value': 'tftp://::1/file.name',
+ 'ip_version': 6}]
+ }
+ }
+ port_data = {
+ "id": port_id,
+ "fixed_ips": [
+ {
+ "ip_address": "2001:db8::201",
+ }
+ ],
+ }
+ client_mock.return_value.show_port.return_value = {'port': port_data}
api = dhcp_factory.DHCPFactory()
with task_manager.acquire(self.context, self.node.uuid) as task:
@@ -66,10 +117,21 @@ class TestNeutron(db_base.DbTestCase):
update_mock.assert_called_once_with(
task.context, port_id, expected)
+ @mock.patch('ironic.common.neutron.get_client', autospec=True)
@mock.patch('ironic.common.neutron.update_neutron_port', autospec=True)
- def test_update_port_dhcp_opts_with_exception(self, update_mock):
+ def test_update_port_dhcp_opts_with_exception(self, update_mock,
+ client_mock):
opts = [{}]
port_id = 'fake-port-id'
+ port_data = {
+ "id": port_id,
+ "fixed_ips": [
+ {
+ "ip_address": "192.168.1.3",
+ }
+ ],
+ }
+ client_mock.return_value.show_port.return_value = {'port': port_data}
update_mock.side_effect = (
neutron_client_exc.NeutronClientException())
diff --git a/ironic/tests/unit/drivers/modules/test_ipxe.py b/ironic/tests/unit/drivers/modules/test_ipxe.py
index 1b4b0a48c..cbec1bb0d 100644
--- a/ironic/tests/unit/drivers/modules/test_ipxe.py
+++ b/ironic/tests/unit/drivers/modules/test_ipxe.py
@@ -272,11 +272,14 @@ class iPXEBootTestCase(db_base.DbTestCase):
self.node.save()
with task_manager.acquire(self.context, self.node.uuid) as task:
dhcp_opts = pxe_utils.dhcp_options_for_instance(
- task, ipxe_enabled=True)
+ task, ipxe_enabled=True, ip_version=4)
+ dhcp_opts += pxe_utils.dhcp_options_for_instance(
+ task, ipxe_enabled=True, ip_version=6)
task.driver.boot.prepare_ramdisk(task, {'foo': 'bar'})
mock_deploy_img_info.assert_called_once_with(task.node, mode=mode,
ipxe_enabled=True)
- provider_mock.update_dhcp.assert_called_once_with(task, dhcp_opts)
+ provider_mock.update_dhcp.assert_called_once_with(
+ task, dhcp_opts)
if self.node.provision_state == states.DEPLOYING:
get_boot_mode_mock.assert_called_once_with(task)
set_boot_device_mock.assert_called_once_with(task,
@@ -633,6 +636,8 @@ class iPXEBootTestCase(db_base.DbTestCase):
with task_manager.acquire(self.context, self.node.uuid) as task:
dhcp_opts = pxe_utils.dhcp_options_for_instance(
task, ipxe_enabled=True)
+ dhcp_opts += pxe_utils.dhcp_options_for_instance(
+ task, ipxe_enabled=True, ip_version=6)
pxe_config_path = pxe_utils.get_pxe_config_file_path(
task.node.uuid, ipxe_enabled=True)
task.node.properties['capabilities'] = 'boot_mode:bios'
@@ -677,6 +682,8 @@ class iPXEBootTestCase(db_base.DbTestCase):
with task_manager.acquire(self.context, self.node.uuid) as task:
dhcp_opts = pxe_utils.dhcp_options_for_instance(
task, ipxe_enabled=True)
+ dhcp_opts += pxe_utils.dhcp_options_for_instance(
+ task, ipxe_enabled=True, ip_version=6)
pxe_config_path = pxe_utils.get_pxe_config_file_path(
task.node.uuid, ipxe_enabled=True)
task.node.properties['capabilities'] = 'boot_mode:bios'
@@ -717,7 +724,9 @@ class iPXEBootTestCase(db_base.DbTestCase):
instance_info = {"boot_option": "netboot"}
with task_manager.acquire(self.context, self.node.uuid) as task:
dhcp_opts = pxe_utils.dhcp_options_for_instance(
- task, ipxe_enabled=True)
+ task, ipxe_enabled=True, ip_version=4)
+ dhcp_opts += pxe_utils.dhcp_options_for_instance(
+ task, ipxe_enabled=True, ip_version=6)
task.node.properties['capabilities'] = 'boot_mode:bios'
task.node.instance_info['capabilities'] = instance_info
task.node.driver_internal_info['is_whole_disk_image'] = False
@@ -751,6 +760,8 @@ class iPXEBootTestCase(db_base.DbTestCase):
with task_manager.acquire(self.context, self.node.uuid) as task:
dhcp_opts = pxe_utils.dhcp_options_for_instance(
task, ipxe_enabled=True)
+ dhcp_opts += pxe_utils.dhcp_options_for_instance(
+ task, ipxe_enabled=True, ip_version=6)
task.node.properties['capabilities'] = 'boot_mode:bios'
task.node.instance_info['capabilities'] = instance_info
task.node.driver_internal_info['is_whole_disk_image'] = True
@@ -796,6 +807,8 @@ class iPXEBootTestCase(db_base.DbTestCase):
'boot_from_volume': vol_id}
dhcp_opts = pxe_utils.dhcp_options_for_instance(task,
ipxe_enabled=True)
+ dhcp_opts += pxe_utils.dhcp_options_for_instance(
+ task, ipxe_enabled=True, ip_version=6)
pxe_config_path = pxe_utils.get_pxe_config_file_path(
task.node.uuid, ipxe_enabled=True)
task.node.properties['capabilities'] = 'boot_mode:bios'
diff --git a/ironic/tests/unit/drivers/modules/test_pxe.py b/ironic/tests/unit/drivers/modules/test_pxe.py
index 7f10297a2..ed4fa2b63 100644
--- a/ironic/tests/unit/drivers/modules/test_pxe.py
+++ b/ironic/tests/unit/drivers/modules/test_pxe.py
@@ -86,6 +86,7 @@ class PXEBootTestCase(db_base.DbTestCase):
self.port = obj_utils.create_test_port(self.context,
node_id=self.node.id)
self.config(group='conductor', api_url='http://127.0.0.1:1234/')
+ self.config(my_ipv6='2001:db8::1')
def test_get_properties(self):
expected = pxe_base.COMMON_PROPERTIES
@@ -269,6 +270,8 @@ class PXEBootTestCase(db_base.DbTestCase):
with task_manager.acquire(self.context, self.node.uuid) as task:
dhcp_opts = pxe_utils.dhcp_options_for_instance(
task, ipxe_enabled=False)
+ dhcp_opts += pxe_utils.dhcp_options_for_instance(
+ task, ipxe_enabled=False, ip_version=6)
task.driver.boot.prepare_ramdisk(task, {'foo': 'bar'})
mock_deploy_img_info.assert_called_once_with(task.node,
mode=mode,
@@ -554,7 +557,9 @@ class PXEBootTestCase(db_base.DbTestCase):
get_image_info_mock.return_value = image_info
with task_manager.acquire(self.context, self.node.uuid) as task:
dhcp_opts = pxe_utils.dhcp_options_for_instance(
- task, ipxe_enabled=False)
+ task, ipxe_enabled=False, ip_version=4)
+ dhcp_opts += pxe_utils.dhcp_options_for_instance(
+ task, ipxe_enabled=False, ip_version=6)
pxe_config_path = pxe_utils.get_pxe_config_file_path(
task.node.uuid)
task.node.properties['capabilities'] = 'boot_mode:bios'
@@ -599,6 +604,8 @@ class PXEBootTestCase(db_base.DbTestCase):
with task_manager.acquire(self.context, self.node.uuid) as task:
dhcp_opts = pxe_utils.dhcp_options_for_instance(
task, ipxe_enabled=False)
+ dhcp_opts += pxe_utils.dhcp_options_for_instance(
+ task, ipxe_enabled=False, ip_version=6)
pxe_config_path = pxe_utils.get_pxe_config_file_path(
task.node.uuid)
task.node.properties['capabilities'] = 'boot_mode:bios'
@@ -639,6 +646,8 @@ class PXEBootTestCase(db_base.DbTestCase):
with task_manager.acquire(self.context, self.node.uuid) as task:
dhcp_opts = pxe_utils.dhcp_options_for_instance(
task, ipxe_enabled=False)
+ dhcp_opts += pxe_utils.dhcp_options_for_instance(
+ task, ipxe_enabled=False, ip_version=6)
task.node.properties['capabilities'] = 'boot_mode:bios'
task.node.instance_info['capabilities'] = instance_info
task.node.driver_internal_info['is_whole_disk_image'] = False
@@ -670,6 +679,8 @@ class PXEBootTestCase(db_base.DbTestCase):
with task_manager.acquire(self.context, self.node.uuid) as task:
dhcp_opts = pxe_utils.dhcp_options_for_instance(
task, ipxe_enabled=False)
+ dhcp_opts += pxe_utils.dhcp_options_for_instance(
+ task, ipxe_enabled=False, ip_version=6)
task.node.properties['capabilities'] = 'boot_mode:bios'
task.node.instance_info['capabilities'] = instance_info
task.node.driver_internal_info['is_whole_disk_image'] = True
@@ -742,6 +753,8 @@ class PXEBootTestCase(db_base.DbTestCase):
task.node.save()
dhcp_opts = pxe_utils.dhcp_options_for_instance(
task, ipxe_enabled=False)
+ dhcp_opts += pxe_utils.dhcp_options_for_instance(
+ task, ipxe_enabled=False, ip_version=6)
pxe_config_path = pxe_utils.get_pxe_config_file_path(
task.node.uuid)
task.driver.boot.prepare_instance(task)
@@ -838,6 +851,8 @@ class PXERamdiskDeployTestCase(db_base.DbTestCase):
with task_manager.acquire(self.context, self.node.uuid) as task:
dhcp_opts = pxe_utils.dhcp_options_for_instance(
task, ipxe_enabled=False)
+ dhcp_opts += pxe_utils.dhcp_options_for_instance(
+ task, ipxe_enabled=False, ip_version=6)
pxe_config_path = pxe_utils.get_pxe_config_file_path(
task.node.uuid)
task.node.properties['capabilities'] = 'boot_option:netboot'