ImageVerifierCode 换一换
格式:DOCX , 页数:29 ,大小:951.81KB ,
资源ID:3259758      下载积分:3 金币
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,免费下载
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.bdocx.com/down/3259758.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(openstack新手开发指南.docx)为本站会员(b****5)主动上传,冰豆网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰豆网(发送邮件至service@bdocx.com或直接QQ联系客服),我们立即给予删除!

openstack新手开发指南.docx

1、openstack新手开发指南OpenStack开发指南目录1、nova源码架构介绍 21.1、源码的获取 21.2、开发环境的搭建 21.3、nova模块调用介绍 61.4、nova源码模块功能介绍 72、数据库表结构的扩展 82.1、nova表结构的扩展 82.2、keystone表结构的扩展 103、resetful接口服务的扩展 123.1、nova数据库调用接口服务的扩展 123.2、compute接口的扩展 173.3、keystone接口服务的扩展 203.4、基于openstack服务、配置架构自定义服务模块 214、dashboard源码介绍 254.1 horizon代码模

2、块介绍 264.2 中文化的功能实现 264.3 页面按钮的添加 274.4 列表中下拉菜单的添加 294.5 列表中文字链接的添加 291、nova源码架构介绍1.1、源码的获取openstack的源码可以从安装好的openstack环境上直接copy下来使用,也可以从官网下载(红帽地址:http:/repos.fedorapeople.org/repos/openstack/),ubuntu环境下openstack的源码目录为:/usr/share/pyshared/,这里面的源码安装好后会被外链到/usr/lib/python2.7/dist-packages/,这是python2.7以

3、后的版本的做法,所有的python项目都会采取这种存储方式;centos环境下openstack一般会安装python2.6的环境,所以openstack的源码存储在/usr/lib/python2.6/site-packages/。1.2、开发环境的搭建第一步、从官网下载python安装包(http:/www.python.org/getit/),如果是openstack的环境下开发,可以忽略这一步,因为安装openstack的时候已经自动安装了python环境。第二步、然后安装开发python程序的IDE,python的程序一般使用PyDev作为开发工具,它可以被集成到eclipse和ap

4、tana等IDE中。PyDev的下载地址:http:/pydev.org/download.html,aptana的下载地址:http:/aptana.org/,当前发布的是aptana3.0,默认已经集成了PyDev。当前我使用的是aptana,由于3.0使用的面板背景色是黑色的,我又习惯使用2.0的风格怎么办那,3.0有添加了一个颜色模板的菜单,选择一下“Aptana Studio 2.x”就可以了,如下图。第三步、导入openstack的项目,打开IED,在左边的面板空白处右键,左键点击“import”, 如下图:从弹出的窗口从选择“Existing Folder As New Proj

5、ect”,导入一个文件夹作为一个工程,如下图所示:然后选择一个openstack项目,比如我当前选择了nova文件夹,起一个工程名,只要自己好记就行,下边的单选框可以不用选,点击完成就行了,如下图:导入进来的nova目录结构如下图:1.3、nova模块调用介绍nova-api :起到Cloud Controller的作用,主要为所有的API查询提供了一个接口(比如Openstack API ,EC2 API),引发多数业务流程的活动(如运行一个实例),并实施一些政策(主要是配额检查)。nova-schedule :接受一个消息队列的虚拟实例请求,通过算法决定该请求应该在那台主机上运行,这个算法

6、可以由我们指定。即起到调度器(Scheduler)的作用.nova-compute:是一个非常重要的守护进程,负责创建和终止虚拟机实例,即管理着虚拟机实例的生命周期。该模块内部非常复杂,基本原理是简单的,就是接受来自队列的动作然后执行一些列的系统操作(如启动一个KVM实例),并且更新数据库的状态。nova-network :该守护进程跟nova-compute and nova-volume 2个模块的功能是相似的。接受来自队列的任务,然后执行相应的任务对网络进行操作(比如:安装网桥接口和改变iptable规则)Queue:为各个模块之间的通信提供起到一个集线器的作用,即数据交换中心。目前是采

