swift/swift/common/middleware
Prashanth Pai 46d61a4dcd Refactor server side copy as middleware
Rewrite server side copy and 'object post as copy' feature as middleware to
simplify the PUT method in the object controller code. COPY is no longer
a verb implemented as public method in Proxy application.

The server side copy middleware is inserted to the left of dlo, slo and
versioned_writes middlewares in the proxy server pipeline. As a result,
dlo and slo copy_hooks are no longer required. SLO manifests are now
validated when copied so when copying a manifest to another account the
referenced segments must be readable in that account for the manifest
copy to succeed (previously this validation was not made, meaning the
manifest was copied but could be unusable if the segments were not
readable).

With this change, there should be no change in functionality or existing
behavior. This is asserted with (almost) no changes required to existing
functional tests.

Some notes (for operators):
* Middleware required to be auto-inserted before slo and dlo and
  versioned_writes
* Turning off server side copy is not configurable.
* object_post_as_copy is no longer a configurable option of proxy server
  but of this middleware. However, for smooth upgrade, config option set
  in proxy server app is also read.

DocImpact: Introducing server side copy as middleware

Co-Authored-By: Alistair Coles <alistair.coles@hpe.com>
Co-Authored-By: Thiago da Silva <thiago@redhat.com>

Change-Id: Ic96a92e938589a2f6add35a40741fd062f1c29eb
Signed-off-by: Prashanth Pai <ppai@redhat.com>
Signed-off-by: Thiago da Silva <thiago@redhat.com>
2016-05-11 14:55:51 -04:00
..
x_profile Fix pep8 E265 warning of hacking 0.10 2015-07-30 09:33:18 +02:00
__init__.py Initial commit of middleware refactor 2010-08-20 00:42:38 +00:00
account_quotas.py Refactor server side copy as middleware 2016-05-11 14:55:51 -04:00
acl.py Replace string slicing with proper string methods 2015-11-27 14:09:35 +01:00
bulk.py fix formatting of bulk operations doc 2016-02-23 16:24:21 -05:00
catch_errors.py Let users add their own txid suffixes 2014-05-16 15:29:47 -04:00
cname_lookup.py Replace xrange() with six.moves.range() 2015-06-23 07:29:15 +00:00
container_quotas.py Refactor server side copy as middleware 2016-05-11 14:55:51 -04:00
container_sync.py By default, disallow inbound X-Timestamp headers 2016-03-09 09:14:46 +00:00
copy.py Refactor server side copy as middleware 2016-05-11 14:55:51 -04:00
crossdomain.py Fix misspellings in swift 2014-02-20 16:15:48 +08:00
dlo.py Refactor server side copy as middleware 2016-05-11 14:55:51 -04:00
domain_remap.py Replace string slicing with proper string methods 2015-11-27 14:09:35 +01:00
formpost.py Replace string slicing with proper string methods 2015-11-27 14:09:35 +01:00
gatekeeper.py By default, disallow inbound X-Timestamp headers 2016-03-09 09:14:46 +00:00
healthcheck.py Change OpenStack LLC to Foundation 2013-09-20 01:02:31 +08:00
keystoneauth.py Keystone middleware deprecated option is_admin removed 2016-02-11 10:52:47 +00:00
list_endpoints.py remove remaining simplejson uses, prefer standard library import 2015-11-16 12:34:24 -08:00
memcache.py Use six to fix imports on Python 3 2015-07-24 11:48:28 +02:00
name_check.py Optimize the code performance 2015-11-04 06:06:10 -08:00
proxy_logging.py py3: Use six.reraise() to reraise an exception 2015-10-08 15:33:26 +02:00
ratelimit.py added swift_source to ratelimit info calls 2015-02-15 17:14:31 -08:00
recon.py Don't report recon mount/usage status on files 2016-03-14 00:17:47 -05:00
slo.py Refactor server side copy as middleware 2016-05-11 14:55:51 -04:00
staticweb.py Stop staticweb revealing container existence to unauth'd requests 2016-02-25 08:52:05 +00:00
tempauth.py Merge "Expose token expiration time in tempauth auth response" 2016-01-23 08:00:12 +00:00
tempurl.py Handle tempurl Content-Disposition header missing from HEAD 2016-03-24 16:12:46 +08:00
versioned_writes.py Refactor server side copy as middleware 2016-05-11 14:55:51 -04:00
xprofile.py py3: Use the six module in the xprofile middleware 2016-01-20 15:23:22 +01:00