horizon源码分析(horizon模型)
本文目录一览:
- 1、openstack tables 列名怎么定义的
- 2、horizon analysis是什么意思
- 3、如何在eclipse上实现horizon源码的仿真,调试
- 4、如何调试和修改OpenStack中的Horizon部分
openstack tables 列名怎么定义的
一个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的流程。
horizon analysis是什么意思
横向分析,字面意思,但是其不同领域意思不同
是指利用预测的收益率曲线预测债券价格,得到预期的利率。即对一个企业不同时期的经营状况进行分析比较。它不同于垂直分析或静态分析。垂直分析只分析一个会计期的经营状况。
答题不易望采纳,不懂请追问
非常期待你的采纳
如何在eclipse上实现horizon源码的仿真,调试
1. 首先要搭建devstack平台并启动
2. 找到devstack平台中关于horizon到进程
因为一开始我也不知道哪个进程所horizon的,在ubuntu中查看进程到命令是:
ps -e
列出一堆进程,我通过grep去抓取horizon或dashboard发现都没也与之相关到进程。
后面想到我搭建到devstack平台中horizon调用到端口是8000。所以我就用查看端口的
命令:lsof -i:8000,成功获取了8000端口进程到ID,然后执行kill ID命令,杀死关于
horizon的进程。
3. 因为OpenStack基于Python语言开发,所以在eclipse中要添加Pydev插件,然后创建一个
Pydev工程,工程目录直接设置为devstack中horizon所在到目录。
4. 找到工程到程序入口,就可以对horizon源码进行仿真,仿真!
如何调试和修改OpenStack中的Horizon部分
Openstack 有很多项目,比如 nova 是虚拟机管理,neutron 是虚拟网络管理, glance 是存储管理,而 horizon 是负责 Openstack 的统一界面。horizon 的源代码和 neutron 的不太一样,分布在两个地方,一个是/usr/lib/python2.7/dist-packages/horizon 下面,这里放的是一些最基本的、可以共享的类、表格和模板等。另一个是/usr/share/openstack-dashboard 下面,这里放的是跟界面有直接关系、更加具体的类、表格和模板等,也是我们需要修改的地方。
Horizon 是一个基于 Django 的项目,如果熟悉 Django 的同学会发现其实 Horizon openstack-dashboard 里面的文件命名与摆放位置与 Django 几乎是一样的:
.../openstack-dashboard/
- bin/
- openstack_dashboard/
- static/
- manage.py
- settings.py
从这个文件夹的结构就可以看出来,openstack-dashboard 其实就是 Django 的一个 project,而openstack_dashboard 是一个 app。进入 app,我们可以看到,其中一些比较重要的文件和文件夹有:
openstack_dashboard/
- __init__.py
- views.py
- urls.py
- settings.py
- dashboards/
- enabled/
- static/
- templates/
- test/
...
是不是很熟悉?一下子就能知道各个文件和文件夹是用来干嘛的。url.py 负责最顶层的 url 跳转, views.py 负责接受和处理请求然后返回结果,static 里面放静态资源, templates 里面放模板, test 里面放 unittest。只有两个文件夹需要探索一下,dashboards 和 enabled。如果进到 enabled 文件夹里去看一下的话会发现,里面有好多添加和删除 panel 还有 group 的例子,其实这里就是一个可以比较简单的在 horizon 里面注册我们自己想要新建的 panel 的地方。例如我们可以把_admin_add_panel.py.example 的后缀去掉,变成_admin_add_panel.py,然后修改其中的内容:
# The name of the panel to be added to HORIZON_CONFIG. Required.
PANEL = 'plugin_panel'
# The name of the dashboard the PANEL associated with. Required.
PANEL_DASHBOARD = 'admin'
# The name of the panel group the PANEL is associated with.
PANEL_GROUP = 'admin'
# Python panel class of the PANEL to be added.
ADD_PANEL = \
'openstack_dashboard.dashboards.admin.plugin_panel.panel.PluginPanel'
这样,我们就在一个叫做 admin 的 dashboard 里面添加了一个叫做 plugin_panel 的 panel,并且告诉 horizon 具体的定义将会在openstack_dashboard.dashboards.admin.plugin_panel.panel.PluginPanel 中出现。
那这个时候我们就要去 dashboards 里面打量打量,然后做些具体的事情啦。首先我们可以看到 dashboards 的结构是这样的:
dashboards/
- __init__.py
- admin/
- project/
-router/
- settings/
由此可知,horizon 现在共有三个 dashboards,分别是 admin,project,和 router。admin 代表的是管理员可以看到的界面,project 代表的是用户可以看到的界面,两者在操作权限上会有一定的区别。而 router 的功用我也不是特别清楚。简单保险起见,我们的自定义 panel 就落户在 admin 中。admin 文件夹中包括了很多文件和子文件夹,我就不在这里一一赘述了。我们直接在其中创建一个子文件夹叫做 plugin_panel,然后再这个子文件夹中创建四个文件,使得这个文件夹看起来是这样的:
plugin_panel/
- __init__.py
- panel.py
- url.py
- views.py
待会儿 PluginPanel 这个类就会定义在 panel.py 中,而 url.py 和 views.py 将会分别承担这一层的路由跳转和收发请求及回复的作用。