进入openstack这个领域大约有一年了,由于某些原因,对openstack各方面都有些了解,不过对openstack也就感觉刚刚入门而已。这期间对openstack的界面进行过一些定制,现在进行个梳理总结。博文中如有说得不对的地方请大家谅解,同时欢迎大家指正,共同提升。
基本认识
openstack的dashboard是允许用户管理openstack资源和服务的一个web接口。
openstack的界面相关的代码有三部分:
- 各类控件的基类,页面的通用模板等
/usr/lib/python2.7/site-packages/horizon
- 界面具体样式,数据获取等
/usr/share/openstack-dashboard
- 还有个容易被忽略的,登录认证界面
/usr/lib/python2.7/site-packages/openstack_auth
openstack的菜单总共分为三级,Dashboard、Panelgroup、Panel,分别如下图标记1/2/3所示
有了以上认识,接下来就看看如何增加Panel
增加Panel
要增加一个panel首先得简单看看代码结构,进入/usr/share/openstack-dashbaord/openstack_dashboard/dashboards目录,会看到如下的结构:
|--__init__.py
|--admin
|--project
|--identity
|--router
|--settings
以上几个文件夹就代表了openstack界面上的几个一级菜单(Dashboard),分别是admin(管理员)、project(项目)、identity(Identity)、settings(设置,这个一级菜单需要点击右上角下拉中的设置才会显示出来)、router(配置文件中将profile_support打开可见,ciso nexus 1000v的管理面板)。现在选择admin进去看看它的目录结构。
admin
admin
|--__init__.py
|--aggregates
|--dashboard.py
|--defaults
|--flavors
|--hypervisors
|--images
|--info
|--instances
|--metadta_defs
|--metering
|--models.py
|--networks
|--overview
|--routers
|--volumes
仔细研究可以发现这些文件夹都一一对应了管理员(admin)下的各个Panel,首先看看Dashboard的类似于配置文件的东西dashboard.py,它就是描述Dashboard的python文件。
|-dashboard.py
from django.utils.translation import ugettext_lazy as _
import horizon
class SystemPanels(horizon.PanelGroup):
slug = "admin"
name = _("System")
panels = ('overview', 'metering', 'hypervisor