diff --git a/neutron/api/v2/attributes.py b/neutron/api/v2/attributes.py index 852263ce08..04875890b2 100644 --- a/neutron/api/v2/attributes.py +++ b/neutron/api/v2/attributes.py @@ -727,15 +727,17 @@ RESOURCE_ATTRIBUTE_MAP = { 'default': True, 'convert_to': convert_to_boolean, 'is_visible': True}, - 'ipv6_ra_mode': {'allow_post': True, 'allow_put': True, + # NOTE: The following two attributes will be made visible once IPv6 + # will be fully supported + 'ipv6_ra_mode': {'allow_post': False, 'allow_put': False, 'default': ATTR_NOT_SPECIFIED, 'validate': {'type:values': constants.IPV6_MODES}, - 'is_visible': True}, - 'ipv6_address_mode': {'allow_post': True, 'allow_put': True, + 'is_visible': False}, + 'ipv6_address_mode': {'allow_post': False, 'allow_put': False, 'default': ATTR_NOT_SPECIFIED, 'validate': {'type:values': constants.IPV6_MODES}, - 'is_visible': True}, + 'is_visible': False}, SHARED: {'allow_post': False, 'allow_put': False, 'default': False, diff --git a/neutron/db/db_base_plugin_v2.py b/neutron/db/db_base_plugin_v2.py index 1be937cbae..3210bd445e 100644 --- a/neutron/db/db_base_plugin_v2.py +++ b/neutron/db/db_base_plugin_v2.py @@ -1158,9 +1158,9 @@ class NeutronDbPluginV2(neutron_plugin_base_v2.NeutronPluginBaseV2, 'gateway_ip': s['gateway_ip'], 'shared': network.shared} if s['ip_version'] == 6 and s['enable_dhcp']: - if attributes.is_attr_set(s['ipv6_ra_mode']): + if attributes.is_attr_set(s.get('ipv6_ra_mode')): args['ipv6_ra_mode'] = s['ipv6_ra_mode'] - if attributes.is_attr_set(s['ipv6_address_mode']): + if attributes.is_attr_set(s.get('ipv6_address_mode')): args['ipv6_address_mode'] = s['ipv6_address_mode'] subnet = models_v2.Subnet(**args) diff --git a/neutron/db/securitygroups_rpc_base.py b/neutron/db/securitygroups_rpc_base.py index 38d01fb223..9f28ba6ddf 100644 --- a/neutron/db/securitygroups_rpc_base.py +++ b/neutron/db/securitygroups_rpc_base.py @@ -249,7 +249,7 @@ class SecurityGroupServerRpcCallbackMixin(object): # TODO(xuhanp): Figure out how to call the following code # each time router is created or updated. if not netaddr.IPAddress(gateway_ip).is_link_local(): - if subnet['ipv6_ra_mode']: + if subnet.get('ipv6_ra_mode'): gateway_ip = self._get_lla_gateway_ip_for_subnet(context, subnet) else: diff --git a/neutron/tests/unit/test_db_plugin.py b/neutron/tests/unit/test_db_plugin.py index 4369280200..18d6026861 100644 --- a/neutron/tests/unit/test_db_plugin.py +++ b/neutron/tests/unit/test_db_plugin.py @@ -22,6 +22,7 @@ import os import mock from oslo.config import cfg from testtools import matchers +from testtools import testcase import webob.exc import neutron @@ -2998,6 +2999,7 @@ class TestSubnetsV2(NeutronDbPluginV2TestCase): res = subnet_req.get_response(self.api) self.assertEqual(res.status_int, webob.exc.HTTPClientError.code) + @testcase.skip("Skipped until bug 1304093 is fixed") def test_create_subnet_ipv6_attributes(self): gateway_ip = 'fe80::1' cidr = 'fe80::/80' @@ -3008,6 +3010,7 @@ class TestSubnetsV2(NeutronDbPluginV2TestCase): ipv6_ra_mode=mode, ipv6_address_mode=mode) + @testcase.skip("Skipped until bug 1304093 is fixed") def test_create_subnet_ipv6_attributes_no_dhcp_enabled(self): gateway_ip = 'fe80::1' cidr = 'fe80::/80' @@ -3058,6 +3061,7 @@ class TestSubnetsV2(NeutronDbPluginV2TestCase): self.assertEqual(ctx_manager.exception.code, webob.exc.HTTPClientError.code) + @testcase.skip("Skipped until bug 1304093 is fixed") def test_create_subnet_ipv6_single_attribute_set(self): gateway_ip = 'fe80::1' cidr = 'fe80::/80' @@ -3232,6 +3236,7 @@ class TestSubnetsV2(NeutronDbPluginV2TestCase): self.assertEqual(res.status_int, webob.exc.HTTPConflict.code) + @testcase.skip("Skipped until bug 1304093 is fixed") def test_update_subnet_ipv6_attributes(self): with self.subnet(ip_version=6, cidr='fe80::/80', ipv6_ra_mode=constants.IPV6_SLAAC, @@ -3246,6 +3251,7 @@ class TestSubnetsV2(NeutronDbPluginV2TestCase): self.assertEqual(res['subnet']['ipv6_address_mode'], data['subnet']['ipv6_address_mode']) + @testcase.skip("Skipped until bug 1304093 is fixed") def test_update_subnet_ipv6_inconsistent_ra_attribute(self): with self.subnet(ip_version=6, cidr='fe80::/80', ipv6_ra_mode=constants.IPV6_SLAAC, @@ -3257,6 +3263,7 @@ class TestSubnetsV2(NeutronDbPluginV2TestCase): self.assertEqual(res.status_int, webob.exc.HTTPClientError.code) + @testcase.skip("Skipped until bug 1304093 is fixed") def test_update_subnet_ipv6_inconsistent_address_attribute(self): with self.subnet(ip_version=6, cidr='fe80::/80', ipv6_ra_mode=constants.IPV6_SLAAC, @@ -3268,6 +3275,7 @@ class TestSubnetsV2(NeutronDbPluginV2TestCase): self.assertEqual(res.status_int, webob.exc.HTTPClientError.code) + @testcase.skip("Skipped until bug 1304093 is fixed") def test_update_subnet_ipv6_inconsistent_enable_dhcp(self): with self.subnet(ip_version=6, cidr='fe80::/80', ipv6_ra_mode=constants.IPV6_SLAAC, diff --git a/neutron/tests/unit/test_security_groups_rpc.py b/neutron/tests/unit/test_security_groups_rpc.py index 7057c8d251..3803b6e8fb 100644 --- a/neutron/tests/unit/test_security_groups_rpc.py +++ b/neutron/tests/unit/test_security_groups_rpc.py @@ -22,6 +22,7 @@ import mock from mock import call from oslo.config import cfg from testtools import matchers +from testtools import testcase import webob.exc from neutron.agent.common import config @@ -365,6 +366,7 @@ class SGServerRpcCallBackMixinTestCase(test_sg.SecurityGroupDBTestCase): expected) self._delete('ports', port_id1) + @testcase.skip("Skipped until bug 1304093 is fixed") def test_security_group_ra_rules_for_devices_ipv6_gateway_global(self): fake_prefix = FAKE_PREFIX[const.IPv6] fake_gateway = FAKE_IP['IPv6_GLOBAL'] @@ -435,6 +437,7 @@ class SGServerRpcCallBackMixinTestCase(test_sg.SecurityGroupDBTestCase): self.deserialize(self.fmt, req.get_response(self.api)) self._delete('ports', gateway_port_id) + @testcase.skip("Skipped until bug 1304093 is fixed") def test_security_group_rule_for_device_ipv6_multi_router_interfaces(self): fake_prefix = FAKE_PREFIX[const.IPv6] fake_gateway = FAKE_IP['IPv6_GLOBAL'] @@ -512,6 +515,7 @@ class SGServerRpcCallBackMixinTestCase(test_sg.SecurityGroupDBTestCase): self._delete('ports', gateway_port_id) self._delete('ports', interface_port_id) + @testcase.skip("Skipped until bug 1304093 is fixed") def test_security_group_ra_rules_for_devices_ipv6_gateway_lla(self): fake_prefix = FAKE_PREFIX[const.IPv6] fake_gateway = FAKE_IP['IPv6_LLA'] @@ -564,6 +568,7 @@ class SGServerRpcCallBackMixinTestCase(test_sg.SecurityGroupDBTestCase): expected) self._delete('ports', port_id1) + @testcase.skip("Skipped until bug 1304093 is fixed") def test_security_group_ra_rules_for_devices_ipv6_no_gateway_port(self): fake_prefix = FAKE_PREFIX[const.IPv6] with self.network() as n: