OpenStack开发源码如何获取及下载

转自:http://www.aboutyun.com/thread-6427-1-1.html

OpenStack 是一种基础架构即服务 (IaaS) 云计算项目。

资源通过一个仪表板来管理,该仪表板向管理员提供了控制权,并通过一个 Web 接口为用户提供了配置资源的权利。本文将介绍如何设置帐户、设置开发环境以及如何开始为 OpenStack 做贡献。
第 1 步:通过在线注册和密钥配置来设置帐户


  • 设置您的 Launchpad 帐户。Launchpad 是 OpenStack 用来托管其所有项目的位置。请访问 Launchpad 登录页面,使用您的电子邮件地址进行注册,并为自己选择一个便于记忆的 Launchpad ID。然后访问https://launchpad.net/~LaunchpadID,设置您的 OpenPGP 密钥,并使用该页上的说明上传您的 SSH 公钥。例如,我的 Launchpad id 是 houshengbo,因此我将访问https://launchpad.net/~houshengbo,如图 1 所示。

    图 1. 设置 OpenPGP 密钥
  • fig为 Gerrit 设置您的 SSH 帐户。OpenStack 应用了一个代码评审过程来保证代码质量。请访问 OpenStack 代码审查 页面,并使用您的 Launchpad 帐户进行登录。然ttps://review.openstack.org/#/settings/ssh-keys 并上传您的 SSH 公钥。

  • 图 2. 上传 SSH 公钥




第 2 步:签署 CLA 协议

  • 请加入 OpenStack Foundation(如果您尚未加入)。使用您计划用于贡献代码的电子邮件地址。foundation profile 中的主要电子邮件地址需要与您稍后在 Gerrit 联系信息中设置的首选电子邮件相匹配。
  • 请访问 Code Review 页面。单击位于该页面右上角的Sign In 链接。使用您的 Launchpad ID 登录 Launchpad。
  • 除非您是美国政府雇员(参见以下内容),否则请同意 Individual Contributor License Agreement 并提供联系信息。您的所有姓名和电子邮件地址都是公开的。如果需要的话,可以稍后更新 此联系信息,但确保主要电子邮件地址始终与为您的 OpenStack Foundation 会员身份设置的电子邮件地址相匹配。
  • 加入 OpenStack Contributors 组。需要以会员身份提交代码更改。
如果您以个人贡献者的身份工作,那么执行上述步骤就足够了。如果您代表公司或美国政府工作,那么您可能需要关注其他一些内部审批过程,这些过程因公司而异。有关的详细信息,请参阅贡献者许可协议



第 3 步:设置本地开发环境
  • 设置 Eclipse 环境:
    • 安装附带 python 的 Ubuntu 11.10 或 11.10+。
    • 安装 git:sudo apt-get install git。
    • 安装 Eclipse。
    • 安装 Eclipse 的 PyDev 插件。
      • 在 Eclipse 窗口上,单击 Help > Install New Software
      • 配置 Eclipse 的 python interpreter。在 Work with 字段中,输入 http://pydev.org/updates 并单击Add
      • 选中 PyDev
      • 单击 Next,直到您找到 Review Licences 窗口。接受许可条款并单击 Finish
    • 安装 Eclipse 的 EGit 插件。
      • 在 Eclipse 窗口上,单击 Help > Install New Software
      • 在 Work with 字段中,输入 http://download.eclipse.org/egit/updates 并单击Add
      • 选中位于 Eclipse Git Team Provider 下面的 Eclipse EGit
      • 单击 Next,直到您找到 Review Licences 窗口。接受许可条款并单击 Finish

  • 设置代码库。
    • 使用 devstack:
      • 打开一个终端,转到目标目录,并运行以下命令获得 devstack 代码:
        git clone git://github.com/openstack-dev/devstack.git
      • 在刚刚创建的 devstack 目录下创建一个名为 localrc 的文件。可以在 DevStack 网站上查找关于如何 配置 localrc 的信息。
      • 运行 ./stack.sh。默认工作目录是 /opt/stack,可以手动更改它。当初次运行 devstack 获得成功之后,可以在 /opt/stack 下找到所有代码。
    • 另一个方法是下载特定项目,而不是克隆所有项目。以 Keystone 项目为例:
      • 打开一个终端,转到目标目录(例如,/opt/stack)并运行以下命令以获得 keystone 代码:
        git clone https://github.com/openstack/keystone.git
      • 将项目导入 Eclipse:运行 Eclipse 并将工作区设置为保存所有项目 (/opt/stack) 的目录。
      • 创建 PyDev 项目:单击 File > New > PyDev project。使其名称与该项目相同,如 keystone,然后单击Finish
      • 将该项目与 Egit 同步:在 Eclipse 中,右键单击该项目 (keystone),单击 Team > Share project,然后单击NextFinish
      • 完成上述步骤之后,应该会在 Eclipse 中看到位于您的项目名称后面的 [keystone master]。


运行单元测试
  • 对某个项目运行所有单元测试
    • 打开一个终端并转到项目目录,例如 keystone
    • 运行 ./run_tests.sh 命令。当询问您是否想创建一个虚拟环境时,选择 Y 或 N。
  • 测试一个示例:
    • 打开一个终端并转到项目目录,例如 keystone。
    • 运行 ./run_tests.sh <file path> 命令,例如 ./run_tests.sh /opt/stack/keystone/tests/test_backend.py。
  • 测试一个示例:
    • 打开一个终端并转到项目目录,例如 keystone。
    • 运行 ./run_tests.sh <file path>:<class name> 命令,例如 ./run_tests.sh /opt/stack/keystone/tests/test_backend.py:CommonHelperTests。
  • 测试一个方法:
    • 打开一个终端并转到项目目录,例如 keystone。
    • 运行 ./run_tests.sh <file path>:<class name>.<method name> 命令,例如 ./run_tests.sh /opt/stack/keystone/tests/test_backend.py:CommonHelperTests.test_format_helper_raises_malformed_on_incomplete_format。

运行 OpenStack 服务
  • 运行 Devstack 的所有服务:
    • 打开一个终端并转到 devstack 目录。
    • 运行 ./stack.sh 命令。在 localrc 中,指定要运行的服务,例如 ENABLED_SERVICES=key,c-api,c-vol,c-sch,mysql,rabbit。
    • 运行 ./unstack.sh 关闭所有服务。
    • 首次运行 ./stack.sh 获得成功之后,您还可以运行 ./rejoin-stack.sh 来运行所有指定的服务。
  • 在 Eclipse 中运行服务。以 Keystone 为例:
    • 在 Eclipse 中设置 keystone 的调试配置。右键单击脚本 keystone—bin 下的所有内容,然后单击 Debug as > Debug Configurations,如图 3 所示。

      图 3. 调试配置


    • 设置调试配置。单击 Arguments 选项卡,选择 Other 作为工作目录,然后输入 ${workspace_loc:keystone},如图 4 和图 5 所示。

      图 4. Main 选项卡配置





      图 5. Arguments 选项卡配置


    • 启动 Keystone:单击 Debug Configuration 窗口上的 Debug 按钮,或从 Debug/Run 下拉工具栏按钮中运行它,如图 6 所示。

      图 6. 启动 Keystone 服务





第 4 步:设置本地计算机配置
  • 设置 git 全局配置:
    • 打开一个终端。
    • 运行 git config --global user.name "Firstname Lastname" 命令。
    • 运行 git config --global user.email "your_email@youremail.com" 命令。
  • 安装 git-review 工具:
    • 对于 Ubuntu 12.04 或更高版本,在一个终端中运行 sudo apt-get install git-review 命令。
    • 对于 Ubunu 12.04 之前的版本,则运行 sudo pip install git-review 命令。
  • 配置您的项目以了解 Gerrit:
    • 打开一个终端并转到项目目录,例如 keystone。
    • 运行 git review -s 命令。系统会要求您输入您的 gerrit 用户名。请键入您的 Launchpad id 并按下 Enter 键。


第 5 步:OpenStack 工作流程演示
如果您发现了一个 OpenStack 问题,请将它注册为一个 bug。如果想添加新功能,那么请将它注册为蓝图。您将要添加的修改应位于分支版本而不是主版本中。此外,不要在一个分支版本中混合多个 bug 修复或蓝图开发。下面的工作流程显示了 Keystone 中 bug 修复的一个示例。
  • 提交 Keystone 的 bug:


    图 7. 提交 Keystone 的 bug


  • 在 keystone 中为此 bug 创建一个分支(分支名称 Bug1087674):
    • 打开一个终端并转到 keystone 目录。
    • 通过 git checkout master 确保 keystone 位于主版本中。
    • 运行 git checkout -b Bug1087674 命令。
  • 在分支 Bug1087674 中修改 keystone 代码。
  • 将该代码提交给 Gerrit:
    • 打开一个终端并转到 keystone 目录。
    • 运行 git commit -a 命令。
    • 输入一些注释。第一段应该是一句话的简介;第二段可以是详细说明(可选);如果此分支修复一个 bug 或一个蓝图,则添加 Fixes Bug1087674 或 Blueprint XXXX 作为最后一段。
    • 运行 ctrl+o 命令,按下 Enter 键,然后运行 ctrl+x。
    • 运行 git review。
  • 检查提交的修补程序:
    • 转到 https://review.openstack.org 并使用您的 Launchpad 帐户登录。
    • 从顶部水平导航器中,单击 My > Changes,然后您可以找到您已提交的修补程序。
    • 在此演示中,链接为 https://review.openstack.org/#/c/17673/。任何用户都可以查看此修补程序。任何开发人员都可以给出注释。


    图 8. 已提交的修补程序的 Review 页面