7、用RabbitMQ ,理论上是可以采用任何的基于pythonampqlib的AMPQ message queue。SQL database: 存储云基础设施构建时和运行时状态。包括可用的实例类型,正在使用的实例类型,可用的网络和项目。理论上,OpenStack Compute是支持所有基于 SQL-Alchemy的数据库,但目前广泛使用的数据库主要是Sqlite3,Mysql,PostgreSQL。Glance:该项目独立于Openstack Compute,起到镜像的作用。在该项目中,主要包括三个部分: glance-api, glance-registry and 镜像存储。Glance-

8、api接受API调用,glance-registry存储和检索镜像的元数据。镜像存储Image blobs。存储可以选择不同的存储方案,比如用Swift实现存储。Dashboard:该项目是一个可选的项目,主要是为开发者等提供API。1.4、nova源码模块功能介绍2、数据库表结构的扩展2.1、nova表结构的扩展第一步、创建表的数据库结构,创建表结构的文件存在于目录nova.db.sqlalchemy.migrate_repo.versions,当执行nova-manage db sync命令时就会按照这个目录下文件开头的序列号顺序执行。添加表时只需要实现一个类似的文件,把名字的开头命名为最

9、大序列值加1。比如我要创建一张表,表名为:domains,在这个versions下创建一个084_add_domains.py的文件,文件内容如下#-*- coding: utf-8 -*-from sqlalchemy import Boolean, Column, DateTime, Integerfrom sqlalchemy import MetaData, String, Tablefrom nova import log as loggingLOG = logging.getLogger(_name_)def upgrade(migrate_engine): 创建表 meta =

10、MetaData() meta.bind = migrate_engine #生成创建表sql语句domains = Table(domains, meta,Column(id, Integer(), primary_key=True, nullable=False),Column(name,String(length=255, convert_unicode=False, assert_unicode=None, unicode_error=None, _warn_on_bytestring=False),Column(ttl, Integer(),Column(rdtype,String(

11、length=255, convert_unicode=False, assert_unicode=None, unicode_error=None, _warn_on_bytestring=False),Column(rdata,String(length=255, convert_unicode=False, assert_unicode=None, unicode_error=None, _warn_on_bytestring=False),Column(project_id,String(length=255, convert_unicode=False, assert_unicode

12、=None, unicode_error=None, _warn_on_bytestring=False),Column(created_at, DateTime(timezone=False),Column(updated_at, DateTime(timezone=False), mysql_engine=InnoDB )try:domains.create()except Exception, e:LOG.exception(Exception while creating domains table, error % str(e)raise #构造初始化信息 DOMAINDS = NS

13、: dict(name=, rdata=., rdtype=NS, ttl=86400), SOA: dict(name=, rdata=. . 200309181 28800 7200 86400 28800, rdtype=SOA, ttl=86400)try: #逐行插入初始化信息 domain_insert = domains.insert()for name, values in DOMAINDS.iteritems(): domain_insert.execute(name: valuesname, rdata: valuesrdata, rdtype: valuesrdtype,

14、 ttl: valuesttl)except Exception, e:LOG.exception(Exception while seeding domains table, error: %s % str(e)raisedef downgrade(migrate_engine): 删除表 meta = MetaData() meta.bind = migrate_enginedomains = Table(domains, meta, autoload=True)domains.drop()第二步、生成表结构的模型,nova的表对象模型存在于nova.db.sqlalchemy.migra

15、te_repo.models.py文件中,需要在这里面添加一个实现类,位置无所谓,但一般新添加的都放到文件的最末尾,这里我添加一个domains的模型类,代码如下:class Domain(BASE, PhysicalBase): 虚拟机主机名 _tablename_ = domainsid = Column(Integer, primary_key=True)name = Column(String(255)ttl = Column(Integer)rdtype = Column(String(255)rdata = Column(String(255)project_id = Column(String(255)第三步、实现表查询,因为nova使用的事sqlalchemy,所以查询只需要按照它的规则构造就行,数据库查询的方法都在nova.db.sq

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1