OpenStack Folsom版本出来也一段时间了,整理了一下界面dashboards项目horizon整体内容,部分节选自计划出版的《云计算与OpenStack》。

    在整个OpenStack应用体系框架中,Horizon就是整个应用的入口。他提供了一个模块化的基于WEB的图形化界面服务门户。用户可以通过浏览器使用这个WEB UI来访问、控制控制他们的计算、存储和网络资源,如启动实例,分配IP地址,设置访问控制等。

     Horizon为两种角色的用户提供了不同的功能界面:

  • 云管理员

    提供了一个整体视图,可以总揽整个云的资源大小及运行状况。可以创建终端用户和项目,向终端用户分配项目和项目可使用资源的配额管理。

  •  终端用户

   提供了一个自主服务门户,可以在由管理员分配的项目中,在不超过配额限制的范围内,自由操作、使用计算、存储和网络资源。

    下面从功能架构、开发架构、和如何定制改造几方面进行剖析。

1. 功能架构

    新版本horizon是下面架构图中dashboard,作为OpenStack界面门户统一访问,通过API方式调用各子系统接口。

   folsom版本horizon架构剖析

     Horizon主要由三个Dashboard:用户Dashboard、系统Dashboard和设置Dashboard。这三个Dashboard组成了Horizon的核心应用。(下图用户dashboard功能架构)

folsom版本horizon架构剖析



     系统Dashboard和设置Dashboard是为云管理员提供的界面操作功能,可以总揽整个云的资源大小及运行状况。可以创建终端用户和项目,向终端用户分配项目和项目可使用资源的配额管理。用户Dashboard是为终端用户提供的自主服务门户,可以在由管理员分配的项目中,在不超过配额限制的范围内,自由操作、使用计算、存储和网络资源。

2.开发架构
    

    Horizon中有两个主要的app:horizon和openstack_dashboard。

    horizon app中定义了两个非常重要的对象:Dashboard和Panel。以及其他的一些界面展示相关的对象,比如form、table、tabs等。

    Dashboard和Panel分别都是Django的app,在horizon app中定义了这两种对象app。从Dashboard app派生出来的app提供了顶级导航菜单相关页面。而Panel则是在Dashboard下的二级导航菜单相关页面。

                            

folsom版本horizon架构剖析




    openstack_dashboard app中则是注册了其他所有操作功能的app,可以看出有syspanel(管理员),nova(普通终端用户)、settings(设置)3个dashboard。

folsom版本horizon架构剖析

 

之后在nova里面instances对应虚拟机管理,volumes对应弹性硬盘EBS

folsom版本horizon架构剖析

3定制Horizon

     国内大多企业公司部署使用OpenStack更多是应用,使用而不是大幅改造,定制属于自己特色的界面,可以通过修改标题、logo等简单应用实现。

3.1修改WEB应用的标题

         Horizon WEB应用的默认标题是“OpenStack Dashboard”。通过在local_settings.py 文件中添加属性“SITE_BRANDING”可以覆盖这个默认值。

3.2修改Horizon的logo

         Horizon中的OpenStack的logo是放置在style.css文件中的。

 

#splash .modal {

background: #fff url(../images/logo.png) no-repeat center 35px;

 

h1.brand a {

background: url(../images/logo.png) top left no-repeat;

         OpenStack的logo文件是放在” horizon/openstack-dashboard/dashboard/static/dashboard/images/logo.png”路径下的。替换这个文件就可以了。

         Logo文件的大小是:“width: 108px, height: 121px”。

3.3 修改Dashboard和Panel

         如果你想要为Horizon增加一个模块,可以在settings.py中为” HORIZON_CONFIG”参数增加一个” customization_module”属性,值为新python模块的完整包路径即可。

         例如:

 

HORIZON_CONFIG = {

    "customization_module": "my_project.overrides"

}

         原则上你可以定制这个模块的任何内容,比如修改Panel的标题:

 

from django.utils.translation import ugettext_lazy as _

 

import horizon

 

# Rename "OpenStack Credentials" to "OS Credentials"

settings = horizon.get_dashboard("settings")

project_panel = settings.get_panel("project")

project_panel.name = _("OS Credentials")

3.4 国际化

自从Folsom版本之后,Horizon已经支持汉化,有部分翻译没有完全做好,可以进一步汉化。Horizon的汉化还是比较简单的,根据django框架增加和修改对应的国际化属性文件就可以了。安装完毕folsom后可以通过2个目录找到horizon

 

/usr/share/openstack_dashboard

/usr/lib/python2.7/dist-packags/horizon

 

 

 

基本上修改locale中的po文件,例如:

 

/horizon-2012.2/horizon/locale/zh_CN/LC_MESSAGES/django.po

/horizon-2012.2/horizon/locale/zh_CN/LC_MESSAGES/djangojs.po

         基于UTF-8 unix文本模式下编辑对应的标签:

 

#: dashboards/nova/images_and_snapshots/templates/images_and_snapshots/images/_update.html:7

#: dashboards/nova/images_and_snapshots/templates/images_and_snapshots/images/_update.html:22

#: dashboards/nova/images_and_snapshots/templates/images_and_snapshots/images/update.html:3

#: dashboards/nova/images_and_snapshots/templates/images_and_snapshots/images/update.html:6

#: dashboards/syspanel/images/templates/images/_update.html:8

#: dashboards/syspanel/images/templates/images/_update.html:23

#: dashboards/syspanel/images/templates/images/update.html:4

#: dashboards/syspanel/images/templates/images/update.html:7

msgid "Update Image"

msgstr "更新镜像"

         之后在项目应用目录通过” django-admin compilemessages”命令编译po文件,生成对应的mo文件:

 

root@essex1:/usr/lib/python2.7/dist-packages/horizon# django-admin compilemessages

processing file django.po in /usr/lib/python2.7/dist-packages/horizon/locale/es/LC_MESSAGES

processing file django.po in /usr/lib/python2.7/dist-packages/horizon/locale/zh_TW/LC_MESSAGES

processing file django.po in /usr/lib/python2.7/dist-packages/horizon/locale/pl/LC_MESSAGES

processing file django.po in /usr/lib/python2.7/dist-packages/horizon/locale/pt/LC_MESSAGES

processing file django.po in /usr/lib/python2.7/dist-packages/horizon/locale/fr/LC_MESSAGES

processing file django.po in /usr/lib/python2.7/dist-packages/horizon/locale/ja/LC_MESSAGES

processing file django.po in /usr/lib/python2.7/dist-packages/horizon/locale/zh_CN/LC_MESSAGES                   

         如果报错:“sh: 1: msgfmt: not found”,请安装gettext,如在ubuntu执行:“apt-get install gettext”。

         重启apache,重新访问即可。




Logo

华为开发者空间,是为全球开发者打造的专属开发空间,汇聚了华为优质开发资源及工具,致力于让每一位开发者拥有一台云主机,基于华为根生态开发、创新。

更多推荐