- 浏览: 50588 次
文章分类
- 全部博客 (98)
- openstack (14)
- spring+hibernate+jdbc (15)
- dashboard (1)
- Python (3)
- nova (2)
- ubuntu (1)
- Linux (2)
- apache (1)
- openstack,错误 (1)
- Windows (1)
- horizon (1)
- websocket (1)
- java (2)
- mybatis (4)
- quartz (2)
- git (1)
- spring,错误 (1)
- angularJS (8)
- redis (2)
- vim (1)
- virsh (1)
- jsp (1)
- react (1)
- openstack,openstack安装 (4)
- 社区 (1)
最新评论
-
haoningabc:
前后端都会啊,全栈女神啊
angularJS 弹出层 -
haoningabc:
好厉害,偶像
openstack安装--keystone
在horizon中创建一个dashboard
1.在mydashboard中自动添加一个mypanel的文件
2.mydashboard tree中应该如下
mydashboard
├── dashboard.py
├── dashboard.pyc
├── __init__.py
├── __init__.pyc
├── mypanel
│ ├── __init__.py
│ ├── panel.py
│ ├── templates
│ │ └── mypanel
│ │ └── index.html
│ ├── tests.py
│ ├── urls.py
│ └── views.py
├── static
│ └── mydashboard
│ ├── css
│ │ └── mydashboard.css
│ └── js
│ └── mydashboard.js
└── templates
└── mydashboard
└── base.html
3.dashboard.py有一些代码已经自动生成,定义Mygroup的类,添加一个mypanel
4.定义一个table,在mypanel的目录下,创建tables.py文件
5.定义tabs,在mypanel的目录下,创建tabs.py文件
6 .view.py
7.urls.py
8.template,打开mydashboard/mypanel/templates/mypanel下的index.html
9.enable中显示dashboard,在openstack_dashboard/enabled 下创建_50_mydashboard.py
10.测试
Horizon Policy
Horizon policy的基础是oslo_policy
IRC
Horizon有两个meeting,分别是Horizon Drivers Meeting和Horizon Team Meeting,开会的时间考虑到时差问题。可以参加的会议20:00CST #openstack-meeting-3
http://eavesdrop.openstack.org/
dashboard代码
dashboard代码分为两部分:openstack_dashboard和horizon。openstack_dashboard中存放了系统用到的所有资源文件。针对于当界面新建的一些实例生成的view,Apache也是映射这部分代码;horizon是系统具体显示的代码实现,定义了一些可以在Django项目中使用的通用库和组件。
django的基础知识
project vs app
app是一个web应用程序,它是实际用来做事的。但是一个project是配置文件和app的集合,相当于一个容器。project和app的关系是多对多。
syncdb
python manage.py syncdb会为该project内的所有app进行数据库初始化,创建表结构,初始化数据,创建索引等。若有app改变了数据库结构,或者是有新的app增加进来,要创建新的表结构,再次运行syncdb,会为这些app进行数据库变更。django怎么识别哪个app是关联了数据库的?要知道自定义的model都是继承自django.db.models.Model这个类的
Django Model API
Django提供了非常丰富的对Model进行操作的接口,增删改查,比如get(),all(),save().filter(),delete(),还有外键xxx_set等
程序的入口点在horizon/openstack_dashboard/urls.py中
然后Horizon这个单利的site对象,开始加载urls,自动大仙并注册dashboard,然后对每一个dashboard,再自动发现并注册panel
js文件
js文件一般是这样开头的(function(){...})(),这是javascrtip立即执行函数的常见写法。为什么要在function外加一个括号呢?这样的写法有什么用?
JavaScript中没有私有作用域的概念,如果在多人开发的项目上,你在全局或局部作用域中什么了一些变量,可能会被其他人不小心用同名变量给覆盖掉,根据JavaScript作用域链的特性,可以使用这种技术模仿一个私有作用域,用匿名函数作为一个“容器”,“容器”内部可以访问外部的变量,而外部环境不能访问“容器”内部的变量,所以(function(){...})()内部定义的变量不会和外部的变量发生冲突,俗称"匿名包裹器"或“命名空间”。
i18n相关的翻译问题不能直接在horizon代码中修改。i18n的翻译是从Zanata中导入的,直接的修改在下一次导入是时候被覆盖
Tox
1.安装 apt-get install python-pip
pip install tox
2.运行测试,每个项目的根目录下有tox.ini文件
tox -e py27
tox第一次运行的时间很长,因为第一次需要创建一个虚拟的环境。
风格测试(Style checks)
集成测试(Integration tests)
集成测试要运行在一个完整的部署环境中,比如一个完整的部署了OpenStack的环境。集成测试专注在系统功能,完整性,以及和真实硬件环境的集成。
打开一个OpenStack服务
更新horizon.conf中的配置文件
参考链接:
https://wiki.openstack.org/wiki/Horizon/Testing/UI
http://www.linuxidc.com/Linux/2014-09/106053.htm
http://www.jianshu.com/p/28d669085adc
1.在mydashboard中自动添加一个mypanel的文件
mkdir openstack_dashboard/dashboards/mydashboard ./run_tests.sh -m startdash mydashboard \ --target openstack_dashboard/dashboards/mydashboard mkdir openstack_dashboard/dashboards/mydashboard/mypanel ./run_tests.sh -m startpanel mypanel \ --dashboard=openstack_dashboard.dashboards.mydashboard \ --target=openstack_dashboard/dashboards/mydashboard/mypanel
2.mydashboard tree中应该如下
mydashboard
├── dashboard.py
├── dashboard.pyc
├── __init__.py
├── __init__.pyc
├── mypanel
│ ├── __init__.py
│ ├── panel.py
│ ├── templates
│ │ └── mypanel
│ │ └── index.html
│ ├── tests.py
│ ├── urls.py
│ └── views.py
├── static
│ └── mydashboard
│ ├── css
│ │ └── mydashboard.css
│ └── js
│ └── mydashboard.js
└── templates
└── mydashboard
└── base.html
3.dashboard.py有一些代码已经自动生成,定义Mygroup的类,添加一个mypanel
from django.utils.translation import ugettext_lazy as _ import horizon class Mygroup(horizon.PanelGroup): slug = "mygroup" name = _("My Group") panels = ('mypanel',) class Mydashboard(horizon.Dashboard): name = _("My Dashboard") slug = "mydashboard" panels = (Mygroup,) # Add your panels here. default_panel = 'mypanel' # Specify the slug of the default panel. horizon.register(Mydashboard)
4.定义一个table,在mypanel的目录下,创建tables.py文件
from django.utils.translation import ugettext_lazy as _ from horizon import tables class InstancesTable(tables.DataTable): name = tables.Column("name", verbose_name=_("Name")) status = tables.Column("status", verbose_name=_("Status")) zone = tables.Column('availability_zone', verbose_name=_("Availability Zone")) image_name = tables.Column('image_name', verbose_name=_("Image Name")) class Meta: name = "instances" verbose_name = _("Instances")
5.定义tabs,在mypanel的目录下,创建tabs.py文件
from django.utils.translation import ugettext_lazy as _ from horizon import exceptions from horizon import tabs from openstack_dashboard import api from openstack_dashboard.dashboards.mydashboard.mypanel import tables class InstanceTab(tabs.TableTab): name = _("Instances Tab") slug = "instances_tab" table_classes = (tables.InstancesTable,) template_name = ("horizon/common/_detail_table.html") preload = False def has_more_data(self, table): return self._has_more def get_instances_data(self): try: marker = self.request.GET.get( tables.InstancesTable._meta.pagination_param, None) instances, self._has_more = api.nova.server_list( self.request, search_opts={'marker': marker, 'paginate': True}) return instances except Exception: self._has_more = False error_message = _('Unable to get instances') exceptions.handle(self.request, error_message) return [] class MypanelTabs(tabs.TabGroup): slug = "mypanel_tabs" tabs = (InstanceTab,) sticky = True
6 .view.py
from horizon import tabs from openstack_dashboard.dashboards.mydashboard.mypanel \ import tabs as mydashboard_tabs class IndexView(tabs.TabbedTableView): tab_group_class = mydashboard_tabs.MypanelTabs template_name = 'mydashboard/mypanel/index.html' def get_data(self, request, context, *args, **kwargs): # Add data to the context here... return context
7.urls.py
from django.conf.urls import patterns from django.conf.urls import url from openstack_dashboard.dashboards.mydashboard.mypanel import views urlpatterns = patterns('', url(r'^$', views.IndexView.as_view(), name='index'), )
8.template,打开mydashboard/mypanel/templates/mypanel下的index.html
{% extends 'base.html' %} {% load i18n %} {% block title %}{% trans "My Panel" %}{% endblock %} {% block page_header %} {% include "horizon/common/_page_header.html" with title=_("My Panel") %} {% endblock page_header %} {% block main %} <div class="row"> <div class="col-sm-12"> {{ tab_group.render }} </div> </div> {% endblock %}
9.enable中显示dashboard,在openstack_dashboard/enabled 下创建_50_mydashboard.py
# The name of the dashboard to be added to HORIZON['dashboards']. Required. DASHBOARD = 'mydashboard' # If set to True, this dashboard will not be added to the settings. DISABLED = False # A list of applications to be added to INSTALLED_APPS. ADD_INSTALLED_APPS = [ 'openstack_dashboard.dashboards.mydashboard', ]
10.测试
source .venv/bin/activate python manage.py runserver 0.0.0.0:2222
Horizon Policy
Horizon policy的基础是oslo_policy
IRC
Horizon有两个meeting,分别是Horizon Drivers Meeting和Horizon Team Meeting,开会的时间考虑到时差问题。可以参加的会议20:00CST #openstack-meeting-3
http://eavesdrop.openstack.org/
dashboard代码
dashboard代码分为两部分:openstack_dashboard和horizon。openstack_dashboard中存放了系统用到的所有资源文件。针对于当界面新建的一些实例生成的view,Apache也是映射这部分代码;horizon是系统具体显示的代码实现,定义了一些可以在Django项目中使用的通用库和组件。
django的基础知识
project vs app
app是一个web应用程序,它是实际用来做事的。但是一个project是配置文件和app的集合,相当于一个容器。project和app的关系是多对多。
syncdb
python manage.py syncdb会为该project内的所有app进行数据库初始化,创建表结构,初始化数据,创建索引等。若有app改变了数据库结构,或者是有新的app增加进来,要创建新的表结构,再次运行syncdb,会为这些app进行数据库变更。django怎么识别哪个app是关联了数据库的?要知道自定义的model都是继承自django.db.models.Model这个类的
Django Model API
Django提供了非常丰富的对Model进行操作的接口,增删改查,比如get(),all(),save().filter(),delete(),还有外键xxx_set等
程序的入口点在horizon/openstack_dashboard/urls.py中
url(r'', include(horizon.urls))
然后Horizon这个单利的site对象,开始加载urls,自动大仙并注册dashboard,然后对每一个dashboard,再自动发现并注册panel
js文件
js文件一般是这样开头的(function(){...})(),这是javascrtip立即执行函数的常见写法。为什么要在function外加一个括号呢?这样的写法有什么用?
JavaScript中没有私有作用域的概念,如果在多人开发的项目上,你在全局或局部作用域中什么了一些变量,可能会被其他人不小心用同名变量给覆盖掉,根据JavaScript作用域链的特性,可以使用这种技术模仿一个私有作用域,用匿名函数作为一个“容器”,“容器”内部可以访问外部的变量,而外部环境不能访问“容器”内部的变量,所以(function(){...})()内部定义的变量不会和外部的变量发生冲突,俗称"匿名包裹器"或“命名空间”。
naming convention suffix.module.js--angular module suffix.spex.js--unit tests suffix.mock.js–mock objects for test all other angular prociders should be named to something else Files will be organized in the order of: -production: modules + providers -test runner: modules + providers + mocks + specs
i18n相关的翻译问题不能直接在horizon代码中修改。i18n的翻译是从Zanata中导入的,直接的修改在下一次导入是时候被覆盖
OpenStack中的测试可以分为以下的类型 单元测试(small test/ unit tests):函数级别 nose 1.安装: sudo apt-get install python-nose 2.安装完成后测试一下:nosetests 3.写测试文件,在该目录下执行nosestests test_filename 4.nosetest常用的命令行参数 a) -s,不捕获输出,会让你的程序里面的一些命 令行上的输出显示出来。例如print所输出的内 容。 b) -v,查看nose的运行信息和调试信息。例如会 给出当前正在运行哪个测试。 c) -x,在第一次失败时就停止执行。
Tox
1.安装 apt-get install python-pip
pip install tox
2.运行测试,每个项目的根目录下有tox.ini文件
tox -e py27
tox第一次运行的时间很长,因为第一次需要创建一个虚拟的环境。
风格测试(Style checks)
集成测试(Integration tests)
集成测试要运行在一个完整的部署环境中,比如一个完整的部署了OpenStack的环境。集成测试专注在系统功能,完整性,以及和真实硬件环境的集成。
打开一个OpenStack服务
更新horizon.conf中的配置文件
运行测试 ./run_test.sh --integration
参考链接:
https://wiki.openstack.org/wiki/Horizon/Testing/UI
http://www.linuxidc.com/Linux/2014-09/106053.htm
http://www.jianshu.com/p/28d669085adc
发表评论
-
openstack安装--nova
2016-08-30 16:10 659在controller节点操作 创建Nova数据库 mysq ... -
openstack安装--glance
2016-08-29 15:01 658创建glance数据库 mysql -u root -p C ... -
openstack安装--keystone
2016-05-27 12:12 1170安装在controller节点 一、数据库 1、要求contr ... -
horizon对sql表的增删改查操作
2016-03-29 15:13 890首先根据horizon/doc/source/tutorial ... -
Nova 架构
2016-03-24 15:53 829消息队列:松耦合、异步、负载均衡 运算工作站 网络控制器 F ... -
dashboard->admin->instance->action
2016-03-24 15:50 597admin->instance->虚拟机创建快照 ... -
dashboard 增加编辑按钮
2016-03-23 22:24 673用到其他目录下的文件,用到workflows 1.table ... -
dashboard增加删除虚拟机按钮
2016-03-23 14:15 405vim tables.py 新加如下内容 from dja ... -
nova 建虚拟机
2016-03-23 11:27 305要用Nova建虚拟机,首先要用neutron建立网络 1.建立 ... -
dashboard添加可编辑字段
2016-03-18 20:41 451在tables.py中添加如下代码: class Update ... -
dashborad 增加action
2016-03-17 12:03 577=============================== ... -
horizon 增加plugin
2016-03-16 21:27 385============== Horizon Plugin = ... -
openstack horizon开发环境配置
2016-03-15 19:48 856mkdir open_src cd open_src 1.选 ...
相关推荐
vmware-Horizon 7 配置桌面池和应用程序池
Horizon Based Ambient Occlusion(HBAO)是一种后处理图像效果,用于为场景添加真实感。 它有助于突出小的表面细节,并重现由于遮挡造成的光衰减。
关于“horizon view,在配置horizon view 添加服务器时,在view composer域添加时提示“检查管理员出错。请重新检查您的信息。”问题解决方法
语言:English 为您的地平线板添加任务 与www.horizon-goals.com一起使用。 从网上的任何地方,直接添加任务,直接到您的地平线板。
=========== my_workflow my_workflow是向OpenStack仪表板添加工作流扩展的示例。 内容并非真正用途。要求my_workflow仅在运行Horizon的系统上使用如何测试这个包裹Git将此仓库克隆到本地计算机在文件夹中运行...
能够在侧边栏中添加指向仪表板的。 如果当前用户无法根据Horizon::auth方法中定义的访问策略访问Horizon 仪表板,则链接会自动禁用。 有关更多信息,请查看。 演示 安装 首先,通过composer安装: composer ...
如果要将此项目添加到自己的计算机中,可以通过以下方法安装它 git clone https://github.com/radespratama/horizon_pwa.git repoName npm install | yarn install npm start | yarn start 会费 您想要这个项目做得...
HBAO是一种后期处理图像特效,可为场景添加逼真效果。它有助于突出小表面的细节和繁衍遮蔽后的光衰减。HBAO提供的AO与其他 SSAO解决方案相比来更精确,并无任何性能耗损。该算法经过高度优化,利用最短的 GPU 时间并...
安装您可以通过composer安装该软件包: composer require appstract/nova-horizon用法有两种使用此程序包的方法。 一种是在应用程序的NovaServiceProvider启用Horizon仪表板。 这将为Nova添加新的仪表板,如上面...
Horizon 监控仪表板 Sensu 仪表板作为 Horizon 插件。 允许从多 Sensu API aka Uchiwa 数据中心列出事件。 ...将“监控”添加到HORIZON_CONFIG “仪表板”键 并为您的 Sensu API 进行配置
目录 引用: 一、安装VMware Workstation 二、创建一个虚拟机 三、在虚拟机中安装操作系统 四、安装VMware Tools工具包并且设置WIN98的显示色 五、安装虚拟WINXP 六、实现和主机之间的文件共享 七、为虚拟机...
horizon_project_management 您是Arrow(pvt)Ltd.的软件工程师。Horizon(pvt)Ltd是您的客户,他们正在管理各种项目。 Horizon(pvt)Ltd向您的... (添加,编辑,删除)6.员工可以登录系统并更改密码7
如果要将此项目添加到自己的计算机中,可以通过以下方法安装它 git clone https://github.com/radespratama/horizon_pwa.git repoName npm install | yarn install npm run dev | yarn dev 会费 您想要这个项目做得...
在瓷砖上添加了瓷砖渲染和玩家渲染 V0.0.1_4 添加地图和小地图 添加了播放器控件和其他键盘绑定 添加树生成 V0.0.1_5 更新了瓷砖的保存方式并将其更改为将 16 x 16 区域保存为块 修正数学问题 V0.0.1_6 添加了...
恒星快速入门Docker映像 如果您使用docker,此项目提供了一种将恒星核心和层级合并到... 此外,我们添加了一个独立网络(称为独立网络),使您可以运行自己的专用Stellar网络。 在独立网络模式下,可以选择传递--proto
古代地平线 ...[添加登台链接] 入门 1.全局安装gulp: $ npm install --global gulp 2.安装项目依赖项: $ npm install 3.喝一口 启动本地开发环境: $ gulp 生成生产版本: $ gulp production
代码引用器作业 作业将于21年4月3日到期 在这种特殊的美之前,有很多很棒的书给我读。 我的目标是为该文件重新命名。 创建存储库;... git添加,提交和推送。 当我们观看这个光荣的不幸时,请尽情享受:
Queen版本Openstack云计算平台搭建,服务节点包括控制节点、计算节点(centos7),服务组件包括keystone、neutron、nova、cinder、glance、horizon、barbican;另外,对平台安全性进行配置,包括https传输加密、存储...
AEparticular特效 3DStroke EchoSpace_Win_Full Form_Win_Full Horizon_Win_Full等
这也正是OpenStack的Horizon组件采用这种架构进行设计的主要原因。另外,在Dj ango框架中,还包含许多功能强大的第三方插件,使得Django具有较强的可扩展性 [2]。Django 项目源自一个在线新闻 Web 站点,于 2005 年...