From a5883fd3afc204619218769229026020c65fff84 Mon Sep 17 00:00:00 2001 From: Michael Krotscheck Date: Fri, 4 Mar 2016 08:11:28 -0800 Subject: [PATCH] Moved CORS middleware configuration into oslo-config-generator The default values needed for magnum'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 the default initialization procedure. This ensures that if a value remains unset in the configuration file, it will fallback to using sane defaults. It also ensures that an operator modifying the configuration will be presented with that same set of defaults. Change-Id: I7d8f8708d53bbab117600070982ac80482fa0a77 Closes-Bug: 1551836 --- etc/magnum/api-paste.ini | 3 --- magnum/api/app.py | 2 ++ magnum/common/config.py | 32 ++++++++++++++++++++++++++++++++ magnum/common/service.py | 2 ++ setup.cfg | 3 +++ 5 files changed, 39 insertions(+), 3 deletions(-) diff --git a/etc/magnum/api-paste.ini b/etc/magnum/api-paste.ini index fe36640cde..067dfa4bc8 100644 --- a/etc/magnum/api-paste.ini +++ b/etc/magnum/api-paste.ini @@ -14,6 +14,3 @@ paste.filter_factory = oslo_middleware:RequestId.factory [filter:cors] paste.filter_factory = oslo_middleware.cors:filter_factory oslo_config_project = magnum -latent_allow_methods = GET, PUT, POST, DELETE, PATCH -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 diff --git a/magnum/api/app.py b/magnum/api/app.py index b7e5596fb4..a54537a42a 100644 --- a/magnum/api/app.py +++ b/magnum/api/app.py @@ -18,6 +18,7 @@ import pecan from magnum.api import config as api_config from magnum.api import middleware +from magnum.common import config as common_config from magnum.i18n import _ # Register options for the service @@ -58,6 +59,7 @@ def setup_app(config=None): config = get_pecan_config() app_conf = dict(config.app) + common_config.set_config_defaults() app = pecan.make_app( app_conf.pop('root'), diff --git a/magnum/common/config.py b/magnum/common/config.py index cd0ca61a05..3bff789541 100644 --- a/magnum/common/config.py +++ b/magnum/common/config.py @@ -16,6 +16,7 @@ # under the License. from oslo_config import cfg +from oslo_middleware import cors from magnum.common import rpc from magnum import version @@ -28,3 +29,34 @@ def parse_args(argv, default_config_files=None): version=version.version_info.release_string(), default_config_files=default_config_files) rpc.init(cfg.CONF) + + +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', + 'X-Server-Management-Url'], + expose_headers=['X-Auth-Token', + 'X-Subject-Token', + 'X-Service-Token', + 'X-OpenStack-Request-ID', + 'X-Server-Management-Url'], + allow_methods=['GET', + 'PUT', + 'POST', + 'DELETE', + 'PATCH'] + ) diff --git a/magnum/common/service.py b/magnum/common/service.py index d60479ea23..4b168fb6d3 100644 --- a/magnum/common/service.py +++ b/magnum/common/service.py @@ -39,4 +39,6 @@ def prepare_service(argv=None): argv = [] logging.register_options(cfg.CONF) config.parse_args(argv) + config.set_config_defaults() + logging.setup(cfg.CONF, 'magnum') diff --git a/setup.cfg b/setup.cfg index 594e1f9871..7e21dc7a6f 100644 --- a/setup.cfg +++ b/setup.cfg @@ -52,6 +52,9 @@ console_scripts = oslo.config.opts = magnum = magnum.opts:list_opts +oslo.config.opts.defaults = + oslo.middleware.cors = magnum.common.config:set_cors_middleware_defaults + magnum.template_definitions = magnum_vm_atomic_k8s = magnum.conductor.template_definition:AtomicK8sTemplateDefinition magnum_vm_coreos_k8s = magnum.conductor.template_definition:CoreOSK8sTemplateDefinition