參考鏈接:
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服務。