Merge "Show associated ports in firewall group detail"

This commit is contained in:
Zuul 2018-02-20 22:02:01 +00:00 committed by Gerrit Code Review
commit eb85137174
2 changed files with 40 additions and 1 deletions

View File

@ -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 = []

View File

@ -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)