diff --git a/ironic/drivers/base.py b/ironic/drivers/base.py index d22bb46235..ac790e3523 100644 --- a/ironic/drivers/base.py +++ b/ironic/drivers/base.py @@ -1575,7 +1575,7 @@ class NetworkInterface(BaseInterface): :returns: a dict holding network configuration information adhearing Nova network metadata layout (`network_data.json`). """ - return {} + return task.node.network_data or {} class StorageInterface(BaseInterface, metaclass=abc.ABCMeta): diff --git a/ironic/drivers/modules/image_utils.py b/ironic/drivers/modules/image_utils.py index 105a57d152..40ae866fe0 100644 --- a/ironic/drivers/modules/image_utils.py +++ b/ironic/drivers/modules/image_utils.py @@ -459,6 +459,8 @@ def prepare_deploy_iso(task, params, mode, d_info): network_data = task.driver.network.get_node_network_data(task) if network_data: + LOG.debug('Injecting custom network data for node %s', + task.node.uuid) with tempfile.NamedTemporaryFile(dir=CONF.tempdir, suffix='.iso') as metadata_fileobj: diff --git a/ironic/drivers/modules/network/common.py b/ironic/drivers/modules/network/common.py index da6cfff46d..3798c2bd49 100644 --- a/ironic/drivers/modules/network/common.py +++ b/ironic/drivers/modules/network/common.py @@ -402,30 +402,6 @@ class VIFPortIDMixin(object): or p_obj.internal_info.get('inspection_vif_port_id') or self._get_vif_id_by_port_like_obj(p_obj) or None) - def get_node_network_data(self, task): - """Get network configuration data for node's ports/portgroups. - - Gather L2 and L3 network settings from ironic node `network_data` - field. Ironic would eventually pass network configuration to the node - being managed out-of-band. - - :param task: A TaskManager instance. - :raises: InvalidParameterValue, if the network interface configuration - is invalid. - :raises: MissingParameterValue, if some parameters are missing. - :returns: a dict holding network configuration information adhearing - Nova network metadata layout (`network_data.json`). - """ - node = task.node - - network_data = node.network_data - - # TODO(etingof): remove or truncate `network_data` logging - LOG.debug('Collected network data for node %(node)s: %(data)s', - {'node': node.uuid, 'data': network_data}) - - return network_data - class NeutronVIFPortIDMixin(VIFPortIDMixin): """VIF port ID mixin class for neutron network interfaces. diff --git a/ironic/tests/unit/drivers/modules/network/test_common.py b/ironic/tests/unit/drivers/modules/network/test_common.py index eefbd8a9da..9e8ac2b414 100644 --- a/ironic/tests/unit/drivers/modules/network/test_common.py +++ b/ironic/tests/unit/drivers/modules/network/test_common.py @@ -739,14 +739,6 @@ class TestVifPortIDMixin(db_base.DbTestCase): vif = self.interface.get_current_vif(task, self.port) self.assertIsNone(vif) - def test_get_node_network_data_complete(self): - self.node.network_data = self.network_data - self.node.save() - with task_manager.acquire(self.context, self.node.id) as task: - network_data = self.interface.get_node_network_data(task) - - self.assertEqual(self.network_data, network_data) - class TestNeutronVifPortIDMixin(db_base.DbTestCase): diff --git a/releasenotes/notes/fix-network-data-e10f2bf9dc38ba1a.yaml b/releasenotes/notes/fix-network-data-e10f2bf9dc38ba1a.yaml new file mode 100644 index 0000000000..40f91e7601 --- /dev/null +++ b/releasenotes/notes/fix-network-data-e10f2bf9dc38ba1a.yaml @@ -0,0 +1,5 @@ +--- +fixes: + - | + Correctly handles the node's custom network data when the ``noop`` network + interface is used. Previously it was ignored.