共计 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 就分享到这里了,希望以上内容可以对大家有一定的帮助,可以学到更多知识。如果觉得文章不错,可以把它分享出去让更多的人看到。