8303782f1e
The root cause of 1479018 was the mixed method for loading content in horizon. This patch moves horizon to load purely from enabled files. There are a couple of things that were required to allow this change. 1) Adding a mechanism, can_register() to horizon/base.py to handle the configuration based loading checks that had been accumulating in the panel.py files. This is an optional static method in Panel to encapsulate such configuration (read settings) based panel loading logic. And added testing for and documentation for this addition. 2) Create a numbering scheme for plugins. Moved the base dashboards to _1000_project.py _2000_admin.py _3000_identity.py _5000_settings.py. then populated the required panel_group and panel enabled files sparsely in those ranges. The sparseness is to allow for future additions. Additionally, I moved the already added Angular based panels next to their Django counterparts. Once the configuration loading was normalized, the bug reported in 1479018 was resolved and tests work with plugins panels in all dashboards. Close-Bug: #1479018 Partially implements: blueprint plugin-sanity Change-Id: I657e7ce37b2593a901a859cebf3d6ff8ada91941
46 lines
1.6 KiB
Python
46 lines
1.6 KiB
Python
# Licensed under the Apache License, Version 2.0 (the "License"); you may
|
|
# not use this file except in compliance with the License. You may obtain
|
|
# a copy of the License at
|
|
#
|
|
# http://www.apache.org/licenses/LICENSE-2.0
|
|
#
|
|
# Unless required by applicable law or agreed to in writing, software
|
|
# distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
|
|
# WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
|
|
# License for the specific language governing permissions and limitations
|
|
# under the License.
|
|
|
|
import logging
|
|
|
|
from django.utils.translation import ugettext_lazy as _
|
|
|
|
import horizon
|
|
|
|
from openstack_dashboard.api import neutron
|
|
|
|
LOG = logging.getLogger(__name__)
|
|
|
|
|
|
class Firewall(horizon.Panel):
|
|
name = _("Firewalls")
|
|
slug = "firewalls"
|
|
permissions = ('openstack.services.network',)
|
|
|
|
def allowed(self, context):
|
|
request = context['request']
|
|
if not request.user.has_perms(self.permissions):
|
|
return False
|
|
try:
|
|
if not neutron.is_service_enabled(request,
|
|
config_name='enable_firewall',
|
|
ext_name='fwaas'):
|
|
return False
|
|
except Exception:
|
|
LOG.error("Call to list enabled services failed. This is likely "
|
|
"due to a problem communicating with the Neutron "
|
|
"endpoint. Firewalls panel will not be displayed.")
|
|
return False
|
|
if not super(Firewall, self).allowed(context):
|
|
return False
|
|
return True
|