Horizon是OpenStack的一個子項目,用於提供一個Web前端控制台(稱為Dashboard),以此來展示OpenStack的功能。通常情況下,我們都是從Horizon、Dashboard開始來瞭解OpenStack的。實際上,Horizon並不會為OpenStack添加任何一個新的功能,它只是使用了OpenStack部分API功能,因此,我們可以擴充Horizon的功能,擴充Dashboard。
關於dashboard的介面,自己搭起環境後可以有一個直觀的感受。 Horizon源碼目錄結構
以在admin這個Dashboard裡擴充添加一個monitoring的panel為例,介紹擴充OpenStack Dashboard的流程。 1.定義panel
首先介紹Dashboard.py這個檔案,它位於每個Dashboard的根目錄,其作用是註冊Dashboard(django裡稱為app)以及設定Dashboard的屬性,比如Dashboard裡有哪些panel。
開啟admin目錄下的Dashboard.py檔案,設定SystemPanels有monitoring的panel:
我們可以在Dashboard.py檔案裡隨意的添加、刪除panel屬性,這對於偵錯工具的時候很方便。然後在amdin目錄下建立一個monitoring的檔案夾,並在monitoring檔案夾裡建立panel.py檔案,定義panel:
這是最簡單的panel,只定義了其名字。注意:slug屬性的值要與monitoring檔案夾名字一樣。當定義完成後,要記得將其註冊到Dashboard裡。 2.定義URL
Horizon是基於Django架構,程式是通過url來找到panel的,因此,需要在monitoring目錄下建立urls.py檔案,定義url:
3.定義Table
table用於展示資料,Horizon提供了DataTable基類,我們可以通過繼承DataTable來實現自訂的table:
在MonitoringTable裡定義了兩列resources和percent。 4.定義View
view是用來整合table或者tab的,Horizon提供了多種vie類,下面使用DataTableView來自訂我們自己的IndexView:在IndexView裡定義好table_class和template_name的屬性值,同時需要定義好get_data()方法,此方法用於擷取資料展示在table裡。
至此,擴充Dashboard已完成,需要重啟apache才能看到效果:sudo service apache2 restart。效果如下:
這篇文章網上很多,將其轉過來方便學習。