二次开发: Openstack用Horizon在Dashboard上定制新页面
前言:
Horizon 提供可视化的 GUI 图形界面,让用户去操作这些项目使用的各种资源。
那Horizon 的内部架构是怎么样的?我们如果要做二次开发,应该怎么去做?
Openstack Horizon Dashboard 是一套基于Django Web 框架实现的Web界面。
了解 Horizon 应首先去了解 Python 的一个 Web 开发框架 Django。
Openstack Horizon 组件 部署上去后,源码分两部分:
1.一部分是Dashboard页面的源码,目录在/usr/share/openstack-dashboard
2.另一部分是Horizon模块的horizon界面库文件(dashboard界面通用组件的库),目录在/usr/lib/python2.7/site-packages/horizon
Dashboard页面的源码/usr/share/openstack-dashboard中,调用/usr/lib/python2.7/site-packages/horizon库,实现界面的渲染。
Openstack Horizon Dashboard 是一套基于Django Web 框架实现的Web界面,因此源码/usr/share/openstack-dashboard中结构,和Django的源码目录结构是一样的。
Openstack Dashboard上定制新页面:
[ Dashboard 内部分为三个层次:]
Dashboard
PanelGroup
Panel
每一个 Dashboard 在 Django 里都是一个 App,OpenStack 的文件夹里的 openstack_dashboard 文件夹里有一个 settings.py 文件,里面有一个变量叫 INSTALLED_APP 定义了目前存在的这些 dashboard。
每一组可视化的界面都是PanelGroup,即Dashboard界面上左边的导航栏面板组,如Project \ Admin \ Identity 三个面板组,
每个面板组PanelGroup里面,又分为多个面板Panel,如Admin下面的Overview \ Hypervisors \ Volumes 等,每个Panel一个页面。
这三个层次,与代码的对应关系:
/usr/share/openstack-dashboard/openstack_dashboard <---------> Dashboard
/usr/share/openstack-dashboard/openstack_dashboard/dashboards