通常,这是提交修补程序的过程。但是如果某些开发人员添加了注释并且您决定更改此分支,又该如何做呢?下面是一个选项:
  • 打开一个终端并转到 keystone 目录。
  • 通过 git checkout Bug1087674 转到分支 Bug1087674。
  • 对此分支进行进一步修改。
  • 转到 keystone 目录。
  • 运行 git commit -a –amend 命令。(不要运行 git commit -a,否则会有多个注释提交给 Gerrit,建议不要这样做。)
  • 可能的话,请修改注释。
  • 运行 ctrl+o 命令,然后按 Enter 键并运行 ctrl+x。
  • 运行 git review。
第二次提交此修补程序之后,链接https://review.openstack.org/#/c/17673/ 中有两个修补程序集,如图 9 所示。


图 9. 修补程序集的历史记录



此外,如果在您使用分支 Bug1087674 时主分支进行了更改,又会怎样呢?下面是您可以执行的操作:
  • 打开一个终端,并通过 git checkout master 转到主分支。
  • 使用 git pull origin master 更新该代码。
  • 通过 git checkout Bug1087674 切换回此分支。
  • 通过 git rebase -i master 重构该代码。
  • 如果没有冲突,则运行 git commit -a –amend 命令并运行 git review。
  • 如果发生冲突,那么终端会显示有冲突的文件。
  • 您还可以在 Eclipse 中查找冲突,因为有冲突的文件都标有红色标记。
  • 手动修复这些冲突。
  • 继续重构,git rebase —continue。
  • 重构成功之后,运行 git commit -a –amend 命令和 git review。

  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
学习要求: 熟悉基本的linux命令 具备基本的网络知识 掌握一门编程语言 课程特点: 深刻理解:OpenStack的设计原理,体系构架和关键技术,构建一个OpenStack环境所需的核心组件以及核心组件间的联系; 全面掌握:如何通过不同的部署工具比如packstack,部署OpenStack环境;如何通过单独部署OpenStack核心组件逐渐搭建出OpenStack环境; 定制研发:在学习openstack源码级深度解析培训后,你能了解openstack源码的体系结构,并能根据需要进行定制开发,满足您在实际生产环境中OpenStack的各种疑问和不满足的功能。 ------------------------课程内容------------------------ 课时1、课前学习环境准备 课时2、课程介绍 课时3、OpenStack概论 课时4、实例:OpenStack自动安装(Fuel) 课时5、作业:OpenStack Fuel 课时6、OpenStack安装部署答问 课时7、Keystone 详解 课时8、实例:OpenStack 手动安装 - 环境准 课时9、实例:Keystone 手动安装 课时10、实例:Keystone CLI 使用 课时11、实例:Keystone API使用 课时12、Glance详解 课时13、实例:Glance手动安装以及CLI、API 课时14、实例:Glance镜像制作 课时15、实例:Glance镜像修改 课时16、作业:Keystone手动练习 课时17、Keystone答问 课时18、作业:Glance手动练习 课时19、Nova架构及原理详解 课时20、实例:Nova手动安装 课时21、实例:Instance启动过程回顾 课时22、网络基础知识盘点 课时23、Neutron原理详解 课时24、实例:Neutron手动安装 课时25、实例:网络命名空间 课时26、实例:物理机连接openvswitch的虚 课时27、实例:租户私有网络创建 课时28、Neutron SDN 实现详解 课时29、实例:Neutron SDN 手动实现 课时30、作业:Nova、Neuron手动安装练习 课时31、作业:Neutron 相关实例练习 课时32、Neutron 答问 课时33、Cinder 原理详解 课时34、Cinder iSCSI实现原理详解 课时35、实例:Cinder 手动安装 课时36、Swift 架构与原理详解 课时37、实例:Swift 手动安装 课时38、Dashboard 介绍与演示 课时39、实例:Dashboard 手动安装 课时40、实例:Dashboard 浮动IP访问实例 课时41、实例:Dashboard 块存储的使用 课时42、实例:Dashboard 对象存储的使用 课时43、实例:OpenStack 命令行接口使用 课时44、OpenStack HA与性能调优 课时45、OpenStack Devstack 自动安 课时46、配置 OpenStack Eclipse 开发环境 课时47、配置 OpenStack Eclipse 开发环境 课时48、OpenStack 自动化测试 - 单元测试 课时49、OpenStack 自动化测试 - 集成测试 课时50、Nova 源码结构 课时51、Nova 调用流程源码解析 课时52、Nova 分层架构与业务模型剖析 课时53、Nova 自定义 API 扩展编码实现 课时54、Django 介绍与快速开始 课时55、Django view 和 urls 的用法 课时56、Django Templates 模板的用法(一) 课时57、Django Templates 模板的用法(二) 课时58、Django Form 表单的用法 课时59、Horizon 结构源码剖析(1) 课时60、Horizon 自定义 Panel 编码实现 课时61、Horizon 自定义 DataView 编码实 课时62、企业部署案例:企业私有云规划与案 课时63、OpenStack 和其他开源云平台比较

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值