Insert versioned_writes in correct pipeline position
If not explicitly configured the versioned_writes middleware should be auto-inserted in the pipeline after slo and dlo, which is where the versioned_writes filter section's comments say it should be in proxy-server.conf-sample. At the moment it can end up being placed ahead of slo and dlo if they have been explicitly configured, which results in the linked bug manifesting. Closes-Bug: #1537042 Change-Id: I6ac95a331f4ef0d4887311940acc6f8bc00fb4eb
This commit is contained in:
parent
0e91aa8368
commit
30d74af653
@ -67,7 +67,7 @@ required_filters = [
|
|||||||
'staticweb', 'tempauth', 'keystoneauth',
|
'staticweb', 'tempauth', 'keystoneauth',
|
||||||
'catch_errors', 'gatekeeper', 'proxy_logging']},
|
'catch_errors', 'gatekeeper', 'proxy_logging']},
|
||||||
{'name': 'versioned_writes', 'after_fn': lambda _junk: [
|
{'name': 'versioned_writes', 'after_fn': lambda _junk: [
|
||||||
'staticweb', 'tempauth', 'keystoneauth',
|
'slo', 'dlo', 'staticweb', 'tempauth', 'keystoneauth',
|
||||||
'catch_errors', 'gatekeeper', 'proxy_logging']}]
|
'catch_errors', 'gatekeeper', 'proxy_logging']}]
|
||||||
|
|
||||||
|
|
||||||
|
@ -1470,6 +1470,45 @@ class TestPipelineModification(unittest.TestCase):
|
|||||||
'swift.common.middleware.healthcheck',
|
'swift.common.middleware.healthcheck',
|
||||||
'swift.proxy.server'])
|
'swift.proxy.server'])
|
||||||
|
|
||||||
|
def test_proxy_modify_wsgi_pipeline_inserts_versioned_writes(self):
|
||||||
|
config = """
|
||||||
|
[DEFAULT]
|
||||||
|
swift_dir = TEMPDIR
|
||||||
|
|
||||||
|
[pipeline:main]
|
||||||
|
pipeline = slo dlo healthcheck proxy-server
|
||||||
|
|
||||||
|
[app:proxy-server]
|
||||||
|
use = egg:swift#proxy
|
||||||
|
conn_timeout = 0.2
|
||||||
|
|
||||||
|
[filter:healthcheck]
|
||||||
|
use = egg:swift#healthcheck
|
||||||
|
|
||||||
|
[filter:dlo]
|
||||||
|
use = egg:swift#dlo
|
||||||
|
|
||||||
|
[filter:slo]
|
||||||
|
use = egg:swift#slo
|
||||||
|
"""
|
||||||
|
|
||||||
|
contents = dedent(config)
|
||||||
|
with temptree(['proxy-server.conf']) as t:
|
||||||
|
conf_file = os.path.join(t, 'proxy-server.conf')
|
||||||
|
with open(conf_file, 'w') as f:
|
||||||
|
f.write(contents.replace('TEMPDIR', t))
|
||||||
|
_fake_rings(t)
|
||||||
|
app = wsgi.loadapp(conf_file, global_conf={})
|
||||||
|
|
||||||
|
self.assertEqual(self.pipeline_modules(app),
|
||||||
|
['swift.common.middleware.catch_errors',
|
||||||
|
'swift.common.middleware.gatekeeper',
|
||||||
|
'swift.common.middleware.slo',
|
||||||
|
'swift.common.middleware.dlo',
|
||||||
|
'swift.common.middleware.versioned_writes',
|
||||||
|
'swift.common.middleware.healthcheck',
|
||||||
|
'swift.proxy.server'])
|
||||||
|
|
||||||
def test_proxy_modify_wsgi_pipeline_ordering(self):
|
def test_proxy_modify_wsgi_pipeline_ordering(self):
|
||||||
config = """
|
config = """
|
||||||
[DEFAULT]
|
[DEFAULT]
|
||||||
|
Loading…
Reference in New Issue
Block a user