Merge "Move default network_interface logic in node object"
This commit is contained in:
commit
4bd6e9793d
@ -59,10 +59,6 @@ def _attach_interfaces_to_driver(driver, node, driver_name=None):
|
||||
setattr(driver, iface, impl)
|
||||
|
||||
network_iface = node.network_interface
|
||||
if network_iface is None:
|
||||
network_iface = (CONF.default_network_interface or
|
||||
('flat' if CONF.dhcp.dhcp_provider == 'neutron'
|
||||
else 'noop'))
|
||||
network_factory = NetworkInterfaceFactory()
|
||||
try:
|
||||
net_driver = network_factory.get_driver(network_iface)
|
||||
|
@ -19,6 +19,7 @@ from oslo_versionedobjects import base as object_base
|
||||
|
||||
from ironic.common import exception
|
||||
from ironic.common.i18n import _
|
||||
from ironic.conf import CONF
|
||||
from ironic.db import api as db_api
|
||||
from ironic.objects import base
|
||||
from ironic.objects import fields as object_fields
|
||||
@ -26,6 +27,13 @@ from ironic.objects import fields as object_fields
|
||||
REQUIRED_INT_PROPERTIES = ['local_gb', 'cpus', 'memory_mb']
|
||||
|
||||
|
||||
def _default_network_interface():
|
||||
network_iface = (CONF.default_network_interface or
|
||||
('flat' if CONF.dhcp.dhcp_provider == 'neutron'
|
||||
else 'noop'))
|
||||
return network_iface
|
||||
|
||||
|
||||
@base.IronicObjectRegistry.register
|
||||
class Node(base.IronicObject, object_base.VersionedObjectDictCompat):
|
||||
# Version 1.0: Initial version
|
||||
@ -48,7 +56,8 @@ class Node(base.IronicObject, object_base.VersionedObjectDictCompat):
|
||||
# Version 1.15: Add get_by_port_addresses
|
||||
# Version 1.16: Add network_interface field
|
||||
# Version 1.17: Add resource_class field
|
||||
VERSION = '1.17'
|
||||
# Version 1.18: Add default setting for network_interface
|
||||
VERSION = '1.18'
|
||||
|
||||
dbapi = db_api.get_instance()
|
||||
|
||||
@ -108,9 +117,15 @@ class Node(base.IronicObject, object_base.VersionedObjectDictCompat):
|
||||
|
||||
'extra': object_fields.FlexibleDictField(nullable=True),
|
||||
|
||||
'network_interface': object_fields.StringField(nullable=True),
|
||||
'network_interface': object_fields.StringField(
|
||||
nullable=False, default=_default_network_interface()),
|
||||
}
|
||||
|
||||
def __init__(self, context=None, **kwargs):
|
||||
self.fields['network_interface']._default = (
|
||||
_default_network_interface())
|
||||
super(Node, self).__init__(context, **kwargs)
|
||||
|
||||
def _validate_property_values(self, properties):
|
||||
"""Check if the input of local_gb, cpus and memory_mb are valid.
|
||||
|
||||
|
@ -1799,6 +1799,8 @@ class AgentMethodsTestCase(db_base.DbTestCase):
|
||||
def test_prepare_inband_cleaning_ports_provider_does_not_create(
|
||||
self, dhcp_factory_mock, add_clean_net_mock):
|
||||
self.config(group='dhcp', dhcp_provider='my_shiny_dhcp_provider')
|
||||
self.node.network_interface = 'noop'
|
||||
self.node.save()
|
||||
dhcp_provider = dhcp_factory_mock.return_value.provider
|
||||
del dhcp_provider.delete_cleaning_ports
|
||||
del dhcp_provider.create_cleaning_ports
|
||||
@ -1846,6 +1848,8 @@ class AgentMethodsTestCase(db_base.DbTestCase):
|
||||
def test_tear_down_inband_cleaning_ports_provider_does_not_delete(
|
||||
self, dhcp_factory_mock, rm_clean_net_mock):
|
||||
self.config(group='dhcp', dhcp_provider='my_shiny_dhcp_provider')
|
||||
self.node.network_interface = 'noop'
|
||||
self.node.save()
|
||||
dhcp_provider = dhcp_factory_mock.return_value.provider
|
||||
del dhcp_provider.delete_cleaning_ports
|
||||
with task_manager.acquire(
|
||||
|
@ -16,17 +16,22 @@
|
||||
import mock
|
||||
from testtools.matchers import HasLength
|
||||
|
||||
from ironic.common import context
|
||||
from ironic.common import exception
|
||||
from ironic.conf import CONF
|
||||
from ironic import objects
|
||||
from ironic.tests.unit.db import base
|
||||
from ironic.tests.unit.db import utils
|
||||
from ironic.tests.unit.objects import utils as obj_utils
|
||||
|
||||
|
||||
class TestNodeObject(base.DbTestCase):
|
||||
|
||||
def setUp(self):
|
||||
super(TestNodeObject, self).setUp()
|
||||
self.ctxt = context.get_admin_context()
|
||||
self.fake_node = utils.get_test_node()
|
||||
self.node = obj_utils.get_test_node(self.ctxt, **self.fake_node)
|
||||
|
||||
def test_get_by_id(self):
|
||||
node_id = self.fake_node['id']
|
||||
@ -191,3 +196,22 @@ class TestNodeObject(base.DbTestCase):
|
||||
}
|
||||
node._validate_property_values(values['properties'])
|
||||
self.assertEqual(expect, values['properties'])
|
||||
|
||||
def test_get_network_interface_use_field(self):
|
||||
CONF.set_override('default_network_interface', None)
|
||||
for nif in ('neutron', 'flat', 'noop'):
|
||||
self.node.network_interface = nif
|
||||
self.assertEqual(nif, self.node.network_interface)
|
||||
|
||||
def test_get_network_interface_use_conf(self):
|
||||
for nif in ('neutron', 'flat', 'noop'):
|
||||
CONF.set_override('default_network_interface', nif)
|
||||
self.node = obj_utils.get_test_node(self.ctxt, **self.fake_node)
|
||||
self.assertEqual(nif, self.node.network_interface)
|
||||
|
||||
def test_get_network_interface_use_dhcp_provider(self):
|
||||
CONF.set_override('default_network_interface', None)
|
||||
for dhcp, nif in (('neutron', 'flat'), ('none', 'noop')):
|
||||
CONF.set_override('dhcp_provider', dhcp, 'dhcp')
|
||||
self.node = obj_utils.get_test_node(self.ctxt, **self.fake_node)
|
||||
self.assertEqual(nif, self.node.network_interface)
|
||||
|
@ -404,7 +404,7 @@ class TestObject(_LocalTest, _TestObject):
|
||||
# version bump. It is md5 hash of object fields and remotable methods.
|
||||
# The fingerprint values should only be changed if there is a version bump.
|
||||
expected_object_fingerprints = {
|
||||
'Node': '1.17-ed09e704576dc1b5a74abcbb727bf722',
|
||||
'Node': '1.18-8cdb6010014b29f17ca636bef72b7800',
|
||||
'MyObj': '1.5-4f5efe8f0fcaf182bbe1c7fe3ba858db',
|
||||
'Chassis': '1.3-d656e039fd8ae9f34efc232ab3980905',
|
||||
'Port': '1.6-609504503d68982a10f495659990084b',
|
||||
|
Loading…
x
Reference in New Issue
Block a user