Moved CORS middleware configuration into oslo-config-generator

The default values needed for neutron's implementation of cors
middleware have been moved from paste.ini into the configuration
hooks provided by oslo.config. Furthermore, these values have been
added to neutron's default configuration parsing. This ensures
that if a value remains unset in neutron.conf, it will be set to use
sane defaults, and that an operator modifying the configuration
file will be presented with a default set of necessary sane headers.

Change-Id: I327d1d7ce50dd4a20d781e6251a5af81c57e6ca1
Closes-Bug: 1551836
This commit is contained in:
Michael Krotscheck 2016-03-01 12:21:33 -08:00
parent b380b15d4c
commit aae181817e
4 changed files with 35 additions and 3 deletions

View File

@ -17,9 +17,6 @@ paste.filter_factory = oslo_middleware:CatchErrors.factory
[filter:cors] [filter:cors]
paste.filter_factory = oslo_middleware.cors:filter_factory paste.filter_factory = oslo_middleware.cors:filter_factory
oslo_config_project = neutron oslo_config_project = neutron
latent_allow_headers = X-Auth-Token, X-Identity-Status, X-Roles, X-Service-Catalog, X-User-Id, X-Tenant-Id, X-OpenStack-Request-ID
latent_expose_headers = X-Auth-Token, X-Subject-Token, X-Service-Token, X-OpenStack-Request-ID
latent_allow_methods = GET, PUT, POST, DELETE, PATCH
[filter:keystonecontext] [filter:keystonecontext]
paste.filter_factory = neutron.auth:NeutronKeystoneContext.factory paste.filter_factory = neutron.auth:NeutronKeystoneContext.factory

View File

@ -24,6 +24,7 @@ from oslo_config import cfg
from oslo_db import options as db_options from oslo_db import options as db_options
from oslo_log import log as logging from oslo_log import log as logging
import oslo_messaging import oslo_messaging
from oslo_middleware import cors
from oslo_service import wsgi from oslo_service import wsgi
from neutron._i18n import _, _LI from neutron._i18n import _, _LI
@ -260,6 +261,7 @@ def reset_service():
# Note that this is called only in case a service is running in # Note that this is called only in case a service is running in
# daemon mode. # daemon mode.
setup_logging() setup_logging()
set_config_defaults()
policy.refresh() policy.refresh()
@ -271,3 +273,33 @@ def load_paste_app(app_name):
loader = wsgi.Loader(cfg.CONF) loader = wsgi.Loader(cfg.CONF)
app = loader.load_app(app_name) app = loader.load_app(app_name)
return app return app
def set_config_defaults():
"""This method updates all configuration default values."""
set_cors_middleware_defaults()
def set_cors_middleware_defaults():
"""Update default configuration options for oslo.middleware."""
# CORS Defaults
# TODO(krotscheck): Update with https://review.openstack.org/#/c/285368/
cfg.set_defaults(cors.CORS_OPTS,
allow_headers=['X-Auth-Token',
'X-Identity-Status',
'X-Roles',
'X-Service-Catalog',
'X-User-Id',
'X-Tenant-Id',
'X-OpenStack-Request-ID'],
expose_headers=['X-Auth-Token',
'X-Subject-Token',
'X-Service-Token',
'X-OpenStack-Request-ID',
'OpenStack-Volume-microversion'],
allow_methods=['GET',
'PUT',
'POST',
'DELETE',
'PATCH']
)

View File

@ -28,6 +28,7 @@ def boot_server(server_func):
# the configuration will be read into the cfg.CONF global data structure # the configuration will be read into the cfg.CONF global data structure
config.init(sys.argv[1:]) config.init(sys.argv[1:])
config.setup_logging() config.setup_logging()
config.set_config_defaults()
if not cfg.CONF.config_file: if not cfg.CONF.config_file:
sys.exit(_("ERROR: Unable to find configuration file via the default" sys.exit(_("ERROR: Unable to find configuration file via the default"
" search paths (~/.neutron/, ~/, /etc/neutron/, /etc/) and" " search paths (~/.neutron/, ~/, /etc/neutron/, /etc/) and"

View File

@ -147,6 +147,8 @@ oslo.config.opts =
neutron.ml2.sriov.agent = neutron.opts:list_sriov_agent_opts neutron.ml2.sriov.agent = neutron.opts:list_sriov_agent_opts
neutron.qos = neutron.opts:list_qos_opts neutron.qos = neutron.opts:list_qos_opts
nova.auth = neutron.opts:list_auth_opts nova.auth = neutron.opts:list_auth_opts
oslo.config.opts.defaults =
oslo.middleware.cors = neutron.common.config:set_cors_middleware_defaults
neutron.db.alembic_migrations = neutron.db.alembic_migrations =
neutron = neutron.db.migration:alembic_migrations neutron = neutron.db.migration:alembic_migrations
neutron.interface_drivers = neutron.interface_drivers =