Show associated ports in firewall group detail
Change-Id: I4f86f24dc8fba900bf8b1e8e1da7d4cddd828502
Closes-Bug: #1728835
(cherry picked from commit 1521895fcc
)
This commit is contained in:
parent
93ea8d3b23
commit
2acd997eed
|
@ -22,6 +22,8 @@ from django.utils.translation import ungettext_lazy
|
|||
|
||||
from horizon import exceptions
|
||||
from horizon import tables
|
||||
from openstack_dashboard.dashboards.project.networks.ports \
|
||||
import tables as port_tables
|
||||
from openstack_dashboard import policy
|
||||
|
||||
from neutron_fwaas_dashboard.api import fwaas_v2 as api_fwaas_v2
|
||||
|
@ -257,6 +259,12 @@ def get_ports_name(datum):
|
|||
return len(datum.ports)
|
||||
|
||||
|
||||
def get_ports_link(datum):
|
||||
url = reverse("horizon:project:firewalls_v2:firewallgroupdetails",
|
||||
args=(datum.id,))
|
||||
return '%s?tab=%s__%s' % (url, 'firewallgrouptabs', 'ports_tab')
|
||||
|
||||
|
||||
def get_ingress_policy_link(datum):
|
||||
if datum.ingress_firewall_policy_id:
|
||||
return reverse('horizon:project:firewalls_v2:policydetails',
|
||||
|
@ -382,6 +390,7 @@ class FirewallGroupsTable(tables.DataTable):
|
|||
link=get_egress_policy_link,
|
||||
verbose_name=_("Egress Policy"))
|
||||
ports = tables.Column(get_ports_name,
|
||||
link=get_ports_link,
|
||||
verbose_name=_("Ports"))
|
||||
|
||||
status = tables.Column("status",
|
||||
|
@ -404,3 +413,12 @@ class FirewallGroupsTable(tables.DataTable):
|
|||
DeleteFirewallGroupLink,
|
||||
AddPortToFirewallGroupLink,
|
||||
RemovePortFromFirewallGroupLink)
|
||||
|
||||
|
||||
class FirewallGroupPortsTable(port_tables.PortsTable):
|
||||
|
||||
class Meta(object):
|
||||
name = 'ports'
|
||||
verbose_name = _('Ports')
|
||||
table_actions = []
|
||||
row_actions = []
|
||||
|
|
|
@ -16,6 +16,7 @@ from django.utils.translation import ugettext_lazy as _
|
|||
|
||||
from horizon import exceptions
|
||||
from horizon import tabs
|
||||
from openstack_dashboard.api import neutron as api_neutron
|
||||
|
||||
from neutron_fwaas_dashboard.api import fwaas_v2 as api_fwaas_v2
|
||||
from neutron_fwaas_dashboard.dashboards.project.firewalls_v2 import tables
|
||||
|
@ -123,6 +124,26 @@ class FirewallGroupDetailsTab(tabs.Tab):
|
|||
return {"firewall_group": self.tab_group.kwargs['firewallgroup']}
|
||||
|
||||
|
||||
class FirewallGroupPortsTab(tabs.TableTab):
|
||||
name = _("Ports")
|
||||
slug = "ports_tab"
|
||||
table_classes = (tables.FirewallGroupPortsTable,)
|
||||
template_name = ("horizon/common/_detail_table.html")
|
||||
preload = False
|
||||
|
||||
def get_ports_data(self):
|
||||
port_ids = self.tab_group.kwargs['firewallgroup']['ports']
|
||||
if not port_ids:
|
||||
return []
|
||||
try:
|
||||
ports = api_neutron.port_list(self.request, id=port_ids)
|
||||
except Exception:
|
||||
ports = []
|
||||
msg = _('Failed to retrieve port list of the firewall group.')
|
||||
exceptions.handle(self.request, msg)
|
||||
return ports
|
||||
|
||||
|
||||
class FirewallGroupTabs(tabs.TabGroup):
|
||||
slug = "fwtabs"
|
||||
tabs = (FirewallGroupsTab, PoliciesTab, RulesTab)
|
||||
|
@ -141,4 +162,4 @@ class PolicyDetailsTabs(tabs.TabGroup):
|
|||
|
||||
class FirewallGroupDetailsTabs(tabs.TabGroup):
|
||||
slug = "firewallgrouptabs"
|
||||
tabs = (FirewallGroupDetailsTab,)
|
||||
tabs = (FirewallGroupDetailsTab, FirewallGroupPortsTab)
|
||||
|
|
Loading…
Reference in New Issue