Merge "improved the create router form"
This commit is contained in:
commit
499a2af767
|
@ -33,6 +33,12 @@ LOG = logging.getLogger(__name__)
|
|||
|
||||
class CreateForm(forms.SelfHandlingForm):
|
||||
name = forms.CharField(max_length=255, label=_("Router Name"))
|
||||
admin_state_up = forms.ChoiceField(label=_("Admin State"),
|
||||
choices=[(True, _('UP')),
|
||||
(False, _('DOWN'))],
|
||||
required=False)
|
||||
external_network = forms.ChoiceField(label=_("External Network"),
|
||||
required=False)
|
||||
mode = forms.ChoiceField(label=_("Router Type"))
|
||||
ha = forms.ChoiceField(label=_("High Availability Mode"))
|
||||
failure_url = 'horizon:project:routers:index'
|
||||
|
@ -58,10 +64,36 @@ class CreateForm(forms.SelfHandlingForm):
|
|||
self.fields['ha'].choices = ha_choices
|
||||
else:
|
||||
del self.fields['ha']
|
||||
networks = self._get_network_list(request)
|
||||
if networks:
|
||||
self.fields['external_network'].choices = networks
|
||||
else:
|
||||
del self.fields['external_network']
|
||||
|
||||
def _get_network_list(self, request):
|
||||
search_opts = {'router:external': True}
|
||||
try:
|
||||
networks = api.neutron.network_list(request, **search_opts)
|
||||
except Exception:
|
||||
msg = _('Failed to get network list.')
|
||||
LOG.info(msg)
|
||||
messages.warning(request, msg)
|
||||
networks = []
|
||||
|
||||
choices = [(network.id, network.name or network.id)
|
||||
for network in networks]
|
||||
if choices:
|
||||
choices.insert(0, ("", _("Select network")))
|
||||
return choices
|
||||
|
||||
def handle(self, request, data):
|
||||
try:
|
||||
params = {'name': data['name']}
|
||||
if 'admin_state_up' in data and data['admin_state_up']:
|
||||
params['admin_state_up'] = data['admin_state_up']
|
||||
if 'external_network' in data and data['external_network']:
|
||||
params['external_gateway_info'] = {'network_id':
|
||||
data['external_network']}
|
||||
if (self.dvr_allowed and data['mode'] != 'server_default'):
|
||||
params['distributed'] = (data['mode'] == 'distributed')
|
||||
if (self.ha_allowed and data['ha'] != 'server_default'):
|
||||
|
|
|
@ -1 +1,7 @@
|
|||
{% extends "horizon/common/_modal_form.html" %}
|
||||
{% load i18n %}
|
||||
|
||||
{% block modal-body-right %}
|
||||
<h3>{% trans "Description:" %}</h3>
|
||||
<p>{% trans "Creates a router with specified parameters." %}</p>
|
||||
{% endblock %}
|
||||
|
|
|
@ -263,11 +263,14 @@ class RouterActionTests(RouterMixin, test.TestCase):
|
|||
api.neutron.get_feature_permission(IsA(http.HttpRequest),
|
||||
"l3-ha", "create")\
|
||||
.AndReturn(False)
|
||||
api.neutron.router_create(IsA(http.HttpRequest), name=router.name)\
|
||||
params = {'name': router.name,
|
||||
'admin_state_up': str(router.admin_state_up)}
|
||||
api.neutron.router_create(IsA(http.HttpRequest), **params)\
|
||||
.AndReturn(router)
|
||||
|
||||
self.mox.ReplayAll()
|
||||
form_data = {'name': router.name}
|
||||
form_data = {'name': router.name,
|
||||
'admin_state_up': router.admin_state_up}
|
||||
url = reverse('horizon:%s:routers:create' % self.DASHBOARD)
|
||||
res = self.client.post(url, form_data)
|
||||
|
||||
|
@ -284,13 +287,16 @@ class RouterActionTests(RouterMixin, test.TestCase):
|
|||
api.neutron.get_feature_permission(IsA(http.HttpRequest),
|
||||
"l3-ha", "create")\
|
||||
.AndReturn(True)
|
||||
api.neutron.router_create(IsA(http.HttpRequest), name=router.name)\
|
||||
params = {'name': router.name,
|
||||
'admin_state_up': str(router.admin_state_up)}
|
||||
api.neutron.router_create(IsA(http.HttpRequest), **params)\
|
||||
.AndReturn(router)
|
||||
|
||||
self.mox.ReplayAll()
|
||||
form_data = {'name': router.name,
|
||||
'mode': 'server_default',
|
||||
'ha': 'server_default'}
|
||||
'ha': 'server_default',
|
||||
'admin_state_up': router.admin_state_up}
|
||||
url = reverse('horizon:%s:routers:create' % self.DASHBOARD)
|
||||
res = self.client.post(url, form_data)
|
||||
|
||||
|
@ -309,14 +315,16 @@ class RouterActionTests(RouterMixin, test.TestCase):
|
|||
.MultipleTimes().AndReturn(True)
|
||||
param = {'name': router.name,
|
||||
'distributed': True,
|
||||
'ha': True}
|
||||
'ha': True,
|
||||
'admin_state_up': str(router.admin_state_up)}
|
||||
api.neutron.router_create(IsA(http.HttpRequest), **param)\
|
||||
.AndReturn(router)
|
||||
|
||||
self.mox.ReplayAll()
|
||||
form_data = {'name': router.name,
|
||||
'mode': 'distributed',
|
||||
'ha': 'enabled'}
|
||||
'ha': 'enabled',
|
||||
'admin_state_up': router.admin_state_up}
|
||||
url = reverse('horizon:%s:routers:create' % self.DASHBOARD)
|
||||
res = self.client.post(url, form_data)
|
||||
|
||||
|
@ -334,11 +342,14 @@ class RouterActionTests(RouterMixin, test.TestCase):
|
|||
"l3-ha", "create")\
|
||||
.AndReturn(False)
|
||||
self.exceptions.neutron.status_code = 409
|
||||
api.neutron.router_create(IsA(http.HttpRequest), name=router.name)\
|
||||
params = {'name': router.name,
|
||||
'admin_state_up': str(router.admin_state_up)}
|
||||
api.neutron.router_create(IsA(http.HttpRequest), **params)\
|
||||
.AndRaise(self.exceptions.neutron)
|
||||
self.mox.ReplayAll()
|
||||
|
||||
form_data = {'name': router.name}
|
||||
form_data = {'name': router.name,
|
||||
'admin_state_up': router.admin_state_up}
|
||||
url = reverse('horizon:%s:routers:create' % self.DASHBOARD)
|
||||
res = self.client.post(url, form_data)
|
||||
|
||||
|
@ -356,11 +367,14 @@ class RouterActionTests(RouterMixin, test.TestCase):
|
|||
"l3-ha", "create")\
|
||||
.MultipleTimes().AndReturn(False)
|
||||
self.exceptions.neutron.status_code = 999
|
||||
api.neutron.router_create(IsA(http.HttpRequest), name=router.name)\
|
||||
params = {'name': router.name,
|
||||
'admin_state_up': str(router.admin_state_up)}
|
||||
api.neutron.router_create(IsA(http.HttpRequest), **params)\
|
||||
.AndRaise(self.exceptions.neutron)
|
||||
self.mox.ReplayAll()
|
||||
|
||||
form_data = {'name': router.name}
|
||||
form_data = {'name': router.name,
|
||||
'admin_state_up': router.admin_state_up}
|
||||
url = reverse('horizon:%s:routers:create' % self.DASHBOARD)
|
||||
res = self.client.post(url, form_data)
|
||||
|
||||
|
|
Loading…
Reference in New Issue