Faster swift-dispersion-populate

- Makes swift-dispersion-populate a bit faster when using a larger
  dispersion_coverage with a larger part_power.
- Adds option to only run population for container OR objects
- Adds option to let you resume population at given point (useful if you
  need to resume population after a previous run error'd out or the
  like) by specifying which suffix to start at.

The original populate just randomly used uuid4().hex as a suffix on the
container/object names until all the partition's required where covered.
This isn't a big deal if you're only doing 1% coverage on a ring with a
small part power but takes ages if you're doing 100% on a larger ring.

Change-Id: I52f890a774412c1d6179f12db9081aedc58b6bc2
Fix default replication options for ring-builder add

Change-Id: I957deeb0e711bfe7cd9d852726c77179a4613ee0
Change OpenStack LLC to Foundation

Change-Id: I7c3df47c31759dbeb3105f8883e2688ada848d58
Closes-bug: #1214176
Handle X-Copy-From header in container_quota middleware

Content length of the copied object is checked before
allowing the copy request according to the container quota.

Closes-Bug: #1201875
Change-Id: If44b916791e94ac6c66eee04a5727186ce0e56ae
Two small account-quota fixes

First: even if a user has exceeded their account quota, they should be
able to make object POST requests. Updating an object's metadata isn't
going to make them any more over quota, so should be allowed.

Second: don't bother with the reseller_admin check for container or
object requests. If I send the header X-Account-Meta-Quota-Bytes: 100
on e.g. an object PUT request, the proxy will (rightly) ignore it. Now
account-quotas does too.

Change-Id: I970a76349659acdd8229a324bd33bfe7fe7261a4
Use created container in unit test

Change-Id: I2573be1ac14f65b8008611edf940363b31c8d86e
Signed-off-by: Peter Portante <peter.portante@redhat.com>
Fix utf-8 handling in object versions.

Fixes object versioning when object name and/or version
container name contain multibyte utf-8 characters.

When object names containing non-ASCII characters
are PUT multiple times into a container with an
x-versions-location set, subsequent DELETE of the
object results in a 500 response status.

When the versions container name contains
non-ASCII characters the first delete of an object
succeeds but fails to restore previous version of
object, so second delete incorrectly returns 404.

Fixes bug 1229142

Change-Id: I425440f76b8328f8e119d390bfa4c7022181e89e
Move location of HTTPException in swift_testing

While doing some work around swiftclient Python 3 support, httplib
imports were changed to use six.moves in order to access httplib in Py2
and http.client in Py3. Tests related to those changes are failing
because these functional tests are depending on HTTPException being
a name in swiftclient.client. These tests should acces that name from
its canonical location in httplib (or, eventually, a Py3 friendly
location like six.moves).

Change-Id: I6335d465574045daedab47e5fe23c415d171a83a
Install libffi-dev in SAIO docs.

If you don't, then newer versions of xattr won't install, and since
our xattr requirement is simply ">= 0.4" in requirements.txt, this
affects anyone setting up a new SAIO.

This happened with xattr 0.7, which was released on 2013-07-19.

Change-Id: Iaf335fa25a2908953d1fd218158ebedf5d01cc27
bulk delete bug with trailing whitespace

Change-Id: Ia48224a1a187a8ed6b0c9a3c72cac06f084a6fc8
improve bulk document

This a very small change which just tell users request url of bulk
delete request. In original docstrings, it just states the request
parameters, request body and request method but not request url.

Change-Id: I0bbc302a0e072910bb58e4814614d7f761433b10
Set path_info in sub_slo manifest GET requests

The new_req Request object created for fetching
nested sub_slo manifests does not have its
path_info set to the sub_slo path before being
passed to GETorHEAD_base.

The sub manifest GET works fine because
GETorHEAD_base uses its path argument
(not req.path) to set up its connection,
BUT if an exception is thrown,
GETorHEAD_base uses req.path to construct
the log message - so the exception log would
have the wrong path.

Fixes bug 1231872

Change-Id: I0f0f969958f814d8a7053440d9de4e50796169e4
Merge "Install libffi-dev in SAIO docs."
Merge "bulk delete bug with trailing whitespace"
Simplify object path when reporting SLO put errors

When reporting errors for SLO PUT requests, use the object path from the
manifest without the '/vrs/account' prefix. This is a continuation of
the same changes made for SLO/bulk delete requests in 6768d5b.

Change-Id: I40c90cccc1b7b5303d9f2b084dccb3be4f4448d8
Fedora 19 updates

Change-Id: I95138852e45aa7632218a7107e0e7ba1f6ef373c
Signed-off-by: Peter Portante <peter.portante@redhat.com>
Merge "Use created container in unit test"
Merge "Move location of HTTPException in swift_testing"
Merge "Fedora 19 updates"
Pool memcache connections

This creates a pool to each memcache server so that connections will not
grow without bound.  This also adds a proxy config
"max_memcache_connections" which can control how many connections are
available in the pool.

A side effect of the change is that we had to change the memcache calls
that used noreply, and instead wait for the result of the request.
Leaving with noreply could cause a race condition (specifically in
account auto create), due to one request calling `memcache.del(key)` and
then `memcache.get(key)` with a different pooled connection.  If the
delete didn't complete fast enough, the get would return the old value
before it was deleted, and thus believe that the account was not
autocreated.

ClaysMindExploded
DocImpact
Change-Id: I350720b7bba29e1453894d3d4105ac1ea232595b