分享

怎样写 OpenStack Neutron 的 Plugin (二)

坎蒂丝_Swan 发表于 2014-12-7 18:57:15 [显示全部楼层] 回帖奖励 阅读模式 关闭右栏 1 10347
本帖最后由 坎蒂丝_Swan 于 2014-12-7 19:01 编辑




其实上一篇帖子中的内容已经涵盖了大部分写Neutron插件的技术问题,这里主要还遗留了一些有关插件的具体实现的问题。

首先,Neutron对最基本的三个资源:Network, Port 和 Subnet 的基本调用都已经定义好了API接口。如果你的插件也需要用到这些资源,最好直接实现它们的接口。API接口的定义可以再 neutron/neutron_plugin_base_v2.py 这个文件中找到,其中每个参数的作用也有比较详细的介绍。对于用不着的资源,直接放任不管就好了,最多下次不小心调用了会发出“该接口没有被实现”的错误,不会有其他影响。这里是一个 Network API 实现的范例,其实它什么也没有做,但是确实是一个有效的接口实现:
  1. from neutron import neutron_plugin_base_v2
  2. class MyPlugin(neutron_plugin_base_v2.NeutronPluginBaseV2):
  3.     def __init__(self):
  4.         pass
  5.     def create_network(self, context, network):
  6.         # Create a network by using data from network dictionary
  7.         # Send back a dictionary to display created network's info
  8.         return network
  9.     def update_network(self, context, id, network):
  10.         # Update a created network matched by id with
  11.         # data in the network dictionary. Send back a
  12.         # dictionary to display the network's updated info
  13.         return network
  14.     def get_network(self, context, id, fields=None):
  15.         network = {}
  16.         # List information of a specific network matched by id
  17.         # and return it in a form of dictionary
  18.         return network
  19.     def get_networks(self, context, filters=None, fields=None):
  20.         network = {}
  21.         # List all networks that are active
  22.         return network
  23.     def delete_network(self, context, id):
  24.         # Delete a specific network matched by id
  25.         # return back the id of the network.
  26.         return id
复制代码

如果在具体实现这些接口的过程中,你有什么不太清楚的地方,有两个地方非常值得参考:一个是 neutron/db/db_base_plugin_v2.py,这个是neutron官方给出的一个基于数据库的实现。它只是操作数据库中的内容,模拟各个资源的创建、修改、删除等操作,但没有在物理机器上做任何改变。第二个地方就是 neutron/plugins 里面收纳的各个公司的插件实现,你可以从中学习到其他公司是怎么写插件的。

在写插件的过程中,通常还会遇到两种问题:一、我想要实现的 Network 还有一些额外的属性,但是现在的模型中不存在,怎么办? 二、我还想实现一些其他的资源,例如Gateway,Router,Firewall 等,怎么办?

这两种问题需要更加复杂的解决方案,属于 Neutron Extension 的范畴,我会在稍后的文章中进行介绍。





欢迎加入about云群90371779322273151432264021 ,云计算爱好者群,亦可关注about云腾讯认证空间||关注本站微信

已有(1)人评论

跳转到指定楼层
dulei 发表于 2014-12-8 08:54:52
不错,学习下
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

关闭

推荐上一条 /2 下一条