Hello community,
here is the log from the commit of package python-oslo.middleware for
openSUSE:Factory checked in at 2015-09-09 20:20:55
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/python-oslo.middleware (Old)
and /work/SRC/openSUSE:Factory/.python-oslo.middleware.new (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "python-oslo.middleware"
Changes:
--------
---
/work/SRC/openSUSE:Factory/python-oslo.middleware/python-oslo.middleware.changes
2015-08-27 08:54:50.000000000 +0200
+++
/work/SRC/openSUSE:Factory/.python-oslo.middleware.new/python-oslo.middleware.changes
2015-09-09 20:20:57.000000000 +0200
@@ -1,0 +2,28 @@
+Sat Aug 29 17:24:28 UTC 2015 - [email protected]
+
+- update to 2.8.0:
+ * Split option discovery function by middleware
+ * Updated from global requirements
+ * Updated from global requirements
+ * Fix remarks missed on #209817
+ * Added new test for CORS Simple Headers
+ * Restore backward compat of paste factory
+ * Do not dump HealthcheckResult class source
+ * Updated from global requirements
+ * Renamed latent_configuration to _latent_configuration
+ * Added latent properties to CORS middleware
+ * Declare some methods static
+ * Allow to get option from paste-deploy
+ * Remove usage of oslo.config global
+ * Imported Translations from Transifex
+ * Updated from global requirements
+ * Imported Translations from Transifex
+ * Updated from global requirements
+ * Imported Translations from Transifex
+ * Updated from global requirements
+ * Updated from global requirements
+ * Updated from global requirements
+ * Added verbose debug logging to CORS
+- Adjust Requires according to requirements.txt
+
+-------------------------------------------------------------------
Old:
----
oslo.middleware-2.4.0.tar.gz
New:
----
oslo.middleware-2.8.0.tar.gz
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Other differences:
------------------
++++++ python-oslo.middleware.spec ++++++
--- /var/tmp/diff_new_pack.ZAmsi5/_old 2015-09-09 20:20:57.000000000 +0200
+++ /var/tmp/diff_new_pack.ZAmsi5/_new 2015-09-09 20:20:57.000000000 +0200
@@ -17,7 +17,7 @@
Name: python-oslo.middleware
-Version: 2.4.0
+Version: 2.8.0
Release: 0
Summary: oslo.middleware library
License: Apache-2.0
@@ -39,7 +39,7 @@
BuildRequires: python-testtools
Requires: python-Babel >= 1.3
Requires: python-WebOb >= 1.2.3
-Requires: python-oslo.config >= 1.11.0
+Requires: python-oslo.config >= 2.3.0
Requires: python-oslo.context >= 0.2.0
Requires: python-oslo.i18n >= 1.5.0
Requires: python-six >= 1.9.0
++++++ oslo.middleware-2.4.0.tar.gz -> oslo.middleware-2.8.0.tar.gz ++++++
++++ 1674 lines of diff (skipped)
++++ retrying with extended exclude list
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' --exclude Makefile.in --exclude configure --exclude
config.guess --exclude '*.pot' --exclude mkinstalldirs --exclude aclocal.m4
--exclude config.sub --exclude depcomp --exclude install-sh --exclude ltmain.sh
old/oslo.middleware-2.4.0/AUTHORS new/oslo.middleware-2.8.0/AUTHORS
--- old/oslo.middleware-2.4.0/AUTHORS 2015-07-13 20:35:01.000000000 +0200
+++ new/oslo.middleware-2.8.0/AUTHORS 2015-08-27 18:26:29.000000000 +0200
@@ -25,6 +25,7 @@
Kamil Rykowski <[email protected]>
Mark McLoughlin <[email protected]>
Mehdi Abaakouk <[email protected]>
+Mehdi Abaakouk <[email protected]>
Michael Krotscheck <[email protected]>
Noorul Islam K M <[email protected]>
Sergey Kraynev <[email protected]>
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' --exclude Makefile.in --exclude configure --exclude
config.guess --exclude '*.pot' --exclude mkinstalldirs --exclude aclocal.m4
--exclude config.sub --exclude depcomp --exclude install-sh --exclude ltmain.sh
old/oslo.middleware-2.4.0/ChangeLog new/oslo.middleware-2.8.0/ChangeLog
--- old/oslo.middleware-2.4.0/ChangeLog 2015-07-13 20:35:01.000000000 +0200
+++ new/oslo.middleware-2.8.0/ChangeLog 2015-08-27 18:26:29.000000000 +0200
@@ -1,6 +1,48 @@
CHANGES
=======
+2.8.0
+-----
+
+* Split option discovery function by middleware
+* Updated from global requirements
+* Updated from global requirements
+
+2.7.0
+-----
+
+* Fix remarks missed on #209817
+
+2.6.1
+-----
+
+* Added new test for CORS Simple Headers
+* Restore backward compat of paste factory
+
+2.6.0
+-----
+
+* Do not dump HealthcheckResult class source
+* Updated from global requirements
+* Renamed latent_configuration to _latent_configuration
+* Added latent properties to CORS middleware
+* Declare some methods static
+* Allow to get option from paste-deploy
+* Remove usage of oslo.config global
+* Imported Translations from Transifex
+* Updated from global requirements
+
+2.5.0
+-----
+
+* Imported Translations from Transifex
+* Updated from global requirements
+* Imported Translations from Transifex
+* Updated from global requirements
+* Updated from global requirements
+* Updated from global requirements
+* Added verbose debug logging to CORS
+
2.4.0
-----
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' --exclude Makefile.in --exclude configure --exclude
config.guess --exclude '*.pot' --exclude mkinstalldirs --exclude aclocal.m4
--exclude config.sub --exclude depcomp --exclude install-sh --exclude ltmain.sh
old/oslo.middleware-2.4.0/PKG-INFO new/oslo.middleware-2.8.0/PKG-INFO
--- old/oslo.middleware-2.4.0/PKG-INFO 2015-07-13 20:35:02.000000000 +0200
+++ new/oslo.middleware-2.8.0/PKG-INFO 2015-08-27 18:26:29.000000000 +0200
@@ -1,6 +1,6 @@
Metadata-Version: 1.1
Name: oslo.middleware
-Version: 2.4.0
+Version: 2.8.0
Summary: Oslo Middleware library
Home-page: http://launchpad.net/oslo
Author: OpenStack
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' --exclude Makefile.in --exclude configure --exclude
config.guess --exclude '*.pot' --exclude mkinstalldirs --exclude aclocal.m4
--exclude config.sub --exclude depcomp --exclude install-sh --exclude ltmain.sh
old/oslo.middleware-2.4.0/doc/source/api.rst
new/oslo.middleware-2.8.0/doc/source/api.rst
--- old/oslo.middleware-2.4.0/doc/source/api.rst 2015-07-13
20:34:39.000000000 +0200
+++ new/oslo.middleware-2.8.0/doc/source/api.rst 2015-08-27
18:26:00.000000000 +0200
@@ -4,3 +4,16 @@
.. automodule:: oslo_middleware
:members:
+
+Configuration Options
+=====================
+
+RequestBodySizeLimiter
+~~~~~~~~~~~~~~~~~~~~~~
+
+.. show-options:: oslo.middleware.sizelimit
+
+SSLMiddleware
+~~~~~~~~~~~~~
+
+.. show-options:: oslo.middleware.ssl
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' --exclude Makefile.in --exclude configure --exclude
config.guess --exclude '*.pot' --exclude mkinstalldirs --exclude aclocal.m4
--exclude config.sub --exclude depcomp --exclude install-sh --exclude ltmain.sh
old/oslo.middleware-2.4.0/doc/source/conf.py
new/oslo.middleware-2.8.0/doc/source/conf.py
--- old/oslo.middleware-2.4.0/doc/source/conf.py 2015-07-13
20:34:39.000000000 +0200
+++ new/oslo.middleware-2.8.0/doc/source/conf.py 2015-08-27
18:26:00.000000000 +0200
@@ -23,7 +23,8 @@
extensions = [
'sphinx.ext.autodoc',
#'sphinx.ext.intersphinx',
- 'oslosphinx'
+ 'oslosphinx',
+ 'oslo_config.sphinxext',
]
# autodoc generation is a bit aggressive and a nuisance when doing heavy
@@ -72,4 +73,4 @@
]
# Example configuration for intersphinx: refer to the Python standard library.
-#intersphinx_mapping = {'http://docs.python.org/': None}
\ No newline at end of file
+#intersphinx_mapping = {'http://docs.python.org/': None}
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' --exclude Makefile.in --exclude configure --exclude
config.guess --exclude '*.pot' --exclude mkinstalldirs --exclude aclocal.m4
--exclude config.sub --exclude depcomp --exclude install-sh --exclude ltmain.sh
old/oslo.middleware-2.4.0/doc/source/cors.rst
new/oslo.middleware-2.8.0/doc/source/cors.rst
--- old/oslo.middleware-2.4.0/doc/source/cors.rst 2015-07-13
20:34:39.000000000 +0200
+++ new/oslo.middleware-2.8.0/doc/source/cors.rst 2015-08-27
18:26:00.000000000 +0200
@@ -78,6 +78,17 @@
allowed_origin=*
allow_methods=GET
+If your software requires specific headers or methods for proper operation, you
+may include these as latent properties. These will be evaluated in addition
+to any found in configuration::
+
+ from oslo_middleware import cors
+
+ app = cors.CORS(your_wsgi_application)
+ app.set_latent(allow_headers=['X-System-Header'],
+ expose_headers=['X-System-Header'],
+ allow_methods=['GET','PATCH'])
+
Configuration for pastedeploy
-----------------------------
@@ -94,6 +105,11 @@
expose_headers=Content-Type,Cache-Control,Content-Language,Expires,Last-Modified,Pragma,X-Custom-Header
+Configuration Options
+---------------------
+
+.. show-options:: oslo.middleware.cors
+
Module Documentation
--------------------
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' --exclude Makefile.in --exclude configure --exclude
config.guess --exclude '*.pot' --exclude mkinstalldirs --exclude aclocal.m4
--exclude config.sub --exclude depcomp --exclude install-sh --exclude ltmain.sh
old/oslo.middleware-2.4.0/doc/source/healthcheck_plugins.rst
new/oslo.middleware-2.8.0/doc/source/healthcheck_plugins.rst
--- old/oslo.middleware-2.4.0/doc/source/healthcheck_plugins.rst
2015-07-13 20:34:39.000000000 +0200
+++ new/oslo.middleware-2.8.0/doc/source/healthcheck_plugins.rst
2015-08-27 18:26:00.000000000 +0200
@@ -2,5 +2,8 @@
Healthcheck middleware plugins
================================
+.. automodule:: oslo_middleware.healthcheck
+ :members:
+
.. automodule:: oslo_middleware.healthcheck.disable_by_file
:members:
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' --exclude Makefile.in --exclude configure --exclude
config.guess --exclude '*.pot' --exclude mkinstalldirs --exclude aclocal.m4
--exclude config.sub --exclude depcomp --exclude install-sh --exclude ltmain.sh
old/oslo.middleware-2.4.0/doc/source/index.rst
new/oslo.middleware-2.8.0/doc/source/index.rst
--- old/oslo.middleware-2.4.0/doc/source/index.rst 2015-07-13
20:34:39.000000000 +0200
+++ new/oslo.middleware-2.8.0/doc/source/index.rst 2015-08-27
18:26:00.000000000 +0200
@@ -10,4 +10,5 @@
api
healthcheck_plugins
cors
+ oslo_config
contributing
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' --exclude Makefile.in --exclude configure --exclude
config.guess --exclude '*.pot' --exclude mkinstalldirs --exclude aclocal.m4
--exclude config.sub --exclude depcomp --exclude install-sh --exclude ltmain.sh
old/oslo.middleware-2.4.0/doc/source/oslo_config.rst
new/oslo.middleware-2.8.0/doc/source/oslo_config.rst
--- old/oslo.middleware-2.4.0/doc/source/oslo_config.rst 1970-01-01
01:00:00.000000000 +0100
+++ new/oslo.middleware-2.8.0/doc/source/oslo_config.rst 2015-08-27
18:26:00.000000000 +0200
@@ -0,0 +1,53 @@
+=============================
+Middlewares and configuration
+=============================
+
+Middlewares can be configured in multiple fashion depending of the
+application needs. Here is some use-cases:
+
+Configuration from the application
+----------------------------------
+
+The application code will looks like::
+
+ from oslo_middleware import sizelimit
+ from oslo_config import cfg
+
+ conf = cfg.ConfigOpts()
+ app = sizelimit.RequestBodySizeLimiter(your_wsgi_application, conf)
+
+
+Configuration with paste-deploy and the oslo.config
+---------------------------------------------------
+
+The paste filter (in /etc/my_app/api-paste.ini) will looks like::
+
+ [filter:sizelimit]
+ paste.filter_factory =
oslo_middleware.sizelimit:RequestBodySizeLimiter.factory
+ # In case of the application doesn't use the global oslo.config
+ # object. The middleware must known the app name to load
+ # the application configuration, by setting this:
+ # oslo_config_project = my_app
+
+The oslo.config file of the application (eg: /etc/my_app/my_app.conf) will
looks like::
+
+ [oslo_middleware]
+ max_request_body_size=1000
+
+
+Configuration with pastedeploy only
+-----------------------------------
+
+The paste filter (in /etc/my_app/api-paste.ini) will looks like::
+
+ [filter:sizelimit]
+ paste.filter_factory =
oslo_middleware.sizelimit:RequestBodySizeLimiter.factory
+ max_request_body_size=1000
+
+This will override any configuration done via oslo.config
+
+
+.. note::
+
+ healtcheck middleware does not yet use oslo.config, see
:doc:`healthcheck_plugins`
+
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' --exclude Makefile.in --exclude configure --exclude
config.guess --exclude '*.pot' --exclude mkinstalldirs --exclude aclocal.m4
--exclude config.sub --exclude depcomp --exclude install-sh --exclude ltmain.sh
old/oslo.middleware-2.4.0/oslo.middleware/locale/de/LC_MESSAGES/oslo.middleware-log-error.po
new/oslo.middleware-2.8.0/oslo.middleware/locale/de/LC_MESSAGES/oslo.middleware-log-error.po
---
old/oslo.middleware-2.4.0/oslo.middleware/locale/de/LC_MESSAGES/oslo.middleware-log-error.po
2015-07-13 20:34:39.000000000 +0200
+++
new/oslo.middleware-2.8.0/oslo.middleware/locale/de/LC_MESSAGES/oslo.middleware-log-error.po
2015-08-27 18:26:00.000000000 +0200
@@ -9,16 +9,16 @@
msgstr ""
"Project-Id-Version: oslo.middleware\n"
"Report-Msgid-Bugs-To: EMAIL@ADDRESS\n"
-"POT-Creation-Date: 2015-07-09 06:02+0000\n"
+"POT-Creation-Date: 2015-08-04 06:15+0000\n"
"PO-Revision-Date: 2014-09-07 20:10+0000\n"
"Last-Translator: Andreas Jaeger <[email protected]>\n"
-"Language-Team: German (http://www.transifex.com/p/oslomiddleware/language/"
-"de/)\n"
+"Language-Team: German (http://www.transifex.com/openstack/oslomiddleware/"
+"language/de/)\n"
"Language: de\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
-"Generated-By: Babel 1.3\n"
+"Generated-By: Babel 2.0\n"
"Plural-Forms: nplurals=2; plural=(n != 1);\n"
#, python-format
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' --exclude Makefile.in --exclude configure --exclude
config.guess --exclude '*.pot' --exclude mkinstalldirs --exclude aclocal.m4
--exclude config.sub --exclude depcomp --exclude install-sh --exclude ltmain.sh
old/oslo.middleware-2.4.0/oslo.middleware/locale/de/LC_MESSAGES/oslo.middleware.po
new/oslo.middleware-2.8.0/oslo.middleware/locale/de/LC_MESSAGES/oslo.middleware.po
---
old/oslo.middleware-2.4.0/oslo.middleware/locale/de/LC_MESSAGES/oslo.middleware.po
2015-07-13 20:34:39.000000000 +0200
+++
new/oslo.middleware-2.8.0/oslo.middleware/locale/de/LC_MESSAGES/oslo.middleware.po
2015-08-27 18:26:00.000000000 +0200
@@ -9,16 +9,16 @@
msgstr ""
"Project-Id-Version: oslo.middleware\n"
"Report-Msgid-Bugs-To: EMAIL@ADDRESS\n"
-"POT-Creation-Date: 2015-07-09 06:02+0000\n"
+"POT-Creation-Date: 2015-08-04 06:15+0000\n"
"PO-Revision-Date: 2014-09-07 20:09+0000\n"
"Last-Translator: Andreas Jaeger <[email protected]>\n"
-"Language-Team: German (http://www.transifex.com/p/oslomiddleware/language/"
-"de/)\n"
+"Language-Team: German (http://www.transifex.com/openstack/oslomiddleware/"
+"language/de/)\n"
"Plural-Forms: nplurals=2; plural=(n != 1)\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=utf-8\n"
"Content-Transfer-Encoding: 8bit\n"
-"Generated-By: Babel 1.3\n"
+"Generated-By: Babel 2.0\n"
msgid "Request is too large."
msgstr "Die Anfrage ist zu groß."
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' --exclude Makefile.in --exclude configure --exclude
config.guess --exclude '*.pot' --exclude mkinstalldirs --exclude aclocal.m4
--exclude config.sub --exclude depcomp --exclude install-sh --exclude ltmain.sh
old/oslo.middleware-2.4.0/oslo.middleware/locale/en_GB/LC_MESSAGES/oslo.middleware-log-error.po
new/oslo.middleware-2.8.0/oslo.middleware/locale/en_GB/LC_MESSAGES/oslo.middleware-log-error.po
---
old/oslo.middleware-2.4.0/oslo.middleware/locale/en_GB/LC_MESSAGES/oslo.middleware-log-error.po
2015-07-13 20:34:39.000000000 +0200
+++
new/oslo.middleware-2.8.0/oslo.middleware/locale/en_GB/LC_MESSAGES/oslo.middleware-log-error.po
2015-08-27 18:26:00.000000000 +0200
@@ -9,16 +9,16 @@
msgstr ""
"Project-Id-Version: oslo.middleware\n"
"Report-Msgid-Bugs-To: EMAIL@ADDRESS\n"
-"POT-Creation-Date: 2015-07-09 06:02+0000\n"
+"POT-Creation-Date: 2015-08-04 06:15+0000\n"
"PO-Revision-Date: 2014-11-03 23:03+0000\n"
"Last-Translator: Andi Chandler <[email protected]>\n"
-"Language-Team: English (United Kingdom) (http://www.transifex.com/p/"
+"Language-Team: English (United Kingdom) (http://www.transifex.com/openstack/"
"oslomiddleware/language/en_GB/)\n"
"Language: en_GB\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
-"Generated-By: Babel 1.3\n"
+"Generated-By: Babel 2.0\n"
"Plural-Forms: nplurals=2; plural=(n != 1);\n"
#, python-format
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' --exclude Makefile.in --exclude configure --exclude
config.guess --exclude '*.pot' --exclude mkinstalldirs --exclude aclocal.m4
--exclude config.sub --exclude depcomp --exclude install-sh --exclude ltmain.sh
old/oslo.middleware-2.4.0/oslo.middleware/locale/en_GB/LC_MESSAGES/oslo.middleware.po
new/oslo.middleware-2.8.0/oslo.middleware/locale/en_GB/LC_MESSAGES/oslo.middleware.po
---
old/oslo.middleware-2.4.0/oslo.middleware/locale/en_GB/LC_MESSAGES/oslo.middleware.po
2015-07-13 20:34:39.000000000 +0200
+++
new/oslo.middleware-2.8.0/oslo.middleware/locale/en_GB/LC_MESSAGES/oslo.middleware.po
2015-08-27 18:26:00.000000000 +0200
@@ -9,16 +9,16 @@
msgstr ""
"Project-Id-Version: oslo.middleware\n"
"Report-Msgid-Bugs-To: EMAIL@ADDRESS\n"
-"POT-Creation-Date: 2015-07-09 06:02+0000\n"
+"POT-Creation-Date: 2015-08-04 06:15+0000\n"
"PO-Revision-Date: 2014-11-03 23:03+0000\n"
"Last-Translator: Andi Chandler <[email protected]>\n"
-"Language-Team: English (United Kingdom) (http://www.transifex.com/p/"
+"Language-Team: English (United Kingdom) (http://www.transifex.com/openstack/"
"oslomiddleware/language/en_GB/)\n"
"Plural-Forms: nplurals=2; plural=(n != 1)\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=utf-8\n"
"Content-Transfer-Encoding: 8bit\n"
-"Generated-By: Babel 1.3\n"
+"Generated-By: Babel 2.0\n"
msgid "Request is too large."
msgstr "Request is too large."
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' --exclude Makefile.in --exclude configure --exclude
config.guess --exclude '*.pot' --exclude mkinstalldirs --exclude aclocal.m4
--exclude config.sub --exclude depcomp --exclude install-sh --exclude ltmain.sh
old/oslo.middleware-2.4.0/oslo.middleware/locale/fr/LC_MESSAGES/oslo.middleware-log-error.po
new/oslo.middleware-2.8.0/oslo.middleware/locale/fr/LC_MESSAGES/oslo.middleware-log-error.po
---
old/oslo.middleware-2.4.0/oslo.middleware/locale/fr/LC_MESSAGES/oslo.middleware-log-error.po
2015-07-13 20:34:39.000000000 +0200
+++
new/oslo.middleware-2.8.0/oslo.middleware/locale/fr/LC_MESSAGES/oslo.middleware-log-error.po
2015-08-27 18:26:00.000000000 +0200
@@ -9,16 +9,16 @@
msgstr ""
"Project-Id-Version: oslo.middleware\n"
"Report-Msgid-Bugs-To: EMAIL@ADDRESS\n"
-"POT-Creation-Date: 2015-07-09 06:02+0000\n"
+"POT-Creation-Date: 2015-08-04 06:15+0000\n"
"PO-Revision-Date: 2014-09-25 09:01+0000\n"
"Last-Translator: Maxime COQUEREL <[email protected]>\n"
-"Language-Team: French (http://www.transifex.com/p/oslomiddleware/language/"
-"fr/)\n"
+"Language-Team: French (http://www.transifex.com/openstack/oslomiddleware/"
+"language/fr/)\n"
"Language: fr\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
-"Generated-By: Babel 1.3\n"
+"Generated-By: Babel 2.0\n"
"Plural-Forms: nplurals=2; plural=(n > 1);\n"
#, python-format
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' --exclude Makefile.in --exclude configure --exclude
config.guess --exclude '*.pot' --exclude mkinstalldirs --exclude aclocal.m4
--exclude config.sub --exclude depcomp --exclude install-sh --exclude ltmain.sh
old/oslo.middleware-2.4.0/oslo.middleware/locale/fr/LC_MESSAGES/oslo.middleware.po
new/oslo.middleware-2.8.0/oslo.middleware/locale/fr/LC_MESSAGES/oslo.middleware.po
---
old/oslo.middleware-2.4.0/oslo.middleware/locale/fr/LC_MESSAGES/oslo.middleware.po
2015-07-13 20:34:39.000000000 +0200
+++
new/oslo.middleware-2.8.0/oslo.middleware/locale/fr/LC_MESSAGES/oslo.middleware.po
2015-08-27 18:26:00.000000000 +0200
@@ -9,16 +9,16 @@
msgstr ""
"Project-Id-Version: oslo.middleware\n"
"Report-Msgid-Bugs-To: EMAIL@ADDRESS\n"
-"POT-Creation-Date: 2015-07-09 06:02+0000\n"
+"POT-Creation-Date: 2015-08-04 06:15+0000\n"
"PO-Revision-Date: 2014-09-17 21:06+0000\n"
"Last-Translator: Maxime COQUEREL <[email protected]>\n"
-"Language-Team: French (http://www.transifex.com/p/oslomiddleware/language/"
-"fr/)\n"
+"Language-Team: French (http://www.transifex.com/openstack/oslomiddleware/"
+"language/fr/)\n"
"Plural-Forms: nplurals=2; plural=(n > 1)\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=utf-8\n"
"Content-Transfer-Encoding: 8bit\n"
-"Generated-By: Babel 1.3\n"
+"Generated-By: Babel 2.0\n"
msgid "Request is too large."
msgstr "Demande trop importante."
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' --exclude Makefile.in --exclude configure --exclude
config.guess --exclude '*.pot' --exclude mkinstalldirs --exclude aclocal.m4
--exclude config.sub --exclude depcomp --exclude install-sh --exclude ltmain.sh
old/oslo.middleware-2.4.0/oslo.middleware.egg-info/PKG-INFO
new/oslo.middleware-2.8.0/oslo.middleware.egg-info/PKG-INFO
--- old/oslo.middleware-2.4.0/oslo.middleware.egg-info/PKG-INFO 2015-07-13
20:35:01.000000000 +0200
+++ new/oslo.middleware-2.8.0/oslo.middleware.egg-info/PKG-INFO 2015-08-27
18:26:29.000000000 +0200
@@ -1,6 +1,6 @@
Metadata-Version: 1.1
Name: oslo.middleware
-Version: 2.4.0
+Version: 2.8.0
Summary: Oslo Middleware library
Home-page: http://launchpad.net/oslo
Author: OpenStack
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' --exclude Makefile.in --exclude configure --exclude
config.guess --exclude '*.pot' --exclude mkinstalldirs --exclude aclocal.m4
--exclude config.sub --exclude depcomp --exclude install-sh --exclude ltmain.sh
old/oslo.middleware-2.4.0/oslo.middleware.egg-info/SOURCES.txt
new/oslo.middleware-2.8.0/oslo.middleware.egg-info/SOURCES.txt
--- old/oslo.middleware-2.4.0/oslo.middleware.egg-info/SOURCES.txt
2015-07-13 20:35:02.000000000 +0200
+++ new/oslo.middleware-2.8.0/oslo.middleware.egg-info/SOURCES.txt
2015-08-27 18:26:29.000000000 +0200
@@ -22,6 +22,7 @@
doc/source/healthcheck_plugins.rst
doc/source/index.rst
doc/source/installation.rst
+doc/source/oslo_config.rst
oslo/__init__.py
oslo.middleware.egg-info/PKG-INFO
oslo.middleware.egg-info/SOURCES.txt
@@ -70,6 +71,7 @@
oslo_middleware/tests/test_correlation_id.py
oslo_middleware/tests/test_cors.py
oslo_middleware/tests/test_healthcheck.py
+oslo_middleware/tests/test_opts.py
oslo_middleware/tests/test_request_id.py
oslo_middleware/tests/test_sizelimit.py
oslo_middleware/tests/test_ssl.py
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' --exclude Makefile.in --exclude configure --exclude
config.guess --exclude '*.pot' --exclude mkinstalldirs --exclude aclocal.m4
--exclude config.sub --exclude depcomp --exclude install-sh --exclude ltmain.sh
old/oslo.middleware-2.4.0/oslo.middleware.egg-info/entry_points.txt
new/oslo.middleware-2.8.0/oslo.middleware.egg-info/entry_points.txt
--- old/oslo.middleware-2.4.0/oslo.middleware.egg-info/entry_points.txt
2015-07-13 20:35:01.000000000 +0200
+++ new/oslo.middleware-2.8.0/oslo.middleware.egg-info/entry_points.txt
2015-08-27 18:26:29.000000000 +0200
@@ -1,5 +1,8 @@
[oslo.config.opts]
oslo.middleware = oslo_middleware.opts:list_opts
+oslo.middleware.cors = oslo_middleware.opts:list_opts_cors
+oslo.middleware.sizelimit = oslo_middleware.opts:list_opts_sizelimit
+oslo.middleware.ssl = oslo_middleware.opts:list_opts_ssl
[oslo.middleware.healthcheck]
disable_by_file =
oslo_middleware.healthcheck.disable_by_file:DisableByFileHealthcheck
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' --exclude Makefile.in --exclude configure --exclude
config.guess --exclude '*.pot' --exclude mkinstalldirs --exclude aclocal.m4
--exclude config.sub --exclude depcomp --exclude install-sh --exclude ltmain.sh
old/oslo.middleware-2.4.0/oslo.middleware.egg-info/pbr.json
new/oslo.middleware-2.8.0/oslo.middleware.egg-info/pbr.json
--- old/oslo.middleware-2.4.0/oslo.middleware.egg-info/pbr.json 2015-07-13
20:35:01.000000000 +0200
+++ new/oslo.middleware-2.8.0/oslo.middleware.egg-info/pbr.json 2015-08-27
18:26:29.000000000 +0200
@@ -1 +1 @@
-{"git_version": "393f799", "is_release": true}
\ No newline at end of file
+{"git_version": "b73aa5c", "is_release": true}
\ No newline at end of file
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' --exclude Makefile.in --exclude configure --exclude
config.guess --exclude '*.pot' --exclude mkinstalldirs --exclude aclocal.m4
--exclude config.sub --exclude depcomp --exclude install-sh --exclude ltmain.sh
old/oslo.middleware-2.4.0/oslo.middleware.egg-info/requires.txt
new/oslo.middleware-2.8.0/oslo.middleware.egg-info/requires.txt
--- old/oslo.middleware-2.4.0/oslo.middleware.egg-info/requires.txt
2015-07-13 20:35:01.000000000 +0200
+++ new/oslo.middleware-2.8.0/oslo.middleware.egg-info/requires.txt
2015-08-27 18:26:29.000000000 +0200
@@ -1,8 +1,8 @@
-pbr<2.0,>=0.11
+pbr<2.0,>=1.6
Babel>=1.3
-oslo.config>=1.11.0 # Apache-2.0
-oslo.context>=0.2.0 # Apache-2.0
-oslo.i18n>=1.5.0 # Apache-2.0
+oslo.config>=2.3.0
+oslo.context>=0.2.0
+oslo.i18n>=1.5.0
six>=1.9.0
-stevedore>=1.5.0 # Apache-2.0
+stevedore>=1.5.0
WebOb>=1.2.3
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' --exclude Makefile.in --exclude configure --exclude
config.guess --exclude '*.pot' --exclude mkinstalldirs --exclude aclocal.m4
--exclude config.sub --exclude depcomp --exclude install-sh --exclude ltmain.sh
old/oslo.middleware-2.4.0/oslo_middleware/base.py
new/oslo.middleware-2.8.0/oslo_middleware/base.py
--- old/oslo.middleware-2.4.0/oslo_middleware/base.py 2015-07-13
20:34:39.000000000 +0200
+++ new/oslo.middleware-2.8.0/oslo_middleware/base.py 2015-08-27
18:26:00.000000000 +0200
@@ -18,8 +18,10 @@
from inspect import getargspec
import webob.dec
+from oslo_config import cfg
-class Middleware(object):
+
+class ConfigurableMiddleware(object):
"""Base WSGI middleware wrapper.
These classes require an application to be initialized that will be called
@@ -29,13 +31,60 @@
@classmethod
def factory(cls, global_conf, **local_conf):
- """Factory method for paste.deploy."""
- return cls
+ """Factory method for paste.deploy.
+
+ :param global_conf: dict of options for all middlewares
+ (usually the [DEFAULT] section of the paste deploy
+ configuration file)
+ :param local_conf: options dedicated to this middleware
+ (usually the option defined in the middleware
+ section of the paste deploy configuration file)
+ """
+ conf = global_conf.copy() if global_conf else {}
+ conf.update(local_conf)
- def __init__(self, application):
+ def middleware_filter(app):
+ return cls(app, conf)
+
+ return middleware_filter
+
+ def __init__(self, application, conf=None):
+ """Base middleware constructor
+
+ :param conf: a dict of options or a cfg.ConfigOpts object
+ """
self.application = application
- def process_request(self, req):
+ # NOTE(sileht): If the configuration come from oslo.config
+ # just use it.
+ if isinstance(conf, cfg.ConfigOpts):
+ self.conf = {}
+ self.oslo_conf = conf
+ else:
+ self.conf = conf or {}
+ if "oslo_config_project" in self.conf:
+ if 'oslo_config_file' in self.conf:
+ default_config_files = [self.conf['oslo_config_file']]
+ else:
+ default_config_files = None
+ self.oslo_conf = cfg.ConfigOpts()
+ self.oslo_conf([], project=self.conf['oslo_config_project'],
+ default_config_files=default_config_files,
+ validate_default_values=True)
+
+ else:
+ # Fallback to global object
+ self.oslo_conf = cfg.CONF
+
+ def _conf_get(self, key, group="oslo_middleware"):
+ if key in self.conf:
+ # Validate value type
+ self.oslo_conf.set_override(key, self.conf[key], group=group,
+ enforce_type=True)
+ return getattr(getattr(self.oslo_conf, group), key)
+
+ @staticmethod
+ def process_request(req):
"""Called on each request.
If this returns None, the next application down the stack will be
@@ -44,7 +93,8 @@
"""
return None
- def process_response(self, response, request=None):
+ @staticmethod
+ def process_response(response, request=None):
"""Do whatever you'd like to the response."""
return response
@@ -59,3 +109,16 @@
if 'request' in args:
return self.process_response(response, request=req)
return self.process_response(response)
+
+
+class Middleware(ConfigurableMiddleware):
+ """Legacy base WSGI middleware wrapper.
+
+ Legacy interface that doesn't pass configuration options
+ to the middleware when it's loaded via paste.deploy.
+ """
+
+ @classmethod
+ def factory(cls, global_conf, **local_conf):
+ """Factory method for paste.deploy."""
+ return cls
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' --exclude Makefile.in --exclude configure --exclude
config.guess --exclude '*.pot' --exclude mkinstalldirs --exclude aclocal.m4
--exclude config.sub --exclude depcomp --exclude install-sh --exclude ltmain.sh
old/oslo.middleware-2.4.0/oslo_middleware/catch_errors.py
new/oslo.middleware-2.8.0/oslo_middleware/catch_errors.py
--- old/oslo.middleware-2.4.0/oslo_middleware/catch_errors.py 2015-07-13
20:34:39.000000000 +0200
+++ new/oslo.middleware-2.8.0/oslo_middleware/catch_errors.py 2015-08-27
18:26:00.000000000 +0200
@@ -25,7 +25,7 @@
LOG = logging.getLogger(__name__)
-class CatchErrors(base.Middleware):
+class CatchErrors(base.ConfigurableMiddleware):
"""Middleware that provides high-level error handling.
It catches all exceptions from subsequent applications in WSGI pipeline
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' --exclude Makefile.in --exclude configure --exclude
config.guess --exclude '*.pot' --exclude mkinstalldirs --exclude aclocal.m4
--exclude config.sub --exclude depcomp --exclude install-sh --exclude ltmain.sh
old/oslo.middleware-2.4.0/oslo_middleware/correlation_id.py
new/oslo.middleware-2.8.0/oslo_middleware/correlation_id.py
--- old/oslo.middleware-2.4.0/oslo_middleware/correlation_id.py 2015-07-13
20:34:39.000000000 +0200
+++ new/oslo.middleware-2.8.0/oslo_middleware/correlation_id.py 2015-08-27
18:26:00.000000000 +0200
@@ -18,7 +18,7 @@
from oslo_middleware import base
-class CorrelationId(base.Middleware):
+class CorrelationId(base.ConfigurableMiddleware):
"Middleware that attaches a correlation id to WSGI request"
def process_request(self, req):
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' --exclude Makefile.in --exclude configure --exclude
config.guess --exclude '*.pot' --exclude mkinstalldirs --exclude aclocal.m4
--exclude config.sub --exclude depcomp --exclude install-sh --exclude ltmain.sh
old/oslo.middleware-2.4.0/oslo_middleware/cors.py
new/oslo.middleware-2.8.0/oslo_middleware/cors.py
--- old/oslo.middleware-2.4.0/oslo_middleware/cors.py 2015-07-13
20:34:39.000000000 +0200
+++ new/oslo.middleware-2.8.0/oslo_middleware/cors.py 2015-08-27
18:26:00.000000000 +0200
@@ -22,7 +22,6 @@
import webob.exc
import webob.response
-
LOG = logging.getLogger(__name__)
CORS_OPTS = [
@@ -54,39 +53,7 @@
]
-def filter_factory(global_conf,
- allowed_origin,
- allow_credentials=True,
- expose_headers=None,
- max_age=None,
- allow_methods=None,
- allow_headers=None):
- '''Factory to support paste.deploy
-
- :param global_conf: The paste.ini global configuration object (not used).
- :param allowed_origin: Protocol, host, and port for the allowed origin.
- :param allow_credentials: Whether to permit credentials.
- :param expose_headers: A list of headers to expose.
- :param max_age: Maximum cache duration.
- :param allow_methods: List of HTTP methods to permit.
- :param allow_headers: List of HTTP headers to permit from the client.
- :return:
- '''
-
- def filter(app):
- cors_app = CORS(app)
- cors_app.add_origin(allowed_origin=allowed_origin,
- allow_credentials=allow_credentials,
- expose_headers=expose_headers,
- max_age=max_age,
- allow_methods=allow_methods,
- allow_headers=allow_headers)
- return cors_app
-
- return filter
-
-
-class CORS(base.Middleware):
+class CORS(base.ConfigurableMiddleware):
"""CORS Middleware.
This middleware allows a WSGI app to serve CORS headers for multiple
@@ -96,6 +63,8 @@
"""
simple_headers = [
+ 'Accept',
+ 'Accept-Language',
'Content-Type',
'Cache-Control',
'Content-Language',
@@ -104,22 +73,48 @@
'Pragma'
]
- def __init__(self, application, conf=None):
- super(CORS, self).__init__(application)
-
+ def __init__(self, application, *args, **kwargs):
+ super(CORS, self).__init__(application, *args, **kwargs)
# Begin constructing our configuration hash.
self.allowed_origins = {}
+ self._init_conf()
- # Sanity check. Do we have an oslo.config? If so, load it. Else, assume
- # that we'll use add_config.
- if conf:
- self._init_from_oslo(conf)
+ @classmethod
+ def factory(cls, global_conf, allowed_origin, **local_conf):
+ """factory method for paste.deploy
+
+ allowed_origin: Protocol, host, and port for the allowed origin.
+ allow_credentials: Whether to permit credentials.
+ expose_headers: A list of headers to expose.
+ max_age: Maximum cache duration.
+ allow_methods: List of HTTP methods to permit.
+ allow_headers: List of HTTP headers to permit from the client.
+ """
+
+ # Ensures allowed_origin config exists
+ return super(CORS, cls).factory(global_conf,
+ allowed_origin=allowed_origin,
+ **local_conf)
- def _init_from_oslo(self, conf):
+ def _init_conf(self):
'''Initialize this middleware from an oslo.config instance.'''
+ # Set up a location for our latent configuration options
+ self._latent_configuration = {
+ 'allow_headers': [],
+ 'expose_headers': [],
+ 'methods': []
+ }
+
# First, check the configuration and register global options.
- conf.register_opts(CORS_OPTS, 'cors')
+ self.oslo_conf.register_opts(CORS_OPTS, 'cors')
+
+ allowed_origin = self._conf_get('allowed_origin', 'cors')
+ allow_credentials = self._conf_get('allow_credentials', 'cors')
+ expose_headers = self._conf_get('expose_headers', 'cors')
+ max_age = self._conf_get('max_age', 'cors')
+ allow_methods = self._conf_get('allow_methods', 'cors')
+ allow_headers = self._conf_get('allow_headers', 'cors')
# Clone our original CORS_OPTS, and set the defaults to whatever is
# set in the global conf instance. This is done explicitly (instead
@@ -127,24 +122,29 @@
# allowed_origin.
subgroup_opts = copy.deepcopy(CORS_OPTS)
cfg.set_defaults(subgroup_opts,
- allow_credentials=conf.cors.allow_credentials,
- expose_headers=conf.cors.expose_headers,
- max_age=conf.cors.max_age,
- allow_methods=conf.cors.allow_methods,
- allow_headers=conf.cors.allow_headers)
+ allow_credentials=allow_credentials,
+ expose_headers=expose_headers,
+ max_age=max_age,
+ allow_methods=allow_methods,
+ allow_headers=allow_headers)
# If the default configuration contains an allowed_origin, don't
# forget to register that.
- if conf.cors.allowed_origin:
- self.add_origin(**conf.cors)
+ if allowed_origin:
+ self.add_origin(allowed_origin=allowed_origin,
+ allow_credentials=allow_credentials,
+ expose_headers=expose_headers,
+ max_age=max_age,
+ allow_methods=allow_methods,
+ allow_headers=allow_headers)
# Iterate through all the loaded config sections, looking for ones
# prefixed with 'cors.'
- for section in conf.list_all_sections():
+ for section in self.oslo_conf.list_all_sections():
if section.startswith('cors.'):
# Register with the preconstructed defaults
- conf.register_opts(subgroup_opts, section)
- self.add_origin(**conf[section])
+ self.oslo_conf.register_opts(subgroup_opts, section)
+ self.add_origin(**self.oslo_conf[section])
def add_origin(self, allowed_origin, allow_credentials=True,
expose_headers=None, max_age=None, allow_methods=None,
@@ -173,6 +173,39 @@
'allow_headers': allow_headers
}
+ def set_latent(self, allow_headers=None, allow_methods=None,
+ expose_headers=None):
+ '''Add a new latent property for this middleware.
+
+ Latent properties are those values which a system requires for
+ operation. API-specific headers, for example, may be added by an
+ engineer so that they ship with the codebase, and thus do not require
+ extra documentation or passing of institutional knowledge.
+
+ :param allow_headers: HTTP headers permitted in client requests.
+ :param allow_methods: HTTP methods permitted in client requests.
+ :param expose_headers: HTTP Headers exposed to clients.
+ '''
+
+ if allow_headers:
+ if isinstance(allow_headers, list):
+ self._latent_configuration['allow_headers'] = allow_headers
+ else:
+ raise TypeError("allow_headers must be a list or None.")
+
+ if expose_headers:
+ if isinstance(expose_headers, list):
+ self._latent_configuration['expose_headers'] = expose_headers
+ else:
+ raise TypeError("expose_headers must be a list or None.")
+
+ if allow_methods:
+ if isinstance(allow_methods, list):
+ self._latent_configuration['methods'] = allow_methods
+ else:
+ raise TypeError("allow_methods parameter must be a list or"
+ " None.")
+
def process_response(self, response, request=None):
'''Check for CORS headers, and decorate if necessary.
@@ -201,7 +234,8 @@
# Finally, return the response.
return response
- def _split_header_values(self, request, header_name):
+ @staticmethod
+ def _split_header_values(request, header_name):
"""Convert a comma-separated header value into a list of values."""
values = []
if header_name in request.headers:
@@ -241,6 +275,8 @@
# If there's no request method, exit. (Section 6.2.3)
if 'Access-Control-Request-Method' not in request.headers:
+ LOG.debug('CORS request does not contain '
+ 'Access-Control-Request-Method header.')
return response
request_method = request.headers['Access-Control-Request-Method']
@@ -254,17 +290,26 @@
return response
# Compare request method to permitted methods (Section 6.2.5)
- if request_method not in cors_config['allow_methods']:
+ permitted_methods = (
+ cors_config['allow_methods'] +
+ self._latent_configuration['methods']
+ )
+ if request_method not in permitted_methods:
+ LOG.debug('Request method \'%s\' not in permitted list: %s'
+ % (request_method, permitted_methods))
return response
# Compare request headers to permitted headers, case-insensitively.
# (Section 6.2.6)
+ permitted_headers = [header.upper() for header in
+ (cors_config['allow_headers'] +
+ self.simple_headers +
+ self._latent_configuration['allow_headers'])]
for requested_header in request_headers:
upper_header = requested_header.upper()
- permitted_headers = (cors_config['allow_headers'] +
- self.simple_headers)
- if upper_header not in (header.upper() for header in
- permitted_headers):
+ if upper_header not in permitted_headers:
+ LOG.debug('Request header \'%s\' not in permitted list: %s'
+ % (requested_header, permitted_headers))
return response
# Set the default origin permission headers. (Sections 6.2.7, 6.4)
@@ -320,4 +365,8 @@
# Attach the exposed headers and exit. (Section 6.1.4)
if cors_config['expose_headers']:
response.headers['Access-Control-Expose-Headers'] = \
- ','.join(cors_config['expose_headers'])
+ ','.join(cors_config['expose_headers'] +
+ self._latent_configuration['expose_headers'])
+
+# NOTE(sileht): Shortcut for backwards compatibility
+filter_factory = CORS.factory
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' --exclude Makefile.in --exclude configure --exclude
config.guess --exclude '*.pot' --exclude mkinstalldirs --exclude aclocal.m4
--exclude config.sub --exclude depcomp --exclude install-sh --exclude ltmain.sh
old/oslo.middleware-2.4.0/oslo_middleware/debug.py
new/oslo.middleware-2.8.0/oslo_middleware/debug.py
--- old/oslo.middleware-2.4.0/oslo_middleware/debug.py 2015-07-13
20:34:39.000000000 +0200
+++ new/oslo.middleware-2.8.0/oslo_middleware/debug.py 2015-08-27
18:26:00.000000000 +0200
@@ -25,7 +25,7 @@
from oslo_middleware import base
-class Debug(base.Middleware):
+class Debug(base.ConfigurableMiddleware):
"""Helper class that returns debug information.
Can be inserted into any WSGI application chain to get information about
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' --exclude Makefile.in --exclude configure --exclude
config.guess --exclude '*.pot' --exclude mkinstalldirs --exclude aclocal.m4
--exclude config.sub --exclude depcomp --exclude install-sh --exclude ltmain.sh
old/oslo.middleware-2.4.0/oslo_middleware/healthcheck/__init__.py
new/oslo.middleware-2.8.0/oslo_middleware/healthcheck/__init__.py
--- old/oslo.middleware-2.4.0/oslo_middleware/healthcheck/__init__.py
2015-07-13 20:34:39.000000000 +0200
+++ new/oslo.middleware-2.8.0/oslo_middleware/healthcheck/__init__.py
2015-08-27 18:26:00.000000000 +0200
@@ -21,7 +21,7 @@
from oslo_middleware import base
-class Healthcheck(base.Middleware):
+class Healthcheck(base.ConfigurableMiddleware):
"""Healthcheck middleware used for monitoring.
If the path is /healthcheck, it will respond 200 with "OK" as the body.
@@ -72,16 +72,6 @@
NAMESPACE = "oslo.middleware.healthcheck"
- @classmethod
- def factory(cls, global_conf, **local_conf):
- """Factory method for paste.deploy."""
- conf = global_conf.copy()
- conf.update(local_conf)
-
- def healthcheck_filter(app):
- return cls(app, conf)
- return healthcheck_filter
-
def __init__(self, application, conf):
super(Healthcheck, self).__init__(application)
self._path = conf.get('path', '/healthcheck')
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' --exclude Makefile.in --exclude configure --exclude
config.guess --exclude '*.pot' --exclude mkinstalldirs --exclude aclocal.m4
--exclude config.sub --exclude depcomp --exclude install-sh --exclude ltmain.sh
old/oslo.middleware-2.4.0/oslo_middleware/healthcheck/pluginbase.py
new/oslo.middleware-2.8.0/oslo_middleware/healthcheck/pluginbase.py
--- old/oslo.middleware-2.4.0/oslo_middleware/healthcheck/pluginbase.py
2015-07-13 20:34:39.000000000 +0200
+++ new/oslo.middleware-2.8.0/oslo_middleware/healthcheck/pluginbase.py
2015-08-27 18:26:00.000000000 +0200
@@ -19,7 +19,7 @@
import six
HealthcheckResult = collections.namedtuple(
- 'HealthcheckResult', ['available', 'reason'], verbose=True)
+ 'HealthcheckResult', ['available', 'reason'])
@six.add_metaclass(abc.ABCMeta)
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' --exclude Makefile.in --exclude configure --exclude
config.guess --exclude '*.pot' --exclude mkinstalldirs --exclude aclocal.m4
--exclude config.sub --exclude depcomp --exclude install-sh --exclude ltmain.sh
old/oslo.middleware-2.4.0/oslo_middleware/opts.py
new/oslo.middleware-2.8.0/oslo_middleware/opts.py
--- old/oslo.middleware-2.4.0/oslo_middleware/opts.py 2015-07-13
20:34:39.000000000 +0200
+++ new/oslo.middleware-2.8.0/oslo_middleware/opts.py 2015-08-27
18:26:00.000000000 +0200
@@ -15,10 +15,14 @@
__all__ = [
'list_opts',
+ 'list_opts_sizelimit',
+ 'list_opts_ssl',
+ 'list_opts_cors'
]
import copy
+import itertools
from oslo_middleware import cors
from oslo_middleware import sizelimit
@@ -26,7 +30,83 @@
def list_opts():
- """Return a list of oslo.config options available in the library.
+ """Return a list of oslo.config options for ALL of the middleware classes.
+
+ The returned list includes all oslo.config options which may be registered
+ at runtime by the library.
+
+ Each element of the list is a tuple. The first element is the name of the
+ group under which the list of elements in the second element will be
+ registered. A group name of None corresponds to the [DEFAULT] group in
+ config files.
+
+ This function is also discoverable via the 'oslo.concurrency' entry point
+ under the 'oslo.config.opts' namespace.
+
+ The purpose of this is to allow tools like the Oslo sample config file
+ generator to discover the options exposed to users by this library.
+
+ :returns: a list of (group_name, opts) tuples
+ """
+ return list(
+ itertools.chain(
+ list_opts_sizelimit(),
+ list_opts_ssl(),
+ list_opts_cors(),
+ )
+ )
+
+
+def list_opts_sizelimit():
+ """Return a list of oslo.config options for the sizelimit middleware.
+
+ The returned list includes all oslo.config options which may be registered
+ at runtime by the library.
+
+ Each element of the list is a tuple. The first element is the name of the
+ group under which the list of elements in the second element will be
+ registered. A group name of None corresponds to the [DEFAULT] group in
+ config files.
+
+ This function is also discoverable via the 'oslo.concurrency' entry point
+ under the 'oslo.config.opts' namespace.
+
+ The purpose of this is to allow tools like the Oslo sample config file
+ generator to discover the options exposed to users by this library.
+
+ :returns: a list of (group_name, opts) tuples
+ """
+ return [
+ ('oslo_middleware', copy.deepcopy(sizelimit._opts)),
+ ]
+
+
+def list_opts_ssl():
+ """Return a list of oslo.config options for the sizelimit middleware.
+
+ The returned list includes all oslo.config options which may be registered
+ at runtime by the library.
+
+ Each element of the list is a tuple. The first element is the name of the
+ group under which the list of elements in the second element will be
+ registered. A group name of None corresponds to the [DEFAULT] group in
+ config files.
+
+ This function is also discoverable via the 'oslo.concurrency' entry point
+ under the 'oslo.config.opts' namespace.
+
+ The purpose of this is to allow tools like the Oslo sample config file
+ generator to discover the options exposed to users by this library.
+
+ :returns: a list of (group_name, opts) tuples
+ """
+ return [
+ ('oslo_middleware', copy.deepcopy(ssl.OPTS)),
+ ]
+
+
+def list_opts_cors():
+ """Return a list of oslo.config options for the cors middleware.
The returned list includes all oslo.config options which may be registered
at runtime by the library.
@@ -45,7 +125,6 @@
:returns: a list of (group_name, opts) tuples
"""
return [
- ('oslo_middleware', copy.deepcopy(sizelimit._opts + ssl.OPTS)),
('cors', copy.deepcopy(cors.CORS_OPTS)),
('cors.subdomain', copy.deepcopy(cors.CORS_OPTS))
]
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' --exclude Makefile.in --exclude configure --exclude
config.guess --exclude '*.pot' --exclude mkinstalldirs --exclude aclocal.m4
--exclude config.sub --exclude depcomp --exclude install-sh --exclude ltmain.sh
old/oslo.middleware-2.4.0/oslo_middleware/request_id.py
new/oslo.middleware-2.8.0/oslo_middleware/request_id.py
--- old/oslo.middleware-2.4.0/oslo_middleware/request_id.py 2015-07-13
20:34:39.000000000 +0200
+++ new/oslo.middleware-2.8.0/oslo_middleware/request_id.py 2015-08-27
18:26:00.000000000 +0200
@@ -23,7 +23,7 @@
HTTP_RESP_HEADER_REQUEST_ID = 'x-openstack-request-id'
-class RequestId(base.Middleware):
+class RequestId(base.ConfigurableMiddleware):
"""Middleware that ensures request ID.
It ensures to assign request ID for each API request and set it to
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' --exclude Makefile.in --exclude configure --exclude
config.guess --exclude '*.pot' --exclude mkinstalldirs --exclude aclocal.m4
--exclude config.sub --exclude depcomp --exclude install-sh --exclude ltmain.sh
old/oslo.middleware-2.4.0/oslo_middleware/sizelimit.py
new/oslo.middleware-2.8.0/oslo_middleware/sizelimit.py
--- old/oslo.middleware-2.4.0/oslo_middleware/sizelimit.py 2015-07-13
20:34:39.000000000 +0200
+++ new/oslo.middleware-2.8.0/oslo_middleware/sizelimit.py 2015-08-27
18:26:00.000000000 +0200
@@ -18,7 +18,6 @@
"""
from oslo_config import cfg
-from oslo_config import cfgfilter
import webob.dec
import webob.exc
@@ -40,9 +39,6 @@
deprecated_opts=_oldopts)
]
-CONF = cfgfilter.ConfigFilter(cfg.CONF)
-CONF.register_opts(_opts, group='oslo_middleware')
-
class LimitingReader(object):
"""Reader to limit the size of an incoming request."""
@@ -79,12 +75,16 @@
return result
-class RequestBodySizeLimiter(base.Middleware):
+class RequestBodySizeLimiter(base.ConfigurableMiddleware):
"""Limit the size of incoming requests."""
+ def __init__(self, application, conf=None):
+ super(RequestBodySizeLimiter, self).__init__(application, conf)
+ self.oslo_conf.register_opts(_opts, group='oslo_middleware')
+
@webob.dec.wsgify
def __call__(self, req):
- max_size = CONF.oslo_middleware.max_request_body_size
+ max_size = self._conf_get('max_request_body_size')
if (req.content_length is not None and
req.content_length > max_size):
msg = _("Request is too large.")
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' --exclude Makefile.in --exclude configure --exclude
config.guess --exclude '*.pot' --exclude mkinstalldirs --exclude aclocal.m4
--exclude config.sub --exclude depcomp --exclude install-sh --exclude ltmain.sh
old/oslo.middleware-2.4.0/oslo_middleware/ssl.py
new/oslo.middleware-2.8.0/oslo_middleware/ssl.py
--- old/oslo.middleware-2.4.0/oslo_middleware/ssl.py 2015-07-13
20:34:39.000000000 +0200
+++ new/oslo.middleware-2.8.0/oslo_middleware/ssl.py 2015-08-27
18:26:00.000000000 +0200
@@ -21,10 +21,9 @@
"the original request protocol scheme was, even if it was "
"hidden by an SSL termination proxy.")
]
-cfg.CONF.register_opts(OPTS, group='oslo_middleware')
-class SSLMiddleware(base.Middleware):
+class SSLMiddleware(base.ConfigurableMiddleware):
"""SSL termination proxies middleware.
This middleware overloads wsgi.url_scheme with the one provided in
@@ -32,12 +31,13 @@
termination proxy.
"""
- def __init__(self, application):
- super(SSLMiddleware, self).__init__(application)
- self.header_name = 'HTTP_{0}'.format(
- cfg.CONF.oslo_middleware.secure_proxy_ssl_header.upper()
- .replace('-', '_'))
+ def __init__(self, application, *args, **kwargs):
+ super(SSLMiddleware, self).__init__(application, *args, **kwargs)
+ self.oslo_conf.register_opts(OPTS, group='oslo_middleware')
def process_request(self, req):
+ self.header_name = 'HTTP_{0}'.format(
+ self._conf_get('secure_proxy_ssl_header').upper()
+ .replace('-', '_'))
req.environ['wsgi.url_scheme'] = req.environ.get(
self.header_name, req.environ['wsgi.url_scheme'])
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' --exclude Makefile.in --exclude configure --exclude
config.guess --exclude '*.pot' --exclude mkinstalldirs --exclude aclocal.m4
--exclude config.sub --exclude depcomp --exclude install-sh --exclude ltmain.sh
old/oslo.middleware-2.4.0/oslo_middleware/tests/test_base.py
new/oslo.middleware-2.8.0/oslo_middleware/tests/test_base.py
--- old/oslo.middleware-2.4.0/oslo_middleware/tests/test_base.py
2015-07-13 20:34:39.000000000 +0200
+++ new/oslo.middleware-2.8.0/oslo_middleware/tests/test_base.py
2015-08-27 18:26:00.000000000 +0200
@@ -14,28 +14,25 @@
import webob
+from oslo_middleware.base import ConfigurableMiddleware
from oslo_middleware.base import Middleware
from oslotest.base import BaseTestCase
[email protected]
+def application(req):
+ return 'Hello, World!!!'
+
+
class TestBase(BaseTestCase):
"""Test the base middleware class."""
- def setUp(self):
- """Setup the tests."""
- super(BaseTestCase, self).setUp()
-
def test_extend_with_request(self):
"""Assert that a newer middleware behaves as appropriate.
This tests makes sure that the request is passed to the
middleware's implementation.
"""
- # Create an application.
- @webob.dec.wsgify
- def application(req):
- return 'Hello, World!!!'
-
# Bootstrap the application
self.application = RequestBase(application)
@@ -52,11 +49,6 @@
middleware's implementation, and that there are no other expected
errors.
"""
- # Create an application.
- @webob.dec.wsgify
- def application(req):
- return 'Hello, World!!!'
-
# Bootstrap the application
self.application = NoRequestBase(application)
@@ -66,6 +58,16 @@
self.assertTrue(self.application.called_without_request)
+ def test_paste_deploy_legacy(self):
+ app = LegacyMiddlewareTest.factory(
+ {'global': True}, local=True)(application)
+ self.assertEqual(app.conf, {})
+
+ def test_paste_deploy_configurable(self):
+ app = ConfigurableMiddlewareTest.factory(
+ {'global': True}, local=True)(application)
+ self.assertEqual(app.conf, {'global': True, 'local': True})
+
class NoRequestBase(Middleware):
"""Test middleware, implements old model."""
@@ -79,3 +81,11 @@
def process_response(self, response, request):
self.called_with_request = True
return response
+
+
+class ConfigurableMiddlewareTest(ConfigurableMiddleware):
+ pass
+
+
+class LegacyMiddlewareTest(Middleware):
+ pass
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' --exclude Makefile.in --exclude configure --exclude
config.guess --exclude '*.pot' --exclude mkinstalldirs --exclude aclocal.m4
--exclude config.sub --exclude depcomp --exclude install-sh --exclude ltmain.sh
old/oslo.middleware-2.4.0/oslo_middleware/tests/test_cors.py
new/oslo.middleware-2.8.0/oslo_middleware/tests/test_cors.py
--- old/oslo.middleware-2.4.0/oslo_middleware/tests/test_cors.py
2015-07-13 20:34:39.000000000 +0200
+++ new/oslo.middleware-2.8.0/oslo_middleware/tests/test_cors.py
2015-08-27 18:26:00.000000000 +0200
@@ -115,6 +115,8 @@
"""Test the CORS filter_factory method."""
def test_filter_factory(self):
+ self.useFixture(fixture.Config()).conf([])
+
# Test a valid filter.
filter = cors.filter_factory(None,
allowed_origin='http://valid.example.com',
@@ -128,11 +130,11 @@
self.assertIn('http://valid.example.com', application.allowed_origins)
config = application.allowed_origins['http://valid.example.com']
- self.assertEqual('False', config['allow_credentials'])
- self.assertEqual('', config['max_age'])
- self.assertEqual('', config['expose_headers'])
- self.assertEqual('GET', config['allow_methods'])
- self.assertEqual('', config['allow_headers'])
+ self.assertEqual(False, config['allow_credentials'])
+ self.assertEqual(None, config['max_age'])
+ self.assertEqual([], config['expose_headers'])
+ self.assertEqual(['GET'], config['allow_methods'])
+ self.assertEqual([], config['allow_headers'])
def test_no_origin_fail(self):
'''Assert that a filter factory with no allowed_origin fails.'''
@@ -583,6 +585,41 @@
allow_credentials=None,
expose_headers=None)
+ def test_simple_header_response(self):
+ """CORS Specification Section 3
+
+ A header is said to be a simple header if the header field name is an
+ ASCII case-insensitive match for Accept, Accept-Language, or
+ Content-Language or if it is an ASCII case-insensitive match for
+ Content-Type and the header field value media type (excluding
+ parameters) is an ASCII case-insensitive match for
+ application/x-www-form-urlencoded, multipart/form-data, or text/plain.
+
+ NOTE: We are not testing the media type cases.
+ """
+
+ simple_headers = ','.join([
+ 'accept',
+ 'accept-language',
+ 'content-language',
+ 'content-type'
+ ])
+
+ request = webob.Request.blank('/')
+ request.method = "OPTIONS"
+ request.headers['Origin'] = 'http://valid.example.com'
+ request.headers['Access-Control-Request-Method'] = 'GET'
+ request.headers['Access-Control-Request-Headers'] = simple_headers
+ response = request.get_response(self.application)
+ self.assertCORSResponse(response,
+ status='200 OK',
+ allow_origin='http://valid.example.com',
+ max_age=None,
+ allow_methods='GET',
+ allow_headers=simple_headers,
+ allow_credentials=None,
+ expose_headers=None)
+
def test_no_request_method(self):
"""CORS Specification Section 6.2.3
@@ -996,3 +1033,113 @@
allow_headers='',
allow_credentials='true',
expose_headers=None)
+
+
+class CORSTestLatentProperties(CORSTestBase):
+ """Test the CORS wildcard specification."""
+
+ def setUp(self):
+ super(CORSTestLatentProperties, self).setUp()
+
+ # Set up the config fixture.
+ config = self.useFixture(fixture.Config(cfg.CONF))
+
+ config.load_raw_values(group='cors',
+ allowed_origin='http://default.example.com',
+ allow_credentials='True',
+ max_age='',
+ expose_headers='X-Configured',
+ allow_methods='GET',
+ allow_headers='X-Configured')
+
+ # Now that the config is set up, create our application.
+ self.application = cors.CORS(test_application, cfg.CONF)
+
+ def test_latent_methods(self):
+ """Assert that latent HTTP methods are permitted."""
+
+ self.application.set_latent(allow_headers=None,
+ expose_headers=None,
+ allow_methods=['POST'])
+
+ request = webob.Request.blank('/')
+ request.method = "OPTIONS"
+ request.headers['Origin'] = 'http://default.example.com'
+ request.headers['Access-Control-Request-Method'] = 'POST'
+ response = request.get_response(self.application)
+ self.assertCORSResponse(response,
+ status='200 OK',
+ allow_origin='http://default.example.com',
+ max_age=None,
+ allow_methods='POST',
+ allow_headers='',
+ allow_credentials='true',
+ expose_headers=None)
+
+ def test_invalid_latent_methods(self):
+ """Assert that passing a non-list is caught."""
+
+ self.assertRaises(TypeError,
+ self.application.set_latent,
+ allow_methods='POST')
+
+ def test_latent_allow_headers(self):
+ """Assert that latent HTTP headers are permitted."""
+
+ self.application.set_latent(allow_headers=['X-Latent'],
+ expose_headers=None,
+ allow_methods=None)
+
+ request = webob.Request.blank('/')
+ request.method = "OPTIONS"
+ request.headers['Origin'] = 'http://default.example.com'
+ request.headers['Access-Control-Request-Method'] = 'GET'
+ request.headers[
+ 'Access-Control-Request-Headers'] = 'X-Latent,X-Configured'
+ response = request.get_response(self.application)
+ self.assertCORSResponse(response,
+ status='200 OK',
+ allow_origin='http://default.example.com',
+ max_age=None,
+ allow_methods='GET',
+ allow_headers='X-Latent,X-Configured',
+ allow_credentials='true',
+ expose_headers=None)
+
+ def test_invalid_latent_allow_headers(self):
+ """Assert that passing a non-list is caught in allow headers."""
+
+ self.assertRaises(TypeError,
+ self.application.set_latent,
+ allow_headers='X-Latent')
+
+ def test_latent_expose_headers(self):
+ """Assert that latent HTTP headers are exposed."""
+
+ self.application.set_latent(allow_headers=None,
+ expose_headers=[
+ 'X-Server-Generated-Response'],
+ allow_methods=None)
+
+ request = webob.Request.blank('/')
+ request.method = "GET"
+ request.headers['Origin'] = 'http://default.example.com'
+ response = request.get_response(self.application)
+ self.assertCORSResponse(response,
+ status='200 OK',
+ allow_origin='http://default.example.com',
+ max_age=None,
+ allow_methods=None,
+ allow_headers=None,
+ allow_credentials='true',
+ expose_headers='X-Configured,'
+ 'X-Server-Generated-Response')
+
+ def test_invalid_latent_expose_headers(self):
+ """Assert that passing a non-list is caught in expose headers."""
+
+ # Add headers to the application.
+
+ self.assertRaises(TypeError,
+ self.application.set_latent,
+ expose_headers='X-Latent')
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' --exclude Makefile.in --exclude configure --exclude
config.guess --exclude '*.pot' --exclude mkinstalldirs --exclude aclocal.m4
--exclude config.sub --exclude depcomp --exclude install-sh --exclude ltmain.sh
old/oslo.middleware-2.4.0/oslo_middleware/tests/test_opts.py
new/oslo.middleware-2.8.0/oslo_middleware/tests/test_opts.py
--- old/oslo.middleware-2.4.0/oslo_middleware/tests/test_opts.py
1970-01-01 01:00:00.000000000 +0100
+++ new/oslo.middleware-2.8.0/oslo_middleware/tests/test_opts.py
2015-08-27 18:26:00.000000000 +0200
@@ -0,0 +1,31 @@
+# Copyright (c) 2015 Hewlett-Packard Development Company, L.P.
+#
+# 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_middleware import opts
+from oslotest.base import BaseTestCase
+
+
+class TestOptionDiscovery(BaseTestCase):
+
+ def test_all(self):
+ opts.list_opts()
+
+ def test_sizelimit(self):
+ opts.list_opts_sizelimit()
+
+ def test_cors(self):
+ opts.list_opts_cors()
+
+ def test_ssl(self):
+ opts.list_opts_ssl()
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' --exclude Makefile.in --exclude configure --exclude
config.guess --exclude '*.pot' --exclude mkinstalldirs --exclude aclocal.m4
--exclude config.sub --exclude depcomp --exclude install-sh --exclude ltmain.sh
old/oslo.middleware-2.4.0/oslo_middleware/tests/test_sizelimit.py
new/oslo.middleware-2.8.0/oslo_middleware/tests/test_sizelimit.py
--- old/oslo.middleware-2.4.0/oslo_middleware/tests/test_sizelimit.py
2015-07-13 20:34:39.000000000 +0200
+++ new/oslo.middleware-2.8.0/oslo_middleware/tests/test_sizelimit.py
2015-08-27 18:26:00.000000000 +0200
@@ -78,15 +78,15 @@
def setUp(self):
super(TestRequestBodySizeLimiter, self).setUp()
- fixture = self.useFixture(config.Config(sizelimit.CONF))
- self.MAX_REQUEST_BODY_SIZE = \
- fixture.conf.oslo_middleware.max_request_body_size
+ self.useFixture(config.Config())
@webob.dec.wsgify()
def fake_app(req):
return webob.Response(req.body)
self.middleware = sizelimit.RequestBodySizeLimiter(fake_app)
+ self.MAX_REQUEST_BODY_SIZE = (
+ self.middleware.oslo_conf.oslo_middleware.max_request_body_size)
self.request = webob.Request.blank('/', method='POST')
def test_content_length_acceptable(self):
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' --exclude Makefile.in --exclude configure --exclude
config.guess --exclude '*.pot' --exclude mkinstalldirs --exclude aclocal.m4
--exclude config.sub --exclude depcomp --exclude install-sh --exclude ltmain.sh
old/oslo.middleware-2.4.0/oslo_middleware/tests/test_ssl.py
new/oslo.middleware-2.8.0/oslo_middleware/tests/test_ssl.py
--- old/oslo.middleware-2.4.0/oslo_middleware/tests/test_ssl.py 2015-07-13
20:34:39.000000000 +0200
+++ new/oslo.middleware-2.8.0/oslo_middleware/tests/test_ssl.py 2015-08-27
18:26:00.000000000 +0200
@@ -13,7 +13,6 @@
# License for the specific language governing permissions and limitations
# under the License.
-from oslo_config import cfg
from oslo_config import fixture as config
from oslotest import base
import webob
@@ -27,8 +26,12 @@
super(SSLMiddlewareTest, self).setUp()
self.useFixture(config.Config())
- def _test_scheme(self, expected, headers):
+ def _test_scheme(self, expected, headers, secure_proxy_ssl_header=None):
middleware = ssl.SSLMiddleware(None)
+ if secure_proxy_ssl_header:
+ middleware.oslo_conf.set_override(
+ 'secure_proxy_ssl_header', secure_proxy_ssl_header,
+ group='oslo_middleware')
request = webob.Request.blank('http://example.com/', headers=headers)
# Ensure ssl middleware does not stop pipeline execution
@@ -44,13 +47,11 @@
self._test_scheme('https', headers)
def test_with_custom_header(self):
- cfg.CONF.set_override('secure_proxy_ssl_header', 'X-My-Header',
- group='oslo_middleware')
headers = {'X-Forwarded-Proto': 'https'}
- self._test_scheme('http', headers)
+ self._test_scheme('http', headers,
+ secure_proxy_ssl_header='X-My-Header')
def test_with_custom_header_and_forwarded_protocol(self):
- cfg.CONF.set_override('secure_proxy_ssl_header', 'X-My-Header',
- group='oslo_middleware')
headers = {'X-My-Header': 'https'}
- self._test_scheme('https', headers)
+ self._test_scheme('https', headers,
+ secure_proxy_ssl_header='X-My-Header')
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' --exclude Makefile.in --exclude configure --exclude
config.guess --exclude '*.pot' --exclude mkinstalldirs --exclude aclocal.m4
--exclude config.sub --exclude depcomp --exclude install-sh --exclude ltmain.sh
old/oslo.middleware-2.4.0/requirements.txt
new/oslo.middleware-2.8.0/requirements.txt
--- old/oslo.middleware-2.4.0/requirements.txt 2015-07-13 20:34:39.000000000
+0200
+++ new/oslo.middleware-2.8.0/requirements.txt 2015-08-27 18:26:00.000000000
+0200
@@ -2,9 +2,9 @@
# of appearance. Changing the order has an impact on the overall integration
# process, which may cause wedges in the gate later.
-pbr<2.0,>=0.11
+pbr<2.0,>=1.6
Babel>=1.3
-oslo.config>=1.11.0 # Apache-2.0
+oslo.config>=2.3.0 # Apache-2.0
oslo.context>=0.2.0 # Apache-2.0
oslo.i18n>=1.5.0 # Apache-2.0
six>=1.9.0
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' --exclude Makefile.in --exclude configure --exclude
config.guess --exclude '*.pot' --exclude mkinstalldirs --exclude aclocal.m4
--exclude config.sub --exclude depcomp --exclude install-sh --exclude ltmain.sh
old/oslo.middleware-2.4.0/setup.cfg new/oslo.middleware-2.8.0/setup.cfg
--- old/oslo.middleware-2.4.0/setup.cfg 2015-07-13 20:35:02.000000000 +0200
+++ new/oslo.middleware-2.8.0/setup.cfg 2015-08-27 18:26:29.000000000 +0200
@@ -30,6 +30,9 @@
[entry_points]
oslo.config.opts =
oslo.middleware = oslo_middleware.opts:list_opts
+ oslo.middleware.cors = oslo_middleware.opts:list_opts_cors
+ oslo.middleware.sizelimit = oslo_middleware.opts:list_opts_sizelimit
+ oslo.middleware.ssl = oslo_middleware.opts:list_opts_ssl
oslo.middleware.healthcheck =
disable_by_file =
oslo_middleware.healthcheck.disable_by_file:DisableByFileHealthcheck
@@ -63,6 +66,6 @@
[egg_info]
tag_date = 0
-tag_build =
tag_svn_revision = 0
+tag_build =
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' --exclude Makefile.in --exclude configure --exclude
config.guess --exclude '*.pot' --exclude mkinstalldirs --exclude aclocal.m4
--exclude config.sub --exclude depcomp --exclude install-sh --exclude ltmain.sh
old/oslo.middleware-2.4.0/setup.py new/oslo.middleware-2.8.0/setup.py
--- old/oslo.middleware-2.4.0/setup.py 2015-07-13 20:34:39.000000000 +0200
+++ new/oslo.middleware-2.8.0/setup.py 2015-08-27 18:26:00.000000000 +0200
@@ -25,5 +25,5 @@
pass
setuptools.setup(
- setup_requires=['pbr'],
+ setup_requires=['pbr>=1.3'],
pbr=True)
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' --exclude Makefile.in --exclude configure --exclude
config.guess --exclude '*.pot' --exclude mkinstalldirs --exclude aclocal.m4
--exclude config.sub --exclude depcomp --exclude install-sh --exclude ltmain.sh
old/oslo.middleware-2.4.0/test-requirements.txt
new/oslo.middleware-2.8.0/test-requirements.txt
--- old/oslo.middleware-2.4.0/test-requirements.txt 2015-07-13
20:34:39.000000000 +0200
+++ new/oslo.middleware-2.8.0/test-requirements.txt 2015-08-27
18:26:00.000000000 +0200
@@ -4,10 +4,9 @@
fixtures>=1.3.1
hacking<0.11,>=0.10.0
-mock>=1.1;python_version!='2.6'
-mock==1.0.1;python_version=='2.6'
+mock>=1.2
oslosphinx>=2.5.0 # Apache-2.0
-oslotest>=1.5.1 # Apache-2.0
+oslotest>=1.10.0 # Apache-2.0
sphinx!=1.2.0,!=1.3b1,<1.3,>=1.1.2
testtools>=1.4.0
coverage>=3.6
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' --exclude Makefile.in --exclude configure --exclude
config.guess --exclude '*.pot' --exclude mkinstalldirs --exclude aclocal.m4
--exclude config.sub --exclude depcomp --exclude install-sh --exclude ltmain.sh
old/oslo.middleware-2.4.0/tests/test_sizelimit.py
new/oslo.middleware-2.8.0/tests/test_sizelimit.py
--- old/oslo.middleware-2.4.0/tests/test_sizelimit.py 2015-07-13
20:34:39.000000000 +0200
+++ new/oslo.middleware-2.8.0/tests/test_sizelimit.py 2015-08-27
18:26:00.000000000 +0200
@@ -78,15 +78,15 @@
def setUp(self):
super(TestRequestBodySizeLimiter, self).setUp()
- fixture = self.useFixture(config.Config(sizelimit.CONF))
- self.MAX_REQUEST_BODY_SIZE = \
- fixture.conf.oslo_middleware.max_request_body_size
+ self.useFixture(config.Config())
@webob.dec.wsgify()
def fake_app(req):
return webob.Response(req.body)
self.middleware = sizelimit.RequestBodySizeLimiter(fake_app)
+ self.MAX_REQUEST_BODY_SIZE = (
+ self.middleware.oslo_conf.oslo_middleware.max_request_body_size)
self.request = webob.Request.blank('/', method='POST')
def test_content_length_acceptable(self):