Attempt to make test_memcache_pool_timeout stable

Too much time can pass after we create a set of co-routines and when
the parent co-routine continues is setup and staging. Instead, we
perform all the setup and staging, let the system run and then verify
the final state after all the dust settles.

Change-Id: I801148e380807119d3d6da5a24ba9cced39fb339
Closes-Bug: 1272503
Move all DLO functionality to middleware

This is for the same reason that SLO got pulled into middleware, which
includes stuff like automatic retry of GETs on broken connection and
the multi-ring storage policy stuff.

The proxy will automatically insert the dlo middleware at an
appropriate place in the pipeline the same way it does with the
gatekeeper middleware. Clusters will still support DLOs after upgrade
even with an old config file that doesn't mention dlo at all.

Includes support for reading config values from the proxy server's
config section so that upgraded clusters continue to work as before.

Bonus fix: resolve 'after' vs. 'after_fn' in proxy's required filters
list. Having two was confusing, so I kept the more-general one.

DocImpact

blueprint multi-ring-large-objects

Change-Id: Ib3b3830c246816dd549fc74be98b4bc651e7bace
Add tests for swift-ring-builder

Add some tests for essential methods in swift-ring-builder.
Tests for removing or changing device settings are executed
with different search values to cover many possible command
line arguments.

Currently tested methods:

- create ring
- add device
- remove device
- set weight
- set info
- set min_part_hours
- set replicas

Tests use swift.common.ring.RingBuilder to verify actions.

Catching and testing output from print statements is not
tested, because this requires redirecting sys.stdout during
tests and that might have some sideeffects for testing tools.

bin/swift-ring-builder has been moved to swift/cli/ringbuilder.py
and slightly modified to work as before (mainly due to no more
existing global variables since that part of the code has been
moved inside a main() function).

Change-Id: Ia63f59a8faca1fad990784f27532ca07a2125454
Fix a couple ifs in account quota middleware.

Unless I'm misunderstanding something, this is better/more
correct.

Change-Id: I6c62fbfdddea908a2671021a34fa25600b0dff45
Merge "Move all DLO functionality to middleware"
Remove swiftclient dependency

Removes the requirement for swiftclient in swift-dispersion-report
and swift-dispersion-populate. To prevent a dependency on
keystoneclient and to avoid reinventing the wheel with an internal
keystoneclient, authentication with keystone is only supported if
swiftclient is available. If not, only auth v1 is supported.

The dependency in swift/container/sync.py has also been removed.

Implements: blueprint remove-swiftclient-dependency

Change-Id: I6ec3b3c85a67b9ab6eb04b90ffc16daf1600e8a7
Make .expiring_objects account name configurable

The account which tracks objects scheduled for deletion had its name
hard-coded to 'expiring_objects'. This is made configurable via
expiring_objects_account_name option. Backend file-systems
integration efforts may want to treat these "special" accounts in a
different way.

This would still go undocumented, hence 'pseudo-hidden'.

UpgradeImpact: None as the default value would continue to be the same
               which is '.expiring_objects'.

Change-Id: I1a093b0d0e2bdd0c3d723090af03fc0adf2ad7e3
Signed-off-by: Prashanth Pai <ppai@redhat.com>
Merge "Fix a couple ifs in account quota middleware."
Fix a comment in bulk middleware.

Change-Id: I3a65d090c5c6ce42639e0af0fcac738a12e52252
Merge "Make .expiring_objects account name configurable"
Merge "Fix a comment in bulk middleware."
Fix a comment in SLO middleware

Change-Id: I6ef435db55eb6cac5a92d9ef0f7ac3eaf271761d
Merge "Add tests for swift-ring-builder"
Fix recon docs

Change-Id: Icaa0f61e5796253dcc57b8c005577890de8aa537
Merge "Attempt to make test_memcache_pool_timeout stable"
Merge "Remove swiftclient dependency"