From: Pradeep Kilambi Date: Tue, 10 Feb 2015 22:42:20 +0000 (-0800) Subject: Expose Rest Api access to mtu attributes X-Git-Url: https://review.fuel-infra.org/gitweb?a=commitdiff_plain;h=0225607ab9a9337914891e082adafc6199e0582a;p=openstack-build%2Fneutron-build.git Expose Rest Api access to mtu attributes Exposing Read only access to mtu attributes via the network api calls so GET operations can be performed. Tied in the mtu attribute with create network call and use the config default. Also included unit tests to cover default and override config case for segment_mtu attribute. Partially Implements: blueprint mtu-selection-and-advertisement Change-Id: I811c288bdd96691a96d1721eb29354c0911edf3a --- diff --git a/neutron/api/v2/attributes.py b/neutron/api/v2/attributes.py index 34d55b03c..8235e000f 100644 --- a/neutron/api/v2/attributes.py +++ b/neutron/api/v2/attributes.py @@ -692,6 +692,8 @@ RESOURCE_ATTRIBUTE_MAP = { 'is_visible': True}, 'status': {'allow_post': False, 'allow_put': False, 'is_visible': True}, + 'mtu': {'allow_post': False, 'allow_put': False, + 'is_visible': True}, 'tenant_id': {'allow_post': True, 'allow_put': False, 'validate': {'type:string': None}, 'required_by_policy': True, diff --git a/neutron/common/constants.py b/neutron/common/constants.py index 774d920d9..f9f5a9a37 100644 --- a/neutron/common/constants.py +++ b/neutron/common/constants.py @@ -168,3 +168,6 @@ RPC_NAMESPACE_SECGROUP = None RPC_NAMESPACE_DVR = None # RPC interface for reporting state back to the plugin RPC_NAMESPACE_STATE = None + +# Default network MTU value when not configured +DEFAULT_NETWORK_MTU = 0 diff --git a/neutron/db/db_base_plugin_v2.py b/neutron/db/db_base_plugin_v2.py index 73db078b8..8950da5b4 100644 --- a/neutron/db/db_base_plugin_v2.py +++ b/neutron/db/db_base_plugin_v2.py @@ -781,6 +781,7 @@ class NeutronDbPluginV2(neutron_plugin_base_v2.NeutronPluginBaseV2, 'name': network['name'], 'tenant_id': network['tenant_id'], 'admin_state_up': network['admin_state_up'], + 'mtu': network.get('mtu', constants.DEFAULT_NETWORK_MTU), 'status': network['status'], 'shared': network['shared'], 'subnets': [subnet['id'] @@ -869,6 +870,7 @@ class NeutronDbPluginV2(neutron_plugin_base_v2.NeutronPluginBaseV2, 'id': n.get('id') or uuidutils.generate_uuid(), 'name': n['name'], 'admin_state_up': n['admin_state_up'], + 'mtu': n.get('mtu', constants.DEFAULT_NETWORK_MTU), 'shared': n['shared'], 'status': n.get('status', constants.NET_STATUS_ACTIVE)} network = models_v2.Network(**args) diff --git a/neutron/tests/unit/test_db_plugin.py b/neutron/tests/unit/test_db_plugin.py index d0b4f4bca..ccc57d08c 100644 --- a/neutron/tests/unit/test_db_plugin.py +++ b/neutron/tests/unit/test_db_plugin.py @@ -2026,6 +2026,12 @@ class TestNetworksV2(NeutronDbPluginV2TestCase): self.assertEqual(ctx_manager.exception.code, webob.exc.HTTPForbidden.code) + def test_create_network_default_mtu(self): + name = 'net1' + with self.network(name=name) as net: + self.assertEqual(net['network']['mtu'], + constants.DEFAULT_NETWORK_MTU) + def test_update_network(self): with self.network() as network: data = {'network': {'name': 'a_brand_new_name'}}