34d4a8bb99
This option allows to configure Number of times nova or ironic client
should retry on any failed http call.
Default value for this new option is "3".
Change-Id: I795ee7ca729646be0411a1232bf218015c65010f
Closes-Bug: #1883712
(cherry picked from commit e94511cd25
)
214 lines
11 KiB
Python
214 lines
11 KiB
Python
# 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 neutron_lib import constants
|
|
from neutron_lib.utils import net
|
|
from oslo_config import cfg
|
|
from oslo_service import wsgi
|
|
|
|
from neutron._i18n import _
|
|
|
|
|
|
core_opts = [
|
|
cfg.HostAddressOpt('bind_host', default='0.0.0.0',
|
|
help=_("The host IP to bind to.")),
|
|
cfg.PortOpt('bind_port', default=9696,
|
|
help=_("The port to bind to")),
|
|
cfg.StrOpt('api_extensions_path', default="",
|
|
help=_("The path for API extensions. "
|
|
"Note that this can be a colon-separated list of paths. "
|
|
"For example: api_extensions_path = "
|
|
"extensions:/path/to/more/exts:/even/more/exts. "
|
|
"The __path__ of neutron.extensions is appended to "
|
|
"this, so if your extensions are in there you don't "
|
|
"need to specify them here.")),
|
|
cfg.StrOpt('auth_strategy', default='keystone',
|
|
help=_("The type of authentication to use")),
|
|
cfg.StrOpt('core_plugin',
|
|
help=_("The core plugin Neutron will use")),
|
|
cfg.ListOpt('service_plugins', default=[],
|
|
help=_("The service plugins Neutron will use")),
|
|
cfg.StrOpt('base_mac', default="fa:16:3e:00:00:00",
|
|
help=_("The base MAC address Neutron will use for VIFs. "
|
|
"The first 3 octets will remain unchanged. If the 4th "
|
|
"octet is not 00, it will also be used. The others "
|
|
"will be randomly generated.")),
|
|
cfg.BoolOpt('allow_bulk', default=True,
|
|
help=_("Allow the usage of the bulk API")),
|
|
cfg.StrOpt('pagination_max_limit', default="-1",
|
|
help=_("The maximum number of items returned in a single "
|
|
"response, value was 'infinite' or negative integer "
|
|
"means no limit")),
|
|
cfg.ListOpt('default_availability_zones', default=[],
|
|
help=_("Default value of availability zone hints. The "
|
|
"availability zone aware schedulers use this when "
|
|
"the resources availability_zone_hints is empty. "
|
|
"Multiple availability zones can be specified by a "
|
|
"comma separated string. This value can be empty. "
|
|
"In this case, even if availability_zone_hints for "
|
|
"a resource is empty, availability zone is "
|
|
"considered for high availability while scheduling "
|
|
"the resource.")),
|
|
cfg.IntOpt('max_dns_nameservers', default=5,
|
|
help=_("Maximum number of DNS nameservers per subnet")),
|
|
cfg.IntOpt('max_subnet_host_routes', default=20,
|
|
help=_("Maximum number of host routes per subnet")),
|
|
cfg.BoolOpt('ipv6_pd_enabled', default=False,
|
|
help=_("Enables IPv6 Prefix Delegation for automatic subnet "
|
|
"CIDR allocation. "
|
|
"Set to True to enable IPv6 Prefix Delegation for "
|
|
"subnet allocation in a PD-capable environment. Users "
|
|
"making subnet creation requests for IPv6 subnets "
|
|
"without providing a CIDR or subnetpool ID will be "
|
|
"given a CIDR via the Prefix Delegation mechanism. "
|
|
"Note that enabling PD will override the behavior of "
|
|
"the default IPv6 subnetpool.")),
|
|
cfg.IntOpt('dhcp_lease_duration', default=86400,
|
|
help=_("DHCP lease duration (in seconds). Use -1 to tell "
|
|
"dnsmasq to use infinite lease times.")),
|
|
cfg.StrOpt('dns_domain',
|
|
default='openstacklocal',
|
|
help=_('Domain to use for building the hostnames')),
|
|
cfg.StrOpt('external_dns_driver',
|
|
help=_('Driver for external DNS integration.')),
|
|
cfg.BoolOpt('dhcp_agent_notification', default=True,
|
|
help=_("Allow sending resource operation"
|
|
" notification to DHCP agent")),
|
|
cfg.BoolOpt('allow_overlapping_ips', default=False,
|
|
help=_("Allow overlapping IP support in Neutron. "
|
|
"Attention: the following parameter MUST be set to "
|
|
"False if Neutron is being used in conjunction with "
|
|
"Nova security groups.")),
|
|
cfg.HostAddressOpt('host', default=net.get_hostname(),
|
|
sample_default='example.domain',
|
|
help=_("Hostname to be used by the Neutron server, "
|
|
"agents and services running on this machine. "
|
|
"All the agents and services running on this "
|
|
"machine must use the same host value.")),
|
|
cfg.StrOpt("network_link_prefix",
|
|
help=_("This string is prepended to the normal URL that is "
|
|
"returned in links to the OpenStack Network API. If it "
|
|
"is empty (the default), the URLs are returned "
|
|
"unchanged.")),
|
|
cfg.BoolOpt('notify_nova_on_port_status_changes', default=True,
|
|
help=_("Send notification to nova when port status changes")),
|
|
cfg.BoolOpt('notify_nova_on_port_data_changes', default=True,
|
|
help=_("Send notification to nova when port data (fixed_ips/"
|
|
"floatingip) changes so nova can update its cache.")),
|
|
cfg.IntOpt('send_events_interval', default=2,
|
|
help=_('Number of seconds between sending events to nova if '
|
|
'there are any events to send.')),
|
|
cfg.StrOpt('setproctitle', default='on',
|
|
help=_("Set process name to match child worker role. "
|
|
"Available options are: 'off' - retains the previous "
|
|
"behavior; 'on' - renames processes to "
|
|
"'neutron-server: role (original string)'; "
|
|
"'brief' - renames the same as 'on', but without the "
|
|
"original string, such as 'neutron-server: role'.")),
|
|
cfg.StrOpt('ipam_driver', default='internal',
|
|
help=_("Neutron IPAM (IP address management) driver to use. "
|
|
"By default, the reference implementation of the "
|
|
"Neutron IPAM driver is used.")),
|
|
cfg.BoolOpt('vlan_transparent', default=False,
|
|
help=_('If True, then allow plugins that support it to '
|
|
'create VLAN transparent networks.')),
|
|
cfg.BoolOpt('filter_validation', default=True,
|
|
help=_('If True, then allow plugins to decide '
|
|
'whether to perform validations on filter parameters. '
|
|
'Filter validation is enabled if this config '
|
|
'is turned on and it is supported by all plugins')),
|
|
cfg.IntOpt('global_physnet_mtu', default=constants.DEFAULT_NETWORK_MTU,
|
|
deprecated_name='segment_mtu', deprecated_group='ml2',
|
|
help=_('MTU of the underlying physical network. Neutron uses '
|
|
'this value to calculate MTU for all virtual network '
|
|
'components. For flat and VLAN networks, neutron uses '
|
|
'this value without modification. For overlay networks '
|
|
'such as VXLAN, neutron automatically subtracts the '
|
|
'overlay protocol overhead from this value. Defaults '
|
|
'to 1500, the standard value for Ethernet.')),
|
|
cfg.IntOpt('http_retries', default=3, min=0,
|
|
help=_("Number of times client connections (nova, ironic) "
|
|
"should be retried on a failed HTTP call. 0 (zero) means"
|
|
"connection is attempted only once (not retried). "
|
|
"Setting to any positive integer means that on failure "
|
|
"the connection is retried that many times. "
|
|
"For example, setting to 3 means total attempts to "
|
|
"connect will be 4."))
|
|
]
|
|
|
|
core_cli_opts = [
|
|
cfg.StrOpt('state_path',
|
|
default='/var/lib/neutron',
|
|
help=_("Where to store Neutron state files. "
|
|
"This directory must be writable by the agent.")),
|
|
]
|
|
|
|
|
|
def register_core_common_config_opts(cfg=cfg.CONF):
|
|
cfg.register_opts(core_opts)
|
|
cfg.register_cli_opts(core_cli_opts)
|
|
wsgi.register_opts(cfg)
|
|
|
|
|
|
NOVA_CONF_SECTION = 'nova'
|
|
|
|
nova_opts = [
|
|
cfg.StrOpt('region_name',
|
|
help=_('Name of nova region to use. Useful if keystone manages'
|
|
' more than one region.')),
|
|
cfg.StrOpt('endpoint_type',
|
|
default='public',
|
|
choices=['public', 'admin', 'internal'],
|
|
help=_('Type of the nova endpoint to use. This endpoint will'
|
|
' be looked up in the keystone catalog and should be'
|
|
' one of public, internal or admin.')),
|
|
]
|
|
|
|
|
|
def register_nova_opts(cfg=cfg.CONF):
|
|
cfg.register_opts(nova_opts, group=NOVA_CONF_SECTION)
|
|
|
|
|
|
PLACEMENT_CONF_SECTION = 'placement'
|
|
|
|
placement_opts = [
|
|
cfg.StrOpt('region_name',
|
|
help=_('Name of placement region to use. Useful if keystone '
|
|
'manages more than one region.')),
|
|
cfg.StrOpt('endpoint_type',
|
|
default='public',
|
|
choices=['public', 'admin', 'internal'],
|
|
help=_('Type of the placement endpoint to use. This endpoint '
|
|
'will be looked up in the keystone catalog and should '
|
|
'be one of public, internal or admin.')),
|
|
]
|
|
|
|
|
|
def register_placement_opts(cfg=cfg.CONF):
|
|
cfg.register_opts(placement_opts, group=PLACEMENT_CONF_SECTION)
|
|
|
|
|
|
IRONIC_CONF_SECTION = 'ironic'
|
|
|
|
ironic_opts = [
|
|
cfg.BoolOpt('enable_notifications', default=False,
|
|
help=_("Send notification events to ironic. (For example on "
|
|
"relevant port status changes.)")),
|
|
]
|
|
|
|
|
|
def register_ironic_opts(cfg=cfg.CONF):
|
|
cfg.register_opts(ironic_opts, group=IRONIC_CONF_SECTION)
|