Dashboard二次开发简明教程
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。效果如下:

Dashboard二次开发简明教程的更多相关文章
- EcShop二次开发系列教程–总纲
EcShop作为老牌的B2C独立网店系统,功能非常全名,强大的文件.数据库缓存机制,保证前后台系统执行速度更快.系统平稳运行.但是过多的功能也或多或少的会影响到系统的整个效率,所有在使用EcShop搭 ...
- kubernetes dashboard 二次开发
Kubernetes Dashboard 二次开发 官方源码:https://github.com/kubernetes/dashboard 开发文档:https://github.com/kuber ...
- 原 JEECMS导入IDEA进行二次开发图文教程
JEECMS导入IDEA进行二次开发图文教程 2017年05月15日 17:03:53 Swain_Ho 阅读数 3257 版权声明:本文为博主原创文章,未经博主允许不得转载. https:// ...
- Dedesql数据库类详解(二次开发必备教程)(转)
http://www.dedecms.com/help/development/2009/1028/1076.html 织梦DedeCMS的二次开发不仅仅是会写写织梦的标签,会制作织梦的模板.很多时候 ...
- Dedesql数据库类详解(二次开发必备教程)
其实数据库类织梦之前就有一个介绍,http://help.dedecms.com/v53/archives/functions/db/,这篇文章讲解了数据库类的一些常见的使用方法,不过没有结合例子去介 ...
- ECshop 二次开发模板教程3
<p>商品列表</p> <table width="70%" border="1"> <tr> <td&g ...
- ECshop 二次开发模板教程2
不知道大家是学会用循环了呢,还是我的言语实在有问题,大家实在无法完成阅读哦,居然大家都没有问题,暂时心里安慰,把他当做好事情,大家都会调用了,呵呵,那我们继续循环调用商品了!好,继续在我们昨天的基础上 ...
- ECshop 二次开发模板教程1
本教程适用于了解 ECshop 和 ECshop模板DIY 以及它们的日常使用,在查看前阁下需要至少会使用一种编辑器(exp:Dreamweaver, editplus, emacs, vi, ee ...
- ECshop 二次开发模板教程4
今天我们学习一下如何在首页调取某个分类的商品:注意了,这里的修改有一些麻烦了哦:首先你需要下载一套新的模板,比如blueksy 上传到模板目录 /themes/ 也就是 /themes/bluesky ...
随机推荐
- 推荐eclipse插件Properties Editor(转)
Properties Editor 是一款properties文件编辑器. 需求:一般我们在做“国际化”功能时,我们需要properties中文表示方式用unicode表示.eclipse默认prop ...
- 一个SQL存储过程面试题(比较简单)
三个月前刚毕业的时候,听到存储过程就头疼. 写一个SQL存储过程,建立一个表USER 字段是姓名,年龄,职位,权限,然后向里面插入6条数据,然后查询出年龄大于18的所有信息. 下面是答案: 复制代码 ...
- 使用 JMeter 进行压力测试
一.前言 压力测试是每一个Web应用程序上线之前都需要做的一个测试,他可以帮助我们发现系统中的瓶颈问题,减少发布到生产环境后出问题的几率:预估系统的承载能力,使我们能根据其做出一些应对措施.所以压力测 ...
- python---生成器、迭代器
# -*- coding:utf-8 -*- # LC # 列表生成式 def func(x): print(x) return 2*x print([ func(i) for i in range( ...
- python做量化交易干货分享
http://www.newsmth.NET/nForum/#!article/Python/128763 最近程序化交易很热,量化也是我很感兴趣的一块. 国内量化交易的平台有几家,我个人比较喜欢用的 ...
- linux下安装apc
wget htdtp://pecl.php.net/get/APC tar zxvf APC-3.1.3p.tgz cd APC-3.1.3p /usr/local/php/bin/phpize ./ ...
- Spring Cache 笔记
@(Java ThirdParty)[Spring Cache] Spring Cache Abstraction 简介 Spring Cache提供了对底层缓存使用的抽象,通过注解的方式使用缓存,减 ...
- 基于Python的数据分析(2):字符串编码
在上一篇文章<基于Python的数据分析(1):配置安装环境>中的第四个步骤中我们在python的启动步骤中强制要求加载sitecustomize.py文件并设置其默认编码为"u ...
- 用Maven实现一个protobuf的Java例子
注:试验环境在Mac Idea环境下 1. 介绍Protocol Buffers Protocal Buffers(简称protobuf)是谷歌的一项技术,用于结构化的数据序列化.反序列化,常用于RP ...
- 想要薪资20-30K,Python程序员认真敲代码就够了!
在这个年代,互联网的飞速壮大大家有目共睹,除了表露出的公共受益,其中计算机编程者也是做出了巨大的贡献,即使外国编程语言仍旧属于领导者,但是在互联网的壮大下,我们这是"地球村",国内 ...