From 84f8ae9d1f696b2561b634336338df0e14c37116 Mon Sep 17 00:00:00 2001 From: Rodolfo Alonso Hernandez Date: Wed, 13 Feb 2019 19:01:06 +0000 Subject: [PATCH] Add "rpc_response_max_timeout" config variable in OVS agent The configuration variable "rpc_response_max_timeout" is not defined in the OVS agent configuration. When the agent is stopped (SIGTERM), the exception is raised. This error can be seen in the fullstack tests. Change-Id: Ieedb6e87a4e98efef0f895566f7d4d88c3cd9336 Closes-Bug: #1815797 --- neutron/cmd/ovs_cleanup.py | 2 ++ neutron/conf/service.py | 8 ++++++-- neutron/opts.py | 13 ++++++++++--- .../drivers/openvswitch/agent/ovs_neutron_agent.py | 2 ++ neutron/service.py | 3 ++- 5 files changed, 22 insertions(+), 6 deletions(-) diff --git a/neutron/cmd/ovs_cleanup.py b/neutron/cmd/ovs_cleanup.py index da1d2c6cf3c..723c64d21b3 100644 --- a/neutron/cmd/ovs_cleanup.py +++ b/neutron/cmd/ovs_cleanup.py @@ -21,6 +21,7 @@ from neutron.common import config from neutron.conf.agent import cmd from neutron.conf.agent import common as agent_config from neutron.conf.agent.l3 import config as l3_config +from neutron.conf import service as service_config LOG = logging.getLogger(__name__) @@ -41,6 +42,7 @@ def setup_conf(): l3_config.register_l3_agent_config_opts(l3_config.OPTS, conf) agent_config.register_interface_driver_opts_helper(conf) agent_config.register_interface_opts() + service_config.register_service_opts(service_config.RPC_EXTRA_OPTS, conf) conf.set_default("ovsdb_timeout", CLEANUP_OVSDB_TIMEOUT, "OVS") return conf diff --git a/neutron/conf/service.py b/neutron/conf/service.py index d68e0229b5f..bad63aacf17 100644 --- a/neutron/conf/service.py +++ b/neutron/conf/service.py @@ -19,7 +19,7 @@ from oslo_config import cfg from neutron._i18n import _ -service_opts = [ +SERVICE_OPTS = [ cfg.IntOpt('periodic_interval', default=40, help=_('Seconds between running periodic tasks.')), @@ -39,9 +39,13 @@ service_opts = [ help=_('Range of seconds to randomly delay when starting the ' 'periodic task scheduler to reduce stampeding. ' '(Disable by setting to 0)')), +] + +RPC_EXTRA_OPTS = [ cfg.IntOpt('rpc_response_max_timeout', default=600, - help=_('Maximum seconds to wait for a response from a call.')), + help=_('Maximum seconds to wait for a response from an RPC ' + 'call.')), ] diff --git a/neutron/opts.py b/neutron/opts.py index ea58b1ea362..02b5d0ca135 100644 --- a/neutron/opts.py +++ b/neutron/opts.py @@ -134,7 +134,8 @@ def list_opts(): neutron.conf.common.core_cli_opts, neutron.conf.common.core_opts, neutron.conf.wsgi.socket_opts, - neutron.conf.service.service_opts) + neutron.conf.service.SERVICE_OPTS, + neutron.conf.service.RPC_EXTRA_OPTS) ), (neutron.conf.common.NOVA_CONF_SECTION, itertools.chain( @@ -149,7 +150,8 @@ def list_base_agent_opts(): ('DEFAULT', itertools.chain( neutron.conf.agent.common.INTERFACE_OPTS, - neutron.conf.agent.common.INTERFACE_DRIVER_OPTS) + neutron.conf.agent.common.INTERFACE_DRIVER_OPTS, + neutron.conf.service.RPC_EXTRA_OPTS) ), ('agent', neutron.conf.agent.common.AGENT_STATE_OPTS), ('ovs', @@ -201,7 +203,8 @@ def list_l3_agent_opts(): ('DEFAULT', itertools.chain( neutron.conf.agent.l3.config.OPTS, - neutron.conf.service.service_opts, + neutron.conf.service.SERVICE_OPTS, + neutron.conf.service.RPC_EXTRA_OPTS, neutron.conf.agent.l3.ha.OPTS, neutron.conf.agent.common.PD_DRIVER_OPTS, neutron.conf.agent.common.RA_OPTS) @@ -269,6 +272,10 @@ def list_ml2_conf_opts(): def list_ovs_opts(): return [ + ('DEFAULT', + itertools.chain( + neutron.conf.service.RPC_EXTRA_OPTS) + ), ('ovs', itertools.chain( neutron.conf.plugins.ml2.drivers.ovs_conf.ovs_opts, diff --git a/neutron/plugins/ml2/drivers/openvswitch/agent/ovs_neutron_agent.py b/neutron/plugins/ml2/drivers/openvswitch/agent/ovs_neutron_agent.py index d8e1f1b545a..eb8291011f7 100644 --- a/neutron/plugins/ml2/drivers/openvswitch/agent/ovs_neutron_agent.py +++ b/neutron/plugins/ml2/drivers/openvswitch/agent/ovs_neutron_agent.py @@ -59,6 +59,7 @@ from neutron.common import constants as c_const from neutron.common import utils as n_utils from neutron.conf.agent import common as agent_config from neutron.conf.agent import xenapi_conf +from neutron.conf import service as service_conf from neutron.plugins.ml2.drivers.agent import capabilities from neutron.plugins.ml2.drivers.l2pop.rpc_manager import l2population_rpc from neutron.plugins.ml2.drivers.openvswitch.agent.common \ @@ -2353,6 +2354,7 @@ def main(bridge_classes): ovs_capabilities.register() ext_manager.register_opts(cfg.CONF) agent_config.setup_privsep() + service_conf.register_service_opts(service_conf.RPC_EXTRA_OPTS, cfg.CONF) ext_mgr = ext_manager.L2AgentExtensionsManager(cfg.CONF) diff --git a/neutron/service.py b/neutron/service.py index 50a859c5475..8679f32d0bd 100644 --- a/neutron/service.py +++ b/neutron/service.py @@ -40,7 +40,8 @@ from neutron.conf import service from neutron import wsgi -service.register_service_opts(service.service_opts) +service.register_service_opts(service.SERVICE_OPTS) +service.register_service_opts(service.RPC_EXTRA_OPTS) LOG = logging.getLogger(__name__)