Plugin专题

plugin实现对REST API请求的后端支持。前端的rest框架会调用plugin的相应方法来实现rest api规定的语义。

plugin包括两种类型:核心plugin和服务plugin。

核心Plugin实现了对标准API的支持(对网络、端口和子网资源的相应操作),此外还可以选择性的支持一些扩展的API(_supported_extension_aliases属性中会指出)。
以neutron的openvswitch plugin为例,支持的扩展API包括

  1. _supported_extension_aliases = ["provider", "external-net", "router",
  2. "ext-gw-mode", "binding", "quotas",
  3. "security-group", "agent", "extraroute",
  4. "l3_agent_scheduler",
  5. "dhcp_agent_scheduler",
  6. "extra_dhcp_opt",
  7. "allowed-address-pairs"]

服务plugin则专门用于实现扩展API。目前,路由器、防火墙、vpn等都有相应的service plugin来专门实现。

neturon server启动时候,根据配置文件动态加载相应的核心plugin及服务plugins。
目前,neutron-server只能配置一个核心Plugin,但可以配置多个服务plugin(但每个extension的实现plugin不能超过一个)。

ML2 core plugin允许同时加载多个mechanism driver,可以达到同时使用不同的L2实现技术的效果。