Add enable_new_agents to neutron server¶
https://blueprints.launchpad.net/neutron/+spec/enable-new-agents
This proposal adds enable_new_agents config for operator maintenance to agents in network node. It proposes a way that an agent can start without selectable for auto-scheduling but manual-scheduling available so that a deployer can test an agent manually.
Problem Description¶
Neutron doesn’t have a way to test a newly added network node by deploying test resource before any customer resource on the node is deployed. When cloud operators control network resources, they want to prevent users from controlling the resources. For example, they may try to create test resources on a new node while deploying the new node. Neutron can prevent users from creating the resources on the node by agent’s admin_state_up=False, but Neutron cannot start agent with admin_state_up=False. Neutron always starts agent with admin_state_up=True. Nova and Cinder have the setting of “enable_new_services” in each conf to disable the initial service status to achieve this.
Neutron also has a problem for the maintenance scenario. Neutron can prevent all users from creating the resources on the agent with admin_state_up=False, but Neutron usually cannot allow admin user only to create the resources. Currently, if enable_services_on_agents_with_admin_state_down configuration parameter is True, admin can create the resources on the agent.
Proposed Change¶
This proposal adds enable_new_agents config for operator maintenance to agents in network nodes. Neutron agent’s admin_state_up is controlled by this config while starting. The config is added to neutron-server since the proposal provides all agents which have scheduling method(i.e.l3-agent, dhcp-agent, lbaas-agent) and don’t have the method(i.e. ovs-agent, metadata-agent) so that deployers enable agents easily although this proposal gives a benefit to scheduling agents only.
Neutron agent starts with admin_state_up=True when enable_new_agents=True. This behaviour is default. User freely creates their resources on the agent.
Neutron agent starts with admin_state_up=False when enable_new_agents=False. This behaviour is maintenance mode. In the case, user’s resources cannot be created on the agent until admin changes admin_state_up to True.
The default value is True because this proposal doesn’t intend to change a traditional behaviour.
The proposal also presupposes that enable_services_on_agents_with_admin_state_down is True in Neutron servers.
Data Model Impact¶
None
REST API Impact¶
None
Security Impact¶
None
Notifications Impact¶
None
Other End User Impact¶
None
Performance Impact¶
None
IPv6 Impact¶
None
Other Deployer Impact¶
This proposal adds enable_new_agents to neutron.conf. This config is set True as default value. It doesn’t change a traditional behaviour of the agents.
Developer Impact¶
None
Community Impact¶
None
Alternatives¶
None
Implementation¶
Assignee(s)¶
Hirofumi Ichihara <ichihara-hirofumi>
Work Items¶
Add enable_new_agents config and the implements
Dependencies¶
None
Testing¶
Tempest Tests¶
None
Functional Tests¶
Add tests which ensure agents start with admin_state_up False.
API Tests¶
None
Documentation Impact¶
User Documentation¶
The new config options will be documented.
The following is a maintenance scenario. The maintenance scenario will be documented.
Precondition: Neutron servers run with enable_services_on_agents_with_admin_state_down=True.
Admin prepares a new network node.
Admin adds enable_new_agents=False to neutron.conf and starts a neutron server, then their all agents.
All agents run with admin_state_up=False.
Admin needs to create a network (or router) and allocates it to a target agent.
Admin creates VM connected the network resources, then admin confirms the capability.
Admin deletes all resources and update agents to be admin_state_up=True after the test.
Developer Documentation¶
None