跳转到: 导航, 搜索

GSoC2014/Student/Masaru

Massa 的提案

摘要

软件组件被正确地划分为模块,以便开发人员可以轻松地维护和重用它们,而无需不必要的成本。目前,一些使用 VMware API 的 OpenStack 模块存在某种程度的重复,并且没有利用共享库。在这个项目中,我想更新一个当前的共享库,名为 oslo.vmware,以便该库被 OpenStack 中的模块使用和共享。

您的电子邮件地址和 IRC 昵称是什么?

电子邮件:massa.nomura@gmail.com

IRC  : massa [freenode]

您的网页、博客或微博是什么?

我目前没有网页。


您的学术背景是什么?

我在英国伦敦帝国理工学院攻读分布式系统硕士学位。

在本学年,我学习了以下模块 

  • 高级计算机体系结构
  • 高级数据库
  • 网络安全
  • 分布式系统
  • 分布式算法
  • 普适计算
  • Prolog
  • 运筹学
  • 个人项目 : 使用 pi-calculus 的并发模型
  • 最终论文 : 使用 C++ 中的 MPI 进行超图划分

您提议的项目可能的导师是谁?

  • 导师 : Arnaud Legendre 先生 (arnaud)
  • 电子邮件  : alegendre@vmware.com


您的提案的最终目标是什么?

该项目的主要目标分为三个部分

  • 实现 oslo.vmware 中缺失的功能[*1]
  • 使用 pyvmomi 重新实现现有功能[*2]
  • 为添加到共享库的方法创建单元测试


[*1]oslo.vmware:在 OpenStack 环境中构建的库,旨在成为其他使用 VMware 的 OpenStack 项目的基础构建块。目前,oslo.vmware 中的某些功能与 pyvmomi 中已有的功能重叠。

[*2]pyvmomi:开源且通用的库,用于在 OpenStack 环境之外使用 vCenter/ESX API。

您提议的工作将修改或创建哪些组件/模块?

oslo.vmware(可能包括 Glance、Cinder 和 Nova,以便它们使用 API 中的新功能)


您提议的工作对 OpenStack 及其社区有什么好处?

该项目带来了两个好处 

  • 通过引入适当的共享库,我们可以删除 Glance、Cinder 和 Nova 等模块中的重复代码,这些模块是 API 的使用者。
  • 通过提供使用 pyvmomi 的共享库,我们可以帮助开发人员,因为他们只需要维护共享 API 库来处理即将到来的更新。


为什么您是从事这个项目的合适人选?

我认为我适合承担这个项目有两个原因。首先,作为一名开源开发者,人们不仅需要技术技能,还需要社区内的沟通技能,以便我们可以让事情变得更好。我认为我可以在社区中承担这部分工作,因为我在准备 GSoC 2014 的过程中做了一些非技术性的工作。其次,我已经掌握了操作系统和虚拟化应用程序的基础知识,这有助于我进行这个项目并与 Arnaud 轻松协作。因此,我认为我是从事这个项目的合适人选。


您计划如何完成您的项目?

我们项目的目标是改进基于 oslo.vmware 的 VMware API 共享库,并将其提供给每个模块。因此,我们希望降低维护成本并提高对 VMware 即将到来的更新的适应性。为了实现这一点,我将 

  • 实现 oslo.vmware 中缺失的功能
在 OpenStack 中,已经存在一个共享库 oslo.vmware,它实现了 VMware API 的功能,使我们能够与 vCenter 通信。但是,oslo.vmware 还没有配备所有必要的功能。在这个项目中,我想将负责虚拟机磁盘 (vmdk) 和开放虚拟化格式 (ovf) 的功能添加到现有的库中。例如,我们需要添加一个功能来验证校验和、大小、磁盘数量等。为此,我想从 vmdk 和 ovf 的内省开始。我还计划将 Nova 中现有的功能移植到 oslo.vmware。
  • 使用 pyvmomi 重新实现现有功能
为了使模块易于维护和稳定,我们可以利用 pyvmomi,避免重复造轮子,并替换 oslo.vmware 中实现的一些现有功能。例如,oslo.vmware 中的 vim.py,它负责创建 SOAP 调用,可以用 pyvmomi 中定义的 API 替换。
  • 为共享库中的新功能创建单元测试
这将在上述两个任务进展的基础上完成。其目的是
  • 确保 oslo.vmware 中的现有实现可以与新库一起使用。
  • 确保添加到共享库的新功能可以被每个模块安全地使用。

请提供一个带有日期和重要里程碑/交付成果的计划表(最好以两周为增量)。

我计划按以下方式进行项目

5 月 19 日至 6 月 1 日(2 周)

  • ovf 的内省
  • vmdk 的内省
  • 再次检查最新的 pyvmomi 功能


6 月 2 日至 6 月 22 日(3 周)

  • 实现 ovf 和 vmdk 验证(校验和、大小、磁盘数量等)
  • 为该功能创建单元测试


6 月 23 日至 7 月 13 日(3 周)

  • 将 Nova 中现有的功能移植到 oslo.vmware
  • 为该功能创建单元测试


7 月 14 日至 8 月 10 日(4 周)

  • 开始使用 pyvmomi 重新实现现有功能
  • 为替换创建单元测试


8 月 11 日至 8 月 18 日(1 周)

  • 完成项目,检查我们将开发的所有模块


该项目的里程碑是提供 oslo.vmware 中缺失的功能。因此,我将花时间实现新功能,以便它们以后不会对共享库产生负面影响。完成缺失的部分后,我将使用 pyvmomi 替换现有代码。即使我声明稍后会执行此任务,如果每个阶段有剩余时间,我也可以在并行执行此任务。

项目进行两个月后,您将展示什么?

  • 添加到 oslo.vmware 的功能集
  • 使用 pyvmomi 的新实现
  • 使用这两者进行的测试套件


您作为用户和贡献者在开源世界中的过去经验是什么?

  • 作为用户,我经常喜欢玩应用程序,例如编程语言和虚拟化软件,以测试我从讲座中学到的理解。
  • 作为贡献者,去年夏天我在 Clear Code 实习期间为 Ruby 参考手册(又名 Rurema – るりま)做出了贡献,该公司基于开源开发的产品。在社区中一位维护者的帮助下,我添加和修改了一些参考手册。


请包含与您的提案相关的 bug/功能的评审链接。

・添加单元测试方法“test_download_flat_image” https://review.openstack.org/#/c/81263/


如果可用,请包含您为 OpenStack 或其他开源项目编写的任何其他代码的链接。

(现在不可用...)


您之前从事过哪些其他相关项目,以及您从这些项目中获得了哪些知识?

我没有从事过与这个项目相关的任何项目。


在 5 月 19 日至 8 月 18 日期间,您还有其他时间承诺,例如学业、另一份工作、计划的假期等吗?

我将完成我的论文,并且必须在 9 月 5 日之前完成。我不能花一整天的时间编码或规划新的 API 设计。但我确信我可以每天花至少 3 到 4 个小时,或者每周花 20 到 30 个小时。基于此,我假设每个阶段的平均时间为 75 小时。


请添加您在 OpenStack GSoC wiki 上的项目和个人详细信息页面的链接。

  • 项目页面

https://wiki.openstack.org/wiki/GSoC2014/Incubator/SharedLib

  • 个人页面

https://wiki.openstack.org/wiki/GSoC2014/Student/Masaru