18e444ee1f
Multiple plugins under metaplugin become 'q-plugin' topic consumers and a request from an agent is handled by one of them randomly. Fortunatly most of RPC callbacks are common for plugins but a problem occurs if an RPC is not supported by the received plugin. This is one of risks when using metaplugin. Fundamental fix of this problem (such as RPC delegation handling of metaplugin) is difficult since each plugin needs to modify. But when only one plugin has plugin specific RPCs and other RPCs are independet of plugins, if the plugin can be selected for RPC handling, the problem does not happen. Typical use case of metaplugin such as combination of an agent-based plugin and a controller-based plugin often applies to this condition. This patch adds 'rpc_flavor' configuration parameter to select an RPC handling plugin. If 'rpc_flavor' is specified, only the specified plugin becomes 'q-plugin' topic consumer. If 'rpc_flavor' is not specified, the behavior is same as previous one. Change-Id: If133b054bba53829cebe63c1e0ebe6099eb1fd95 Closes-bug: #1267330 DocImpact |
||
---|---|---|
.. | ||
common | ||
__init__.py | ||
meta_db_v2.py | ||
meta_models_v2.py | ||
meta_neutron_plugin.py | ||
proxy_neutron_plugin.py | ||
README |
# -- Background This plugin supports multiple plugin at same time. This plugin is for L3 connectivility between networks which are realized by different plugins.This plugin adds new attributes 'flavor:network' and 'flavor:router". flavor:network corresponds to specific l2 plugin ( flavor-plugin mapping could be configurable by plugin_list config. flavor:router corresponds to specific l3 plugin ( flavor-plugin mapping could be configurable by l3_plugin_list config. Note that Metaplugin can provide l3 functionaliteis for l2 plugin which didn't support l3 extension yet. This plugin also support extensions. We can map extension to plugin by using extension_map config. [database] # This line MUST be changed to actually run the plugin. # Example: # connection = mysql://root:nova@127.0.0.1:3306/ovs_neutron # Replace 127.0.0.1 above with the IP address of the database used by the # main neutron server. (Leave it as is if the database runs on this host.) connection = mysql://root:password@localhost/neutron_metaplugin?charset=utf8 # Database reconnection retry times - in event connectivity is lost # set to -1 implgies an infinite retry count # max_retries = 10 # Database reconnection interval in seconds - in event connectivity is lost retry_interval = 2 [meta] ## This is list of flavor:neutron_plugins # extension method is used in the order of this list plugin_list= 'openvswitch:neutron.plugins.openvswitch.ovs_neutron_plugin.OVSneutronPluginV2,linuxbridge:neutron.plugins.linuxbridge.lb_neutron_plugin.LinuxBridgePluginV2' # plugin for l3 l3_plugin_list= 'openvswitch:neutron.plugins.openvswitch.ovs_neutron_plugin.OVSneutronPluginV2,linuxbridge:neutron.plugins.linuxbridge.lb_neutron_plugin.LinuxBridgePluginV2' # Default value of flavor default_flavor = 'openvswitch' # Default value for l3 default_l3_flavor = 'openvswitch' # supported extensions supported_extension_aliases = 'providernet' # specific method map for each flavor to extensions extension_map = 'get_port_stats:nvp' # -- BridgeDriver Configration # In order to use metaplugin, you should use MetaDriver. Following configation is needed. [DEFAULT] # Meta Plugin # Mapping between flavor and driver meta_flavor_driver_mappings = openvswitch:neutron.agent.linux.interface.OVSInterfaceDriver, linuxbridge:neutron.agent.linux.interface.BridgeInterfaceDriver # interface driver for MetaPlugin interface_driver = neutron.agent.linux.interface.MetaInterfaceDriver [proxy] auth_url = http://10.0.0.1:35357/v2.0 auth_region = RegionOne admin_tenant_name = service admin_user = neutron admin_password = password # -- Agent Agents for Metaplugin are in neutron/plugins/metaplugin/agent linuxbridge_neutron_agent and ovs_neutron_agent is available. # -- Extensions - flavor MetaPlugin supports flavor and provider net extension. Metaplugin select plugin_list using flavor. One plugin may use multiple flavor value. If the plugin support flavor, it may provide multiple flavor of network. - Attribute extension Each plugin can use attribute extension such as provider_net, if you specify that in supported_extension_aliases. - providernet Vlan ID range of each plugin should be different, since Metaplugin dose not manage that. #- limitations Basically, All plugin should inherit NeutronDbPluginV2. Metaplugin assumes all plugin share same Database especially for IPAM part in NeutronV2 API. You can use another plugin if you use ProxyPluginV2, which proxies request to the another neutron server. Example flavor configration for ProxyPluginV2 meta_flavor_driver_mappings = "openvswitch:neutron.agent.linux.interface.OVSInterfaceDriver,proxy:neutron.plugins.metaplugin.proxy_neutron_plugin.ProxyPluginV2" - Limited L3 support In folsom version, l3 is an extension. There is no way to extend exntension attributes. so you can set flavor:router value but you can't get flavor:router value in API output. L3 agent dont's support flavor:router.