一、Horizon 基本框架
二、侧边控制面板
三、Panel 文件
使用 RDO 进行Openstack 的部署后, Horizon的 Dashboard 源代码位置位于:/usr/share/openstack-dashboard/openstack_dashboard/dashboards
我们可以通过修改这个目录下的源代码来直接修改页面。
一、Horizon 基本框架
以__init__ 开头的文件是Django 框架用来标示源代码所在的文件,在此目录下每创建一个文件夹,都在在其中创建一个 __init__.py 文件,用来使此文件夹能够被找到。每一个下一级的文件夹都会包含 __init__.py文件
其中Dashboard 包含四个文件夹:
admin #管理员页面
project #面向用户页面
router #路由器
settings #设置页面
二、侧边控制面板
在上面四个文件夹中,每个文件夹都会包含一个 dashboard.py文件。
引的包为:
from django.utils.translation import ugettext_lazy as _
import horizon
文件中都会定义一个继承自 horizon.Dashboard 与 文件夹同名的类:
class Admin(horizon.Dashboard):
name = _("Admin")
slug = "admin"
panels = (SystemPanels, IdentityPanels)
default_panel = ‘overvoew'
permissions = ('openstack.roles.admin',)
这一段代码 定义了侧边面板的一级菜单,下面包含了两个二级菜单,分别为:<pre name="code" class="html">SystemPanels, IdentityPanels
接下来还要在代码中定义每个二级菜单:(继承自PanelGroup)
class IdentityPanels(horizon.PanelGroup):
slug = "identity"
name = _("Identity Panel")
panels = ('domains', 'projects', 'users', 'groups', 'roles')
其中的panels 为侧边面板的三级菜单。每个panel 都 对应Admin下的一个文件夹
在文件的最后还要有一行代码:
horizon.register(Admin)
表示在horizon 中注册了Admin 面板
根据以上的分析,可以得出horizon的架构图:
dashboard -> PanelGroup -> Panel
而继承的类以及为:
horizon.Dashboard -> horizon,PanelGroup -> horizon .Panel
三、Panel 文件
panel文件代码:
from django.utils.translation import ugettext_lazy as _
import horizon
from openstack_dashboard.dashboards.admin import dashboard
class Info(horizon.Panel):
name = _("System Info")
slug = 'info'
dashboard.Admin.register(Info)
从中可以看出Panel 继承的是 horizon.Panel类
在文件的最后依然要进行注册