共計 1508 個字符,預計需要花費 4 分鐘才能閱讀完成。
這篇文章將為大家詳細講解有關如何擴展 OpenStack Dashboard,文章內容質量較高,因此丸趣 TV 小編分享給大家做個參考,希望大家閱讀完這篇文章后對相關知識有一定的了解。
Horizon 簡介
Horizon 是 OpenStack 的一個子項目,用于提供一個 Web 前端控制臺(稱為 Dashboard),以此來展示 OpenStack 的功能。通常情況下,我們都是從 Horizon、Dashboard 開始來了解 OpenStack 的。實際上,Horizon 并不會為 OpenStack 添加任何一個新的功能,它只是使用了 OpenStack 部分 API 功能,因此,我們可以擴展 Horizon 的功能,擴展 Dashboard。
擴展 Dashboard
Dashboard 概覽
圖 2 -1-1 Dashboard 界面
一個 Dashboard(在 django 里稱為 app)通常情況下由四個組件組成,分別為 panel、tab(可選)、table 和 view,如圖 2 -1- 1 所示。其中,panel、tab 和 table 用于導航的,真正展示數據的在 view 里面。它們之間的關系是 panel 包含 tab,tab 包含 table,view 包含 table 或者 tab。
通過查看 Horizon 的源碼,可從其目錄結構看出它們之間的關系,如圖 2 -1- 2 所示。
圖 2 -1-2 Horizon 源碼目錄結構
下面,我會以在 admin 這個 Dashboard 里擴展添加一個 monitoring 的 panel 為例,介紹擴展 OpenStack Dashboard 的流程。
定義 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 里。
定義 url
Horizon 是基于 Django 框架,程序是通過 url 來找到 panel 的,因此,需要在 monitoring 目錄下建立 urls.py 文件,定義 url:
定義 table
table 用于展示數據,Horizon 提供了 DataTable 基類,我們可以通過繼承 DataTable 來實現自定義的 table:
在 MonitoringTable 里定義了兩列 resources 和 percent。
定義 view
view 是用來集成 table 或者 tab 的,Horizon 提供了多種 vie 類,下面使用 DataTableView 來自定義我們自己的 IndexView:
在 IndexView 里定義好 table_class 和 template_name 的屬性值,同時需要定義好 get_data() 方法,此方法用于獲取數據展示在 table 里。
至此,擴展 Dashboard 已完成,需要重啟 apache 才能看到效果:sudo service apache2 restart。效果如下:
關于如何擴展 OpenStack Dashboard 就分享到這里了,希望以上內容可以對大家有一定的幫助,可以學到更多知識。如果覺得文章不錯,可以把它分享出去讓更多的人看到。