diff --git a/openstack_dashboard/dashboards/project/routers/extensions/extraroutes/forms.py b/openstack_dashboard/dashboards/project/routers/extensions/extraroutes/forms.py index 4ae0eb35f1..7e1dac0714 100644 --- a/openstack_dashboard/dashboards/project/routers/extensions/extraroutes/forms.py +++ b/openstack_dashboard/dashboards/project/routers/extensions/extraroutes/forms.py @@ -29,8 +29,13 @@ LOG = logging.getLogger(__name__) class AddRouterRoute(forms.SelfHandlingForm): - destination = forms.IPField(label=_("Destination CIDR"), mask=True) - nexthop = forms.IPField(label=_("Next Hop")) + destination = forms.IPField( + version=forms.IPv4 | forms.IPv6, + label=_("Destination CIDR"), + mask=True) + nexthop = forms.IPField( + version=forms.IPv4 | forms.IPv6, + label=_("Next Hop")) failure_url = 'horizon:project:routers:detail' def handle(self, request, data, **kwargs): diff --git a/openstack_dashboard/dashboards/project/routers/tests.py b/openstack_dashboard/dashboards/project/routers/tests.py index 645e92cdb9..cd3ccf39bc 100644 --- a/openstack_dashboard/dashboards/project/routers/tests.py +++ b/openstack_dashboard/dashboards/project/routers/tests.py @@ -1076,10 +1076,13 @@ class RouterRouteTestCase(object): @test.create_mocks({api.neutron: ('router_get', 'router_update')}) - def _test_router_addrouterroute(self, raise_error=False): + def _test_router_addrouterroute(self, ipv6=False, raise_error=False): pre_router = self.routers_with_routes.first() post_router = copy.deepcopy(pre_router) - route = {'nexthop': '10.0.0.5', 'destination': '40.0.1.0/24'} + if ipv6: + route = {'nexthop': 'fdb6:b88a:488e::5', 'destination': '2002::/64'} + else: + route = {'nexthop': '10.0.0.5', 'destination': '40.0.1.0/24'} post_router['routes'].insert(0, route) self.mock_router_get.return_value = pre_router if raise_error: @@ -1112,6 +1115,16 @@ class RouterRouteTestCase(object): self._test_router_addrouterroute(raise_error=True) self.assertMessageCount(error=1) + def test_router_addrouteripv6route(self): + if self.DASHBOARD == 'project': + self._test_router_addrouterroute(ipv6=True) + self.assertMessageCount(success=1) + + def test_router_addrouteripv6route_exception(self): + if self.DASHBOARD == 'project': + self._test_router_addrouterroute(ipv6=True, raise_error=True) + self.assertMessageCount(error=1) + @test.create_mocks({api.neutron: ('router_get', 'router_update', 'network_get',