From: Hirofumi Ichihara Date: Wed, 26 Aug 2015 05:47:36 +0000 (+0900) Subject: Add enable_new_agents to neutron server X-Git-Url: https://review.fuel-infra.org/gitweb?a=commitdiff_plain;h=a6c8d60e5e5ad41096dcf1f258b2983d2c6beb77;p=openstack-build%2Fneutron-build.git 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 --- diff --git a/etc/neutron.conf b/etc/neutron.conf index 1c185a805..0f4a206aa 100644 --- a/etc/neutron.conf +++ b/etc/neutron.conf @@ -178,6 +178,11 @@ # Seconds to regard the agent as down; should be at least twice # report_interval, to be sure the agent is down for good # 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 ===== # =========== items for agent scheduler extension ============= diff --git a/neutron/db/agents_db.py b/neutron/db/agents_db.py index 702f2e497..9417d5e3c 100644 --- a/neutron/db/agents_db.py +++ b/neutron/db/agents_db.py @@ -56,6 +56,11 @@ AGENT_OPTS = [ 'dhcp_load_type can be configured to represent the ' 'choice for the resource being balanced. ' '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) @@ -236,7 +241,7 @@ class AgentDbMixin(ext_agent.AgentPluginBase): res['created_at'] = current_time res['started_at'] = 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) greenthread.sleep(0) context.session.add(agent_db) diff --git a/neutron/tests/unit/db/test_agents_db.py b/neutron/tests/unit/db/test_agents_db.py index a47266314..3aeea2b3a 100644 --- a/neutron/tests/unit/db/test_agents_db.py +++ b/neutron/tests/unit/db/test_agents_db.py @@ -16,6 +16,7 @@ import datetime import mock +from oslo_config import cfg from oslo_db import exception as exc from oslo_utils import timeutils import testscenarios @@ -154,6 +155,12 @@ class TestAgentsDbMixin(TestAgentsDbBase): self.assertEqual(add_mock.call_count, 2, "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): scenarios = [