/usr/lib/python2.7/dist-packages/horizon 其他openstack组件也在这里 ...进该目录后,用ll命令查看。该目录的文件有对应的指向 其实就是指向上面的那个目录里的文件
/usr/lib/python2.7/dist-packages/django/conf/project_template/settings.py
/usr/share/pyshared/django/conf/project_template/settings.py
/usr/share/openstack-dashboard/openstack_dashboard/settings.py
/usr/share/openstack-dashboard/settings.py
不同版本文件目录结构不大一样,但是大体能找到在什么地方 。本文以Essex版本介绍
./tests/templates/base.html
./dashboards/settings/templates/settings/base.html
./dashboards/nova/templates/nova/base.html
./dashboards/syspanel/templates/syspanel/base.html
@register.inclusion_tag('horizon/_subnav_list.html', takes_context=True)
def horizon_dashboard_nav(context):
""" Generates sub-navigation entries for the current dashboard. """
if 'request' not in context:
return {}
dashboard = context['request'].horizon['dashboard']
panel_groups = dashboard.get_panel_groups()
non_empty_groups = []
for group in panel_groups.values():
allowed_panels = []
for panel in group:
if callable(panel.nav) and panel.nav(context):
allowed_panels.append(panel)
elif not callable(panel.nav) and panel.nav:
allowed_panels.append(panel)
if allowed_panels:
non_empty_groups.append((group.name, allowed_panels))
return {'components': SortedDict(non_empty_groups),
'user': context['request'].user,
'current': context['request'].horizon['panel'].slug,
'request': context['request']}
from django.utils.translation import ugettext_lazy as _
import horizon
class SystemPanels(horizon.PanelGroup):
slug = "syspanel"
name = _("System Panel")
panels = ('overview', 'instances', 'services', 'flavors', 'images',
'projects', 'users', 'quotas',)
class Syspanel(horizon.Dashboard):
name = _("Admin")
slug = "syspanel"
panels = (SystemPanels,)
default_panel = 'overview'
roles = ('admin',)
horizon.register(Syspanel)
from django.utils.translation import ugettext_lazy as _
import horizon
from horizon.dashboards.syspanel import dashboard
class Quotas(horizon.Panel):
name = _("Quotas") 菜单显示名字
slug = 'quotas' 与dashboard.py中保持一致
dashboard.Syspanel.register(Quotas)