注册 登录  
 加关注
   显示下一条  |  关闭
温馨提示!由于新浪微博认证机制调整,您的新浪微博帐号绑定已过期,请重新绑定!立即重新绑定新浪微博》  |  关闭

itoedr的it学苑

记录从IT文盲学到专家的历程

 
 
 

日志

 
 

OpenStack Dashboard功能结构分析  

2014-10-17 06:33:43|  分类: 开源云系统 |  标签: |举报 |字号 订阅

  下载LOFTER 我的照片书  |

         OpenStack Dashboard是openstack体系中的人机交互web界面,使用python开发而成。也是入手openstack的入口之一。
         如果需要自己定制openstack的dashboard,那么/openstack_dashboard/local/local_settings.py这个文件就比较重了,了解其中每一个参数的意义,然后对其中内容进行修改就可以看见你最想见到的面貌了。
作为一个django实例的horizon的基本必要组件          一个Dashboard(在django里称为app)通常情况下由四个组件组成,分别为:
              1)panel、2)可选tab、3)table、4)view
         其中,panel、tab和table用于导航的,真正展示数据的在view里面。它们之间的关系:
         1)panel包含tab
         2)tab包含 table
         3)view包含table或者tab。

         Horizon是OpenStack的一个子项目,用于提供一个Web前端控制台(称为Dashboard),以此来展示OpenStack的功 能。通常情况下,我们都是从Horizon、Dashboard开始来了解OpenStack的。实际上,Horizon并不会为OpenStack添加 任何一个新的功能,它只是使用了OpenStack部分API功能,因此,我们可以扩展Horizon的功能,扩展Dashboard。

          Horizon是一个基于Django项目的openstack云的可扩展框架。她使用openstack API,意在为openstack云管理员提供一个完整的OpenStack云的操作面板(WEB ui交互界面),随着可重用的组件的加入,使用开发者可以轻松构建新的仪表板子件。但是在实际使用中,你会发现,Horizon并没能全部分封装到所有openstack各个组件的API接口,因此在openstack云的管理中,horizon也还有不能全面应付的难题。

         实际上,很多新手也喜欢从这个web-ui来形开始学习openstack的。但随着openstack组件的专业化(openstack的规划简直有点象在重复了一次网络运算的工业再造,从计算规则到网络规划,再到应用容器的规划无所不包),让新手接触的感觉是越来越烫手了。

          horizon的软件的系统依赖:

           从下图可以看出,关于horizon的基本安装环境,除了需要python这个编程语言的支持之外(只支持python2.7-),那么django这个python的web开发框架必不可少,还有就是openstack的基础组件,毕竟,horizon也是对openstack的部分api的封装,因此必须有openstack的运行空间(如同c下的名字空间吧),其中nova、keystone、glance、nova-network(可以代替nova网络组件的新的同功能组件neutron也可以)必一可少(图1 是ubuntu的说明很明确)。

          OpenStack Dashboard功能结构分析 - itoedr - itoedr的it学苑

图1 ubuntu关于horizon的说明

          上文可以理解为:openstack-dashboard(别名就是horizon)是一个django框架的参考实现(demo) ,它使用了Django-Nova项目,目的在于给openstack云管理员提供一个与openstack nova云计算控制器进行交互的web站点(web-ui)方案。

OpenStack Dashboard功能结构分析 - itoedr - itoedr的it学苑
图2 openstack官网关于openstack安装的说明
更多详细资料:http://docs.openstack.org/developer/horizon/topics/install.html

 **********************************************************************         

Dashboard概览

OpenStack Dashboard功能分析 - itoedr - itoedr的it学苑
 

图3  Dashboard界面

       一个Dashboard(在django里称为app)通常情况下由四个组件组成,分别为panel、tab(可选)、table和view,如图 4所示。其中,panel、tab和table用于导航的,真正展示数据的在view里面。它们之间的关系是panel包含tab,tab包含 table,view包含table或者tab。

通过查看Horizon的源码,可从其目录结构看出它们之间的关系,如图2所示。

OpenStack Dashboard功能分析 - itoedr - itoedr的it学苑
 

图4  Horizon源码目录结构

在admin这个Dashboard里扩展添加一个monitoring的panel为例,下面实际介绍扩展OpenStack Dashboard的流程。

*******************************

扩展OpenStack Dashboard的实现流程

***********************************************

定义panel

         首先介绍Dashboard.py这个文件,它位于每个Dashboard的根目录,其作用是注册Dashboard(django里称为app)以及设置Dashboard的属性,比如Dashboard里有哪些panel。

         打开admin目录下的Dashboard.py文件,设置SystemPanels有monitoring的panel:

OpenStack Dashboard功能分析 - itoedr - itoedr的it学苑
图5
 

           我们可以在Dashboard.py文件里随意的添加、删除panel属性,这对于调试程序的时候很方便。

然后在amdin目录下创建一个monitoring的文件夹,并在monitoring文件夹里创建panel.py文件,定义panel:

OpenStack Dashboard功能分析 - itoedr - itoedr的it学苑
图6

         这是最简单的panel,只定义了其名字。注意:slug属性的值要与monitoring文件夹名字一样。当定义完成后,要记得将其注册到Dashboard里。

定义url

           Horizon是基于Django框架,程序是通过url来找到panel的,因此,需要在monitoring目录下建立urls.py文件,定义url:

OpenStack Dashboard功能分析 - itoedr - itoedr的it学苑
图7
 

定义table

            table用于展示数据,Horizon提供了DataTable基类,我们可以通过继承DataTable来实现自定义的table:

OpenStack Dashboard功能分析 - itoedr - itoedr的it学苑
  图8

在MonitoringTable里定义了两列resources和percent。

   定义view

           view是用来集成table或者tab的,Horizon提供了多种view类,下面使用DataTableView来自定义我们自己的IndexView:

OpenStack Dashboard功能分析 - itoedr - itoedr的it学苑
  图9

           在IndexView里定义好table_class和template_name的属性值,同时需要定义好get_data()方法,此方法用于获取数据展示在table里。

           至此,扩展Dashboard已完成,需要重启apache才能看到效果:sudo service apache2 restart。效果如下:

OpenStack Dashboard功能分析 - itoedr - itoedr的it学苑
图10
 
  评论这张
 
阅读(1475)| 评论(1)
推荐 转载

历史上的今天

在LOFTER的更多文章

评论

<#--最新日志,群博日志--> <#--推荐日志--> <#--引用记录--> <#--博主推荐--> <#--随机阅读--> <#--首页推荐--> <#--历史上的今天--> <#--被推荐日志--> <#--上一篇,下一篇--> <#-- 热度 --> <#-- 网易新闻广告 --> <#--右边模块结构--> <#--评论模块结构--> <#--引用模块结构--> <#--博主发起的投票-->
 
 
 
 
 
 
 
 
 
 
 
 
 
 

页脚

网易公司版权所有 ©1997-2017