一、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類
在文件的最後依然要進行註冊