参考链接:
http://control-that-vm.blogspot.jp/2014/02/neutron-plugin-architecture.html
https://wiki.openstack.org/wiki/NeutronDevelopment#Developing_a_Neutron_Plugin
Neutron的插件必须实现一组Neutron的python API,可以查看一下neutron的基类代码neutron/neutron_plugin_base.py
插件的类需要继承类NeutronPluginBaseV2,这个类中提供了一些网络相关的增删改查抽象方法,在插件的类中需要定义并实现该方法,如果有些方法是不需要的话,需要定义这个方法的实现为pass。
基类中已经提供了sqlalchemy绑定,可以存储API的一些输入信息,比如网络,端口。
一个插件通常由以下几个功能组成:
1. 存储逻辑上的网络配置信息到数据库
2. 确定和存储逻辑到物理网络映射的信息
3. 与底层实际的硬件或软件交互,实现逻辑功能到物理的映射
修改neutron.conf中core_plugin的配置项,将其指向我们自己开发的插件:[DEFAULT] 中的 core_plugin=<path.to.plugin.AbcNeutronPlugin>,然后重启neutron服务。