如何扩展OpenStack Dashboard

77次阅读
没有评论

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

正文完
 
丸趣
版权声明:本站原创文章,由 丸趣 2023-08-03发表,共计1508字。
转载说明:除特殊说明外本站除技术相关以外文章皆由网络搜集发布,转载请注明出处。
评论(没有评论)