summaryrefslogtreecommitdiff
path: root/ironic/drivers
diff options
context:
space:
mode:
authorIlya Etingof <etingof@gmail.com>2019-10-11 23:10:48 +0200
committerIury Gregory Melo Ferreira <imelofer@redhat.com>2020-05-25 18:20:15 +0200
commit734a0a0cb9188c4d686b749b6b809240a4bae8c0 (patch)
treeda8c558aa202fa30858ce519290bc051e0c4b10d /ironic/drivers
parentcf12521f70d53c2a8babdd94583c81874b5cd060 (diff)
downloadironic-734a0a0cb9188c4d686b749b6b809240a4bae8c0.tar.gz
Add `get_node_network_data` to non-Neutron NetworkInterface
Implements `get_node_network_data` network interface method for non-Neutron networks providing network configuration for the node taken from the `network_data` field of the ironic node object. Change-Id: I4c5722b5e515f6edfa6a1bac0a443c71312c34d8 Story: 2006691 Task: 37070
Diffstat (limited to 'ironic/drivers')
-rw-r--r--ironic/drivers/modules/network/common.py24
1 files changed, 24 insertions, 0 deletions
diff --git a/ironic/drivers/modules/network/common.py b/ironic/drivers/modules/network/common.py
index 736249b69..14a8f7465 100644
--- a/ironic/drivers/modules/network/common.py
+++ b/ironic/drivers/modules/network/common.py
@@ -393,6 +393,30 @@ 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):
+ """Return network configuration for node NICs.
+
+ 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.