The current implementation of the dhcp and metadata services for the NVP plugin depend on external dhcp and metadata agents that implement respectively dhcp and proxy services to the Nova Metadata Server. This blueprint is about making the plugin capable of adopting alternative solutions, for example ones that are not agent-based.
The ability to utilize dhcp and metadata services provided by the NVP platform itself, or any other external party.
Currently the plugin inherits from a mixin class to handle metadata traffic; calls to the dhcp agent are sprinkled throughout the code. The blueprint implementation is about improving the current structure by adopting delegates instead. The mixin class will stay, but it will be no longer about implementing agent based metadata and dhcp services, but it will be about relaying the functionality to the delegates. Depending on the agent mode, delegates may implement agent-based or agentless functionality.
Data Model Changes
New configuration variables will be introduced:
'agent_mode' variable specifies in which mode the plugin needs to operate in order to provide DHCP and metadata proxy services to tenant instances. If 'agent' is chosen (default) the NVP plugin relies on external RPC agents (i.e. dhcp and metadata agents) to provide such services. In this mode, the plugin supports API extensions 'agent' and 'dhcp_agent_scheduler'. If 'agentless' is chosen (experimental in Havana), the plugin will use NVP logical services for DHCP and metadata proxy. This simplifies the deployment model for Neutron, in that the plugin no longer requires the RPC agents to operate. When 'agentless' is chosen, the config option metadata_mode becomes ineffective. The mode 'agentless' can work only with NVP 3.3 or above. Another mode may be introduced, called hybrid, which may be used to deal with migration from one mode to another. However this is outside the scope of the blueprint.
No direct API changes, however when agentless mode is chosen, API calls that relate to the Agent and DHCP Agent Scheduler extensions will return 404 Not Found.
No changes to the Neutron plugin.
No changes to the CLI.
No changes required to the GUI.