Openstack Horizon 開發 (一)

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







發佈了29 篇原創文章 · 獲贊 1 · 訪問量 3萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章