Refactor partition gathering.

RingBuilder._reassign_parts() is really moving one (partition,
replica) pair at a time. However, the way that _gather_reassign_parts
passes that data in was strange; it would update each replica's entry
in _replica2part2dev to 0xffff, then return a list of affected
partitions. Now it just returns the pairs to move.

This is helpful in the presence of bugs that affect partition
assignment (e.g. #943493), there's no chance of stray 0xffff values
hanging around and corrupting the partition map.

Also, update my email address.

Change-Id: Ifb3aeb4fac750f66e2ddbad88eb5846e72bac20c
Refactor how RingBuilder iterates over its devices.

There were a dozen or so different places in RingBuilder that were
iterating over self.devs and filtering out None; now there's just one.

Change-Id: If8d9b44efc083040932d876cd76a6d26e4a36ebc
Body of http responses included in Swift error msg

The body of http responses is included in error messages from
swift.common.client and bin/swift if the body exists

Includes changes requested by Juan Martinez

Includes changes requested by David Goetz

Fixed pep8 warnings

Bug 949843

Change-Id: Ib998280762b084dd46f8c0f4524eed20513de82b
Make tests work like they used to.

Change-Id: I081d853a90ad0efce5b7a20b52794ce3348a9617
Small change to staticweb with container reques...

Small change to staticweb with container requests. Before, a request
to a container that had no x-container-meta-web-index and no
x-container-meta-web-listings would pass the request on to the proxy
server, even if x-web-mode was set to true. Now, if x-web-mode is set
true, it will 404.

This mostly important to folks that are using staticweb with an
external service that uses authenticated requests and x-web-mode set
to true, in which case the above 404 previously would return the
container listing (you were authenticated after all). Unauthenticated
requests would have received 401s anyway.

Change-Id: Ifd321a8a076a79c1e119c5259a40bf08defdbe3c
Change CLIAuth arg names

Change the argument names used for common Keystone authentication per the
updated http://wiki.openstack.org/CLIAuth:

--auth_url -> --os_auth_url
--password -> --os_password
--username -> --os_username

Fixes bug 954528

Change-Id: I7e956e74de8192957eee87d155b2e5338c8942f0
add content-range headers to partial HTTP responses triggered by "Range:" requests as required by the HTTP protocol

The S3 layer should not filter out content-range response headers as they are part of the
protocol and expected on a partial response.

Change-Id: I2ae0775b5e039d1d505c44ec235ea32370dba1bc
Merge "Body of http responses included in Swift error msg"
Merge "Small change to staticweb with container reques..."
Make ring class interface slightly more abstracted from implementation.

Change-Id: I0f55d61c7b8de30460f17a69e5d9946494dbda6e
Merge "Change CLIAuth arg names"
Alternate meta header removal method.

Prior to this patch, you removed header metadata (such as
x-account-meta-name or x-container-meta-name) by sending the header
with no value. However, many tools such as curl will not send headers
with empty values.

This patch adds an alternate method for header metadata removal: Send
an x-remove-account-meta-name (x-remove-container-meta-name) header
with any value and the proxy will translate it to the original header
name with no value, indicating removal.

For safety, if you specify both x-remove-account-meta-name and
x-account-meta-name headers in the same request, the -remove header
will be ignored.

Change-Id: Ic220bec05a0e266db85fc8fa50011146ee886d9c
Merge "Refactor how RingBuilder iterates over its devices."
Update swift.common.client with bin/swift changes.

- Add auth version 2 to swift.common.client.
- Remove ununsed imports.
- Fix bug where auth_version should be a string.
- Add test for auth version 2.
- Allow to override the returns of http_connection for tests.
- Sync the passing of headers in bin/swift as well from client.
- Fixes bug 885011
- Previously it was review 3680 but abandoned.
- Address: Maru newby review.
- TODO: properly test auth_v1.

Change-Id: I579d8154828e892596fae9ab75f69d353f15e12c
Merge "Refactor partition gathering."
Merge "Alternate meta header removal method."
Added optional max_containers_per_account restr...

Added optional max_containers_per_account restriction. If set to a
positive value and if a client tries to perform a container PUT when
at or above the max_containers_per_acount cap, a 403 Forbidden will
be returned with an explanatory message.

This only restricts the proxy server, not any of the background
processes that might need to create containers (replication, for
instance). Also, the container count is cached for the proxy's
recheck_account_existence number of seconds. For these reasons, a
given account could exceed this cap before the 403 Forbidden
responses kick in and therefore this feature should be considered a
"soft" limit.

You may also add accounts to the proxy's max_containers_whitelist
setting to have accounts that ignore this cap.

Change-Id: I74e8fb152de5e78d070ed30006ad4e53f82c8376
Merge "Update swift.common.client with bin/swift changes."
PEP8 Fixes

Change-Id: Ibf5316e96b88088ecbc56fe1f6fa7541bc967d5f
Add venv commands to tox.ini.

The recent tox addition missed the general purpose that we use
for things like building docs and other arbitrary commands.

Change-Id: Ib195a78d084a170c5051906f619743def4dbfbea