當前位置:編程學習大全網 - 源碼下載 - 怎樣修改 Openstack Horizon的顯示界面

怎樣修改 Openstack Horizon的顯示界面

Openstack 有很多項目,比如 nova 是虛擬機管理,neutron 是虛擬網絡管理, glance 是存儲管理,而 horizon 是負責 Openstack 的統壹界面。horizon 的源代碼和 neutron 的不太壹樣,分布在兩個地方,壹個是/usr/lib/python2.7/dist-packages/horizon 下面,這裏放的是壹些最基本的、可以***享的類、表格和模板等。另壹個是/usr/share/openstack-dashboard 下面,這裏放的是跟界面有直接關系、更加具體的類、表格和模板等,也是我們需要修改的地方。

Horizon 是壹個基於 Django 的項目,如果熟悉 Django 的同學會發現其實 Horizon openstack-dashboard 裏面的文件命名與擺放位置與 Django 幾乎是壹樣的:

.../openstack-dashboard/

- bin/

- openstack_dashboard/

- static/

- manage.py

- settings.py

從這個文件夾的結構就可以看出來,openstack-dashboard 其實就是 Django 的壹個 project,而openstack_dashboard 是壹個 app。進入 app,我們可以看到,其中壹些比較重要的文件和文件夾有:

openstack_dashboard/

- __init__.py

- views.py

- urls.py

- settings.py

- dashboards/

- enabled/

- static/

- templates/

- test/

...

是不是很熟悉?壹下子就能知道各個文件和文件夾是用來幹嘛的。url.py 負責最頂層的 url 跳轉, views.py 負責接受和處理請求然後返回結果,static 裏面放靜態資源, templates 裏面放模板, test 裏面放 unittest。只有兩個文件夾需要探索壹下,dashboards 和 enabled。如果進到 enabled 文件夾裏去看壹下的話會發現,裏面有好多添加和刪除 panel 還有 group 的例子,其實這裏就是壹個可以比較簡單的在 horizon 裏面註冊我們自己想要新建的 panel 的地方。例如我們可以把_admin_add_panel.py.example 的後綴去掉,變成_admin_add_panel.py,然後修改其中的內容:

# The name of the panel to be added to HORIZON_CONFIG. Required.

PANEL = 'plugin_panel'

# The name of the dashboard the PANEL associated with. Required.

PANEL_DASHBOARD = 'admin'

# The name of the panel group the PANEL is associated with.

PANEL_GROUP = 'admin'

# Python panel class of the PANEL to be added.

ADD_PANEL = \

'openstack_dashboard.dashboards.admin.plugin_panel.panel.PluginPanel'

這樣,我們就在壹個叫做 admin 的 dashboard 裏面添加了壹個叫做 plugin_panel 的 panel,並且告訴 horizon 具體的定義將會在openstack_dashboard.dashboards.admin.plugin_panel.panel.PluginPanel 中出現。

那這個時候我們就要去 dashboards 裏面打量打量,然後做些具體的事情啦。首先我們可以看到 dashboards 的結構是這樣的:

dashboards/

- __init__.py

- admin/

- project/

-router/

- settings/

由此可知,horizon 現在***有三個 dashboards,分別是 admin,project,和 router。admin 代表的是管理員可以看到的界面,project 代表的是用戶可以看到的界面,兩者在操作權限上會有壹定的區別。而 router 的功用我也不是特別清楚。簡單保險起見,我們的自定義 panel 就落戶在 admin 中。admin 文件夾中包括了很多文件和子文件夾,我就不在這裏壹壹贅述了。我們直接在其中創建壹個子文件夾叫做 plugin_panel,然後再這個子文件夾中創建四個文件,使得這個文件夾看起來是這樣的:

plugin_panel/

- __init__.py

- panel.py

- url.py

- views.py

待會兒 PluginPanel 這個類就會定義在 panel.py 中,而 url.py 和 views.py 將會分別承擔這壹層的路由跳轉和收發請求及回復的作用。

  • 上一篇:請問以下幾張圖片出自哪幾部動漫?
  • 下一篇:python和c語言的區別是什麽
  • copyright 2024編程學習大全網