From d22e81efdc99f7bb8ebd9e99e0eebfe1bf5a9a43 Mon Sep 17 00:00:00 2001 From: Andres Buraschi Date: Tue, 7 Jan 2014 23:44:16 -0300 Subject: [PATCH] Friendlier information for lbaas members creation In order to improve the user experience when adding new members to a lbass pool, the help information shown in the 'Add Member' dialog has been completed. Now, it explains that all selected members get the same weight and port, and that later update is possible to achieve the expected configuration. In addition, the 'Weight' column has been added to the Member summary tab, in order to easily identify the results of the performed 'Add Member' action. The complete fix would implement a more efficient way (through custom widgets, perhaps) to select weight and port per instance. Change-Id: If9a3ea6d36741fb1ca1ae06fb2dd307a78f537de Partial-Bug: #1234688 --- .../project/loadbalancers/tables.py | 10 +++--- .../project/loadbalancers/workflows.py | 35 +++++++++++-------- 2 files changed, 27 insertions(+), 18 deletions(-) diff --git a/openstack_dashboard/dashboards/project/loadbalancers/tables.py b/openstack_dashboard/dashboards/project/loadbalancers/tables.py index 23565c6832..24bd107ba1 100644 --- a/openstack_dashboard/dashboards/project/loadbalancers/tables.py +++ b/openstack_dashboard/dashboards/project/loadbalancers/tables.py @@ -196,8 +196,8 @@ class DeletePMAssociationLink(tables.LinkAction): class PoolsTable(tables.DataTable): name = tables.Column("name", - verbose_name=_("Name"), - link="horizon:project:loadbalancers:pooldetails") + verbose_name=_("Name"), + link="horizon:project:loadbalancers:pooldetails") description = tables.Column('description', verbose_name=_("Description")) provider = tables.Column('provider', verbose_name=_("Provider"), filters=(lambda v: filters.default(v, _('N/A')),)) @@ -233,8 +233,10 @@ class MembersTable(tables.DataTable): attrs={'data-type': "ip"}) protocol_port = tables.Column('protocol_port', verbose_name=_("Protocol Port")) - pool_name = tables.Column("pool_name", - verbose_name=_("Pool"), link=get_pool_link) + weight = tables.Column('weight', + verbose_name=_("Weight")) + pool_name = tables.Column('pool_name', + verbose_name=_("Pool"), link=get_pool_link) status = tables.Column('status', verbose_name=_("Status")) class Meta: diff --git a/openstack_dashboard/dashboards/project/loadbalancers/workflows.py b/openstack_dashboard/dashboards/project/loadbalancers/workflows.py index bf59e2eca6..bdf196ee8b 100644 --- a/openstack_dashboard/dashboards/project/loadbalancers/workflows.py +++ b/openstack_dashboard/dashboards/project/loadbalancers/workflows.py @@ -299,16 +299,22 @@ class AddMemberAction(workflows.Action): initial=["default"], widget=forms.CheckboxSelectMultiple(), error_messages={'required': - _('At least one member must be specified')}, + _('At least one member must be specified')}, help_text=_("Select members for this pool ")) - weight = forms.IntegerField(max_value=256, min_value=0, label=_("Weight"), - required=False, - help_text=_("Relative part of requests this " - "pool member serves compared to others")) - protocol_port = forms.IntegerField(label=_("Protocol Port"), min_value=1, - help_text=_("Enter an integer value " - "between 1 and 65535."), - validators=[validators.validate_port_range]) + weight = forms.IntegerField( + max_value=256, min_value=1, label=_("Weight"), required=False, + help_text=_("Relative part of requests this pool member serves " + "compared to others. \nThe same weight will be applied to " + "all the selected members and can be modified later. " + "Weight must be in the range 1 to 256.") + ) + protocol_port = forms.IntegerField( + label=_("Protocol Port"), min_value=1, + help_text=_("Enter an integer value between 1 and 65535. " + "The same port will be used for all the selected " + "members and can be modified later."), + validators=[validators.validate_port_range] + ) admin_state_up = forms.BooleanField(label=_("Admin State"), initial=True, required=False) @@ -346,7 +352,6 @@ class AddMemberAction(workflows.Action): "for this pool ") self.fields['pool_id'].required = False self.fields['protocol_port'].required = False - return for m in servers: @@ -358,12 +363,14 @@ class AddMemberAction(workflows.Action): class Meta: name = _("Add New Member") permissions = ('openstack.services.network',) - help_text = _("Add member to selected pool.\n\n" + help_text = _("Add member(s) to the selected pool.\n\n" "Choose one or more listed instances to be " "added to the pool as member(s). " - "Assign a numeric weight for this member " - "Specify the port number the member(s) " - "operate on; e.g., 80.") + "Assign a numeric weight for the selected member(s). " + "Specify the port number the selected member(s) " + "operate(s) on; e.g., 80. \n\n" + "There can only be one port associated with " + "each instance.") class AddMemberStep(workflows.Step):