From 31c70d956262dab46ad263d42581c04e69fd85c4 Mon Sep 17 00:00:00 2001 From: Tyr Johanson Date: Tue, 16 Aug 2016 10:28:40 -0600 Subject: [PATCH] Hide panel if 'baremetal' service not present Don't show the ironic panel unless the service is present in the service catalog. Also, restrict the panel to admin permission. Change-Id: I413d50133e743a7bdc45378e3ed0454974b7b3c7 Closes-Bug: 1609005 --- ironic_ui/content/ironic/panel.py | 20 ++++++++++++++++++++ 1 file changed, 20 insertions(+) diff --git a/ironic_ui/content/ironic/panel.py b/ironic_ui/content/ironic/panel.py index c3eda24e..ac67b517 100644 --- a/ironic_ui/content/ironic/panel.py +++ b/ironic_ui/content/ironic/panel.py @@ -17,7 +17,27 @@ from django.utils.translation import ugettext_lazy as _ import horizon +from openstack_dashboard.api import base +from openstack_dashboard.dashboards.admin import dashboard + class Ironic(horizon.Panel): name = _("Ironic Bare Metal Provisioning") slug = 'ironic' + permissions = ('openstack.roles.admin',) + + def allowed(self, context): + request = context['request'] + if not base.is_service_enabled(request, 'baremetal'): + return False + else: + return super(Ironic, self).allowed(context) + + def nav(self, context): + request = context['request'] + if not base.is_service_enabled(request, 'baremetal'): + return False + else: + return True + +dashboard.Admin.register(Ironic)