Add enable_new_agents to neutron server

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. Nova and Cinder has the setting of “enable_new_services”
in each conf to disable the initial service status to achieve this.
This proposal adds enable_new_agents config.

DocImpact

Change-Id: Ie0d0b2dd4d95de95f3839d1c35f24b708e893801
Implements: blueprint enable-new-agents
Related-Bug: 1472076
This commit is contained in:
Hirofumi Ichihara 2015-08-26 14:47:36 +09:00
parent dea4f9fac1
commit a6c8d60e5e
3 changed files with 18 additions and 1 deletions

View File

@ -178,6 +178,11 @@
# Seconds to regard the agent as down; should be at least twice # Seconds to regard the agent as down; should be at least twice
# report_interval, to be sure the agent is down for good # report_interval, to be sure the agent is down for good
# agent_down_time = 75 # agent_down_time = 75
# Agent starts with admin_state_up=False when enable_new_agents=False.
# In the case, user's resources will not be scheduled automatically to the
# agent until admin changes admin_state_up to True.
# enable_new_agents = True
# =========== end of items for agent management extension ===== # =========== end of items for agent management extension =====
# =========== items for agent scheduler extension ============= # =========== items for agent scheduler extension =============

View File

@ -56,6 +56,11 @@ AGENT_OPTS = [
'dhcp_load_type can be configured to represent the ' 'dhcp_load_type can be configured to represent the '
'choice for the resource being balanced. ' 'choice for the resource being balanced. '
'Example: dhcp_load_type=networks')), 'Example: dhcp_load_type=networks')),
cfg.BoolOpt('enable_new_agents', default=True,
help=_("Agent starts with admin_state_up=False when "
"enable_new_agents=False. In the case, user's "
"resources will not be scheduled automatically to the "
"agent until admin changes admin_state_up to True.")),
] ]
cfg.CONF.register_opts(AGENT_OPTS) cfg.CONF.register_opts(AGENT_OPTS)
@ -236,7 +241,7 @@ class AgentDbMixin(ext_agent.AgentPluginBase):
res['created_at'] = current_time res['created_at'] = current_time
res['started_at'] = current_time res['started_at'] = current_time
res['heartbeat_timestamp'] = current_time res['heartbeat_timestamp'] = current_time
res['admin_state_up'] = True res['admin_state_up'] = cfg.CONF.enable_new_agents
agent_db = Agent(**res) agent_db = Agent(**res)
greenthread.sleep(0) greenthread.sleep(0)
context.session.add(agent_db) context.session.add(agent_db)

View File

@ -16,6 +16,7 @@
import datetime import datetime
import mock import mock
from oslo_config import cfg
from oslo_db import exception as exc from oslo_db import exception as exc
from oslo_utils import timeutils from oslo_utils import timeutils
import testscenarios import testscenarios
@ -154,6 +155,12 @@ class TestAgentsDbMixin(TestAgentsDbBase):
self.assertEqual(add_mock.call_count, 2, self.assertEqual(add_mock.call_count, 2,
"Agent entry creation hasn't been retried") "Agent entry creation hasn't been retried")
def test_create_or_update_agent_disable_new_agents(self):
cfg.CONF.set_override('enable_new_agents', False)
self.plugin.create_or_update_agent(self.context, self.agent_status)
agent = self.plugin.get_agents(self.context)[0]
self.assertFalse(agent['admin_state_up'])
class TestAgentsDbGetAgents(TestAgentsDbBase): class TestAgentsDbGetAgents(TestAgentsDbBase):
scenarios = [ scenarios = [