Skip to content

Commit

Permalink
Make cookie_name field in LBaaS VIP creation switchable
Browse files Browse the repository at this point in the history
Closes-Bug: #1241342
Change-Id: Id79700cd4659a094271ec1e7f10ebc5ad943c170
  • Loading branch information
amotoki committed Nov 2, 2013
1 parent 9c23d9c commit 66b76cf
Show file tree
Hide file tree
Showing 2 changed files with 41 additions and 27 deletions.
50 changes: 26 additions & 24 deletions openstack_dashboard/dashboards/project/loadbalancers/tests.py
Expand Up @@ -318,19 +318,20 @@ def _test_add_vip_post(self, with_conn_limit=True):

self.mox.ReplayAll()

form_data = {'name': vip.name,
'description': vip.description,
'pool_id': vip.pool_id,
'address': vip.address,
'floatip_address': vip.floatip_address,
'other_address': vip.other_address,
'subnet_id': vip.subnet_id,
'subnet': vip.subnet,
'protocol_port': vip.protocol_port,
'protocol': vip.protocol,
'session_persistence': vip.session_persistence['type'],
'cookie_name': vip.session_persistence['cookie_name'],
'admin_state_up': vip.admin_state_up}
form_data = {
'name': vip.name,
'description': vip.description,
'pool_id': vip.pool_id,
'address': vip.address,
'floatip_address': vip.floatip_address,
'other_address': vip.other_address,
'subnet_id': vip.subnet_id,
'subnet': vip.subnet,
'protocol_port': vip.protocol_port,
'protocol': vip.protocol,
'session_persistence': vip.session_persistence['type'].lower(),
'cookie_name': vip.session_persistence['cookie_name'],
'admin_state_up': vip.admin_state_up}
if with_conn_limit:
form_data['connection_limit'] = vip.connection_limit

Expand All @@ -354,17 +355,18 @@ def test_add_vip_post_with_error(self):

self.mox.ReplayAll()

form_data = {'name': vip.name,
'description': vip.description,
'pool_id': vip.pool_id,
'address': vip.address,
'subnet_id': vip.subnet_id,
'protocol_port': 65536,
'protocol': vip.protocol,
'session_persistence': vip.session_persistence['type'],
'cookie_name': vip.session_persistence['cookie_name'],
'connection_limit': -2,
'admin_state_up': vip.admin_state_up}
form_data = {
'name': vip.name,
'description': vip.description,
'pool_id': vip.pool_id,
'address': vip.address,
'subnet_id': vip.subnet_id,
'protocol_port': 65536,
'protocol': vip.protocol,
'session_persistence': vip.session_persistence['type'].lower(),
'cookie_name': vip.session_persistence['cookie_name'],
'connection_limit': -2,
'admin_state_up': vip.admin_state_up}

res = self.client.post(
reverse(self.ADDVIP_PATH, args=(pool.id,)), form_data)
Expand Down
18 changes: 15 additions & 3 deletions openstack_dashboard/dashboards/project/loadbalancers/workflows.py
Expand Up @@ -164,12 +164,21 @@ class AddVipAction(workflows.Action):
validators=[validators.validate_port_range])
protocol = forms.ChoiceField(label=_("Protocol"))
session_persistence = forms.ChoiceField(
required=False, initial={}, label=_("Session Persistence"))
required=False, initial={}, label=_("Session Persistence"),
widget=forms.Select(attrs={
'class': 'switchable',
'data-slug': 'persistence'
}))
cookie_name = forms.CharField(
initial="", required=False,
max_length=80, label=_("Cookie Name"),
help_text=_("Required for APP_COOKIE persistence;"
" Ignored otherwise."))
" Ignored otherwise."),
widget=forms.TextInput(attrs={
'class': 'switched',
'data-switch-on': 'persistence',
'data-persistence-app_cookie': 'APP_COOKIE',
}))
connection_limit = forms.IntegerField(
required=False, min_value=-1, label=_("Connection Limit"),
help_text=_("Maximum number of connections allowed "
Expand All @@ -191,7 +200,7 @@ def __init__(self, request, *args, **kwargs):

session_persistence_choices = [('', _("No Session Persistence"))]
for mode in ('SOURCE_IP', 'HTTP_COOKIE', 'APP_COOKIE'):
session_persistence_choices.append((mode, mode))
session_persistence_choices.append((mode.lower(), mode))
self.fields[
'session_persistence'].choices = session_persistence_choices

Expand All @@ -200,6 +209,9 @@ def __init__(self, request, *args, **kwargs):

def clean(self):
cleaned_data = super(AddVipAction, self).clean()
persistence = cleaned_data.get('session_persistence')
if persistence:
cleaned_data['session_persistence'] = persistence.upper()
if (cleaned_data.get('session_persistence') == 'APP_COOKIE' and
not cleaned_data.get('cookie_name')):
msg = _('Cookie name is required for APP_COOKIE persistence.')
Expand Down

0 comments on commit 66b76cf

Please sign in to comment.