Refactoring config options for service

Refactoring neutron configuration options for service to be in
neutron/conf. This would allow centralization of all configuration
options and provide an easy way to import.

Co-Authored-By: Dariusz Smigiel <smigiel.dariusz@gmail.com>

Partial-Bug: #1563069

Change-Id: Iff140c11765199536a8fd8066ad3063ed92355ae
This commit is contained in:
Aradhana Singh 2016-04-19 22:03:27 +00:00 committed by Dariusz Smigiel
parent c4f03418cc
commit 79fd5b4b17
3 changed files with 62 additions and 37 deletions

46
neutron/conf/service.py Normal file
View File

@ -0,0 +1,46 @@
# Copyright 2011 VMware, Inc
# All Rights Reserved.
#
# Licensed under the Apache License, Version 2.0 (the "License"); you may
# not use this file except in compliance with the License. You may obtain
# a copy of the License at
#
# http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
# WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
# License for the specific language governing permissions and limitations
# under the License.
from oslo_config import cfg
from neutron._i18n import _
service_opts = [
cfg.IntOpt('periodic_interval',
default=40,
help=_('Seconds between running periodic tasks.')),
cfg.IntOpt('api_workers',
help=_('Number of separate API worker processes for service. '
'If not specified, the default is equal to the number '
'of CPUs available for best performance.')),
cfg.IntOpt('rpc_workers',
default=1,
help=_('Number of RPC worker processes for service.')),
cfg.IntOpt('rpc_state_report_workers',
default=1,
help=_('Number of RPC worker processes dedicated to state '
'reports queue.')),
cfg.IntOpt('periodic_fuzzy_delay',
default=5,
help=_('Range of seconds to randomly delay when starting the '
'periodic task scheduler to reduce stampeding. '
'(Disable by setting to 0)')),
]
def register_service_opts(opts, conf=cfg.CONF):
conf.register_opts(opts)

View File

@ -30,6 +30,7 @@ import neutron.agent.metadata.config
import neutron.agent.ovsdb.api
import neutron.agent.securitygroups_rpc
import neutron.conf.quota
import neutron.conf.service
import neutron.db.agents_db
import neutron.db.agentschedulers_db
import neutron.db.dvr_mac_db
@ -55,7 +56,6 @@ import neutron.plugins.ml2.drivers.type_geneve
import neutron.plugins.ml2.drivers.type_gre
import neutron.plugins.ml2.drivers.type_vlan
import neutron.plugins.ml2.drivers.type_vxlan
import neutron.service
import neutron.services.metering.agents.metering_agent
import neutron.services.qos.notification_drivers.manager
import neutron.wsgi
@ -132,7 +132,7 @@ def list_opts():
neutron.common.config.core_cli_opts,
neutron.common.config.core_opts,
neutron.wsgi.socket_opts,
neutron.service.service_opts)
neutron.conf.service.service_opts)
),
(neutron.common.config.NOVA_CONF_SECTION,
itertools.chain(
@ -192,7 +192,7 @@ def list_l3_agent_opts():
('DEFAULT',
itertools.chain(
neutron.agent.l3.config.OPTS,
neutron.service.service_opts,
neutron.conf.service.service_opts,
neutron.agent.l3.ha.OPTS,
neutron.agent.linux.pd.OPTS,
neutron.agent.linux.ra.OPTS)

View File

@ -26,9 +26,10 @@ from oslo_service import service as common_service
from oslo_utils import excutils
from oslo_utils import importutils
from neutron._i18n import _, _LE, _LI
from neutron._i18n import _LE, _LI
from neutron.common import config
from neutron.common import rpc as n_rpc
from neutron.conf import service
from neutron import context
from neutron.db import api as session
from neutron import manager
@ -36,29 +37,7 @@ from neutron import worker
from neutron import wsgi
service_opts = [
cfg.IntOpt('periodic_interval',
default=40,
help=_('Seconds between running periodic tasks')),
cfg.IntOpt('api_workers',
help=_('Number of separate API worker processes for service. '
'If not specified, the default is equal to the number '
'of CPUs available for best performance.')),
cfg.IntOpt('rpc_workers',
default=1,
help=_('Number of RPC worker processes for service')),
cfg.IntOpt('rpc_state_report_workers',
default=1,
help=_('Number of RPC worker processes dedicated to state '
'reports queue')),
cfg.IntOpt('periodic_fuzzy_delay',
default=5,
help=_('Range of seconds to randomly delay when starting the '
'periodic task scheduler to reduce stampeding. '
'(Disable by setting to 0)')),
]
CONF = cfg.CONF
CONF.register_opts(service_opts)
service.register_service_opts(service.service_opts)
LOG = logging.getLogger(__name__)
@ -301,30 +280,30 @@ class Service(n_rpc.Service):
periodic_fuzzy_delay=None):
"""Instantiates class and passes back application object.
:param host: defaults to CONF.host
:param host: defaults to cfg.CONF.host
:param binary: defaults to basename of executable
:param topic: defaults to bin_name - 'neutron-' part
:param manager: defaults to CONF.<topic>_manager
:param report_interval: defaults to CONF.report_interval
:param periodic_interval: defaults to CONF.periodic_interval
:param periodic_fuzzy_delay: defaults to CONF.periodic_fuzzy_delay
:param manager: defaults to cfg.CONF.<topic>_manager
:param report_interval: defaults to cfg.CONF.report_interval
:param periodic_interval: defaults to cfg.CONF.periodic_interval
:param periodic_fuzzy_delay: defaults to cfg.CONF.periodic_fuzzy_delay
"""
if not host:
host = CONF.host
host = cfg.CONF.host
if not binary:
binary = os.path.basename(inspect.stack()[-1][1])
if not topic:
topic = binary.rpartition('neutron-')[2]
topic = topic.replace("-", "_")
if not manager:
manager = CONF.get('%s_manager' % topic, None)
manager = cfg.CONF.get('%s_manager' % topic, None)
if report_interval is None:
report_interval = CONF.report_interval
report_interval = cfg.CONF.report_interval
if periodic_interval is None:
periodic_interval = CONF.periodic_interval
periodic_interval = cfg.CONF.periodic_interval
if periodic_fuzzy_delay is None:
periodic_fuzzy_delay = CONF.periodic_fuzzy_delay
periodic_fuzzy_delay = cfg.CONF.periodic_fuzzy_delay
service_obj = cls(host, binary, topic, manager,
report_interval=report_interval,
periodic_interval=periodic_interval,