diff --git a/openstack_dashboard/api/neutron.py b/openstack_dashboard/api/neutron.py index f810df14f7..cc61ffdd07 100644 --- a/openstack_dashboard/api/neutron.py +++ b/openstack_dashboard/api/neutron.py @@ -859,6 +859,10 @@ def is_security_group_extension_supported(request): return is_extension_supported(request, 'security-group') +def is_agent_extension_supported(request): + return is_extension_supported(request, 'agent') + + # Using this mechanism till a better plugin/sub-plugin detection # mechanism is available. # Using local_settings to detect if the "router" dashboard diff --git a/openstack_dashboard/dashboards/admin/info/tabs.py b/openstack_dashboard/dashboards/admin/info/tabs.py index ada7f26661..397bea69d8 100644 --- a/openstack_dashboard/dashboards/admin/info/tabs.py +++ b/openstack_dashboard/dashboards/admin/info/tabs.py @@ -85,7 +85,8 @@ class NetworkAgentsTab(tabs.TableTab): template_name = constants.INFO_DETAIL_TEMPLATE_NAME def allowed(self, request): - return base.is_service_enabled(request, 'network') + return (base.is_service_enabled(request, 'network') and + neutron.is_agent_extension_supported(request)) def get_network_agents_data(self): try: diff --git a/openstack_dashboard/dashboards/admin/info/tests.py b/openstack_dashboard/dashboards/admin/info/tests.py index 0b4796548f..1fd14b2771 100644 --- a/openstack_dashboard/dashboards/admin/info/tests.py +++ b/openstack_dashboard/dashboards/admin/info/tests.py @@ -32,6 +32,8 @@ class SystemInfoViewTests(test.BaseAdminViewTests): def test_index(self): services = self.services.list() api.nova.service_list(IsA(http.HttpRequest)).AndReturn(services) + api.neutron.is_extension_supported(IsA(http.HttpRequest), + 'agent').AndReturn(True) agents = self.agents.list() api.neutron.agent_list(IsA(http.HttpRequest)).AndReturn(agents) @@ -83,6 +85,8 @@ class SystemInfoViewTests(test.BaseAdminViewTests): .MultipleTimes().AndReturn(True) api.nova.default_quota_get(IsA(http.HttpRequest), IgnoreArg()).AndReturn({}) + api.neutron.is_extension_supported(IsA(http.HttpRequest), + 'agent').AndReturn(True) api.neutron.is_extension_supported(IsA(http.HttpRequest), 'security-group').AndReturn(True) @@ -128,9 +132,12 @@ class SystemInfoViewTests(test.BaseAdminViewTests): if neutron_enabled: self.mox.StubOutWithMock(api.neutron, 'agent_list') + self.mox.StubOutWithMock(api.neutron, 'is_extension_supported') + api.neutron.is_extension_supported(IsA(http.HttpRequest), + 'agent').AndReturn(True) + api.neutron.agent_list(IsA(http.HttpRequest)).AndReturn([]) - self.mox.StubOutWithMock(api.neutron, 'is_extension_supported') api.neutron.is_extension_supported(IsA(http.HttpRequest), 'security-group').AndReturn(neutron_sg_enabled)