v1 dashboard: Move API wrapper related stuff to API layer

Change-Id: I1204120ec84527035a556b4d69e712ed60038f35
This commit is contained in:
Akihiro Motoki 2017-09-05 18:10:52 +00:00
parent 6de122d475
commit ee641e6d1b
4 changed files with 44 additions and 32 deletions

View File

@ -231,7 +231,8 @@ def firewall_create(request, **kwargs):
@profiler.trace
def firewall_list(request, **kwargs):
return _firewall_list(request, expand_policy=True, **kwargs)
return _firewall_list(request, expand_policy=True, expand_router=True,
**kwargs)
@profiler.trace
@ -250,14 +251,37 @@ def firewall_list_for_tenant(request, tenant_id, **kwargs):
return firewall_list(request, tenant_id=tenant_id, **kwargs)
def _firewall_list(request, expand_policy, **kwargs):
def _firewall_list(request, expand_policy, expand_router, **kwargs):
firewalls = neutronclient(request).list_firewalls(
**kwargs).get('firewalls')
if expand_policy and firewalls:
policies = _policy_list(request, expand_rule=False)
policy_dict = OrderedDict((p.id, p) for p in policies)
for fw in firewalls:
fw['policy'] = policy_dict.get(fw['firewall_policy_id'])
if expand_router and firewalls:
if neutron.is_extension_supported(request, 'fwaasrouterinsertion'):
filter_params = {}
if 'tenant_id' in kwargs:
filter_params['tenant_id'] = kwargs['tenant_id']
routers = neutron.router_list(request, **filter_params)
router_dict = dict((r.id, r) for r in routers)
def _get_router(router_id):
try:
return router_dict[router_id]
except KeyError:
return neutron.Router({'id': router_id, 'name': ''})
for fw in firewalls:
fw['routers'] = [_get_router(router_id)
for router_id in fw['router_ids']]
else:
for fw in firewalls:
fw['routers'] = fw['router_ids']
return [Firewall(f) for f in firewalls]

View File

@ -17,8 +17,6 @@ from django.utils.translation import ugettext_lazy as _
from horizon import exceptions
from horizon import tabs
from openstack_dashboard import api
from neutron_fwaas_dashboard.api import fwaas as api_fwaas
from neutron_fwaas_dashboard.dashboards.project.firewalls import tables
@ -76,20 +74,10 @@ class FirewallsTab(tabs.TableTab):
tenant_id = self.request.user.tenant_id
request = self.tab_group.request
firewalls = api_fwaas.firewall_list_for_tenant(request, tenant_id)
if api.neutron.is_extension_supported(request,
'fwaasrouterinsertion'):
routers = api.neutron.router_list(request, tenant_id=tenant_id)
for fw in firewalls:
fw.routers = [r for r in routers
if r['id'] in fw['router_ids']]
except Exception:
firewalls = []
exceptions.handle(self.tab_group.request,
_('Unable to retrieve firewall list.'))
return firewalls

View File

@ -75,8 +75,6 @@ class FirewallTests(test.TestCase):
IsA(http.HttpRequest), tenant_id).AndReturn(firewalls)
routers = self.routers.list()
api.neutron.router_list(
IsA(http.HttpRequest), tenant_id=tenant_id).AndReturn(routers)
api_fwaas.firewall_unassociated_routers_list(
IsA(http.HttpRequest), tenant_id).\
MultipleTimes().AndReturn(routers)
@ -101,8 +99,7 @@ class FirewallTests(test.TestCase):
'policy_list_for_tenant',
'rule_list_for_tenant',
'firewall_unassociated_routers_list',),
api.neutron: ('is_extension_supported',
'router_list',), })
api.neutron: ('is_extension_supported',), })
def test_index_firewalls(self):
self.set_up_expect()
@ -125,8 +122,7 @@ class FirewallTests(test.TestCase):
'policy_list_for_tenant',
'rule_list_for_tenant',
'firewall_unassociated_routers_list',),
api.neutron: ('is_extension_supported',
'router_list',), })
api.neutron: ('is_extension_supported',), })
def test_index_policies(self):
self.set_up_expect()
@ -147,8 +143,7 @@ class FirewallTests(test.TestCase):
'policy_list_for_tenant',
'rule_list_for_tenant',
'firewall_unassociated_routers_list',),
api.neutron: ('is_extension_supported',
'router_list',), })
api.neutron: ('is_extension_supported',), })
def test_index_rules(self):
self.set_up_expect()
@ -840,14 +835,6 @@ class FirewallTests(test.TestCase):
api.neutron: ('is_extension_supported',
'router_list',)})
def test_delete_firewall(self):
api.neutron.is_extension_supported(
IsA(http.HttpRequest), 'fwaasrouterinsertion'
).MultipleTimes().AndReturn(True)
routers = self.routers.list()
api.neutron.router_list(
IsA(http.HttpRequest), tenant_id=self.tenant.id).AndReturn(routers)
fwl = self.firewalls.first()
api_fwaas.firewall_list_for_tenant(
IsA(http.HttpRequest), self.tenant.id).AndReturn([fwl])

View File

@ -352,7 +352,9 @@ class FwaasApiTests(test.APITestCase):
# add router to firewall and remove router from fw.
@test.create_stubs({neutronclient: ('list_firewalls',
'list_firewall_policies')})
'list_firewall_policies'),
api_neutron: ('is_extension_supported',
'router_list')})
def test_firewall_list(self):
exp_firewalls = self.firewalls.list()
firewalls_dict = {'firewalls': self.api_firewalls.list()}
@ -360,6 +362,10 @@ class FwaasApiTests(test.APITestCase):
neutronclient.list_firewalls().AndReturn(firewalls_dict)
neutronclient.list_firewall_policies().AndReturn(policies_dict)
api_neutron.is_extension_supported(
mox.IsA(http.HttpRequest), 'fwaasrouterinsertion').AndReturn(True)
api_neutron.router_list(mox.IsA(http.HttpRequest)) \
.AndReturn(self.routers.list())
self.mox.ReplayAll()
ret_val = api_fwaas.firewall_list(self.request)
@ -367,7 +373,9 @@ class FwaasApiTests(test.APITestCase):
self._assert_firewall_return_value(v, d)
@test.create_stubs({neutronclient: ('list_firewalls',
'list_firewall_policies')})
'list_firewall_policies'),
api_neutron: ('is_extension_supported',
'router_list')})
def test_firewall_list_for_tenant(self):
tenant_id = self.request.user.project_id
exp_firewalls = self.firewalls.list()
@ -377,6 +385,11 @@ class FwaasApiTests(test.APITestCase):
neutronclient.list_firewalls(tenant_id=tenant_id) \
.AndReturn(firewalls_dict)
neutronclient.list_firewall_policies().AndReturn(policies_dict)
api_neutron.is_extension_supported(
mox.IsA(http.HttpRequest), 'fwaasrouterinsertion').AndReturn(True)
api_neutron.router_list(mox.IsA(http.HttpRequest),
tenant_id=self.request.user.project_id) \
.AndReturn(self.routers.list())
self.mox.ReplayAll()
ret_val = api_fwaas.firewall_list_for_tenant(self.request, tenant_id)