b2c信息网

您现在的位置是:首页 > 热点问题 > 正文

热点问题

horizon源码分析(horizon模型)

hacker2022-08-26 18:45:17热点问题111
本文目录一览:1、openstacktables列名怎么定义的2、

本文目录一览:

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 将会分别承担这一层的路由跳转和收发请求及回复的作用。

发表评论

评论列表

  • 泪灼俛就(2022-08-27 05:34:35)回复取消回复

    定义将会在openstack_dashboard.dashboards.admin.plugin_panel.panel.PluginPanel 中出现。那这个时候我们就要去

  • 辙弃野梦(2022-08-26 21:36:39)回复取消回复

    到进程因为一开始我也不知道哪个进程所horizon的,在ubuntu中查看进程到命令是:ps -e列出一堆进程,我通过grep去抓取horizon或dashboard发现都没也与之相关到进