Convert maximum length to integer in name_check

This patch converts maximum_length to integer in
name_check middleware if read from proxy-server.conf
file.

Change-Id: I28d66fd1b7ce56ca5540cb7189d084c36e063d43
Closes-Bug: 1372397
swift-drive-audit: pass logger to get_errors

Closes-Bug: #1379767
Change-Id: Ie8ec5e9ffb977ab39aedeb878e6aae9f0b62530b
Ssync does not replicate custom object headers

Closes-Bug: #1329093

Change-Id: Ie9d80089a38d7a9b3464c66237d4d2d23331ebd5
Fix bug with expirer and unicode

Looks like I wasn't careful enough last time i fixed this bug- this
is basically the same deal, just further down the line. What happens
without this bug fix is you upload a object with a unicode name and
a x-delete-after header and when it does expire the customer object
gets removed but the expirer marker object doesn't.

Change-Id: I82359c87a0919d71693e49ecf08e0f1eedc9d18e
Fix rebalance crash post-2.1.0 upgrade.

If you had a builder file from an earlier version of Swift (before
6d77c37) and you attempted to rebalance it with a new version of Swift
(after 6d77c37, before this commit), you could get a crash.

Commit 6d77c37 changed the calculation for parts_wanted slightly
(round up instead of round down), so if a rebalance is attempted
without recomputing parts_wanted, then swift-ring-builder crashes.

The crash only occurs if the first command run is "rebalance". Adding
a device, removing a device, changing a device's weight, or changing
replica count (basically, anything that gives you a reason to
rebalance) will all cause parts_wanted to be recalculated, so
subsequent rebalances will succeed.

Change-Id: I6f7a69701f74546a00d3183aa7763e9e708408c9
Some assignment statements are redundant

Don't need to initialize with false, only determine true conditional
directly.

Closes-Bug: 1379149

Change-Id: I8685896b8dd9f7008b8b2311a2ad2a56c95a8bc6
Merge "swift-drive-audit: pass logger to get_errors"
Merge "Ssync does not replicate custom object headers"
Merge "Some assignment statements are redundant"
Merge "Convert maximum length to integer in name_check"
use replication_ip in ssync

Update ssync_sender to use replication_ip and replication_port from the ring.

Those attributes are supposed to allow for a separate replication network, and
are used by rsync replication.

Change-Id: Ib4cc3cbc1503b85dfdfa0edab58a49c95eac5993
Merge "Fix bug with expirer and unicode"
Change default keystone auth version to 3 in test/sample.conf

The functional tests devstack gate job currently skips tests
that require keystone v3 API. In conjunction with changes to
devstack [0] this patch will cause the gate job to use keystone
v3 API and stop skipping those tests.

Devstack sets auth version in its /etc/swift/test.conf by
uncommenting the value found in test/sample.conf, so the change
in this patch is sufficient to cause the v3 API to be used.

The devstack patch [0] sets the correct auth url for the v3 API
and creates a fourth test account that is required for the
currently skipped tests to run.

[0] change id I557de01bf196075f2f3adcdf4dd1b43756d8a0ae

Change-Id: I44e159b939f5e3fc3780612823d12262013ea793
Update Getting Started requirements versions

These docs currently say we target ubuntu 10.04 and an eventlet version
that our requirements file does not allow. Update these versions.

Change-Id: I052b6561f88ec90f865454e426032f1baf4586c0
Mention Python 2.7 in Getting Started guide

Change-Id: I2992d1227f294d4cb1c6a8676137df44e231bd80
reject problematic object names

We had this problem:

    >> : x = '\xed\xa0\xbc\xed\xbc\xb8'
    >> : x == x.decode('utf-8').encode('utf-8')
    << : False

That str contains two utf-8 codepoints, which I guess python is normalizing
into one unicode character, which it then encodes as one utf-8 codepoint.
Like this:

    >> : u'\ud83c\udf38'
    << : u'\U0001f338'

I don't entirely understand that, but having a different byte representation
after round-tripping through unicode causes problems with replication and
listings.

This patch just rejects anything that doesn't re-encode to the same thing.
If someone smarter wants to do something different, please speak up.

Change-Id: I9ac48ac2693e4121be6585c6e4f5d0079e9bb3e4
Handle os.listdir failures in container-updater

While investigating bug 1375348 I discovered the problem
reported there was not limited to the object-auditor.  The
container-updated has similar bugs.

This patch catches the unhandled exception that can be thrown by
os.listdir.

Change-Id: I7eed122bf6b663e6e7894ace136b6f4653db4985
Related-bug: 1375348
Update admin guide on handling drive failures

Simply replacing a failed disk requires a very long time if the ring is not
changed, because all data will be replicated to a single new disk. This extends
the time to recover from missing replicas, and becomes even more important with
bigger disks.

This patch updates the doc to include a faster alternative by setting the weight
of a failed disk to 0.  In this case the partitions from the failed disk are
distributed and replicated to the remaining disks in the cluster, and because
each disk gets only a fraction of the partitions it's also much faster.

Change-Id: I16617756359771ad89ca5d4690b58a014f481d9b
Return verbose message if account quota exceeded

This message is already used in the container quota middleware, so let's use it
in the account middleware too.

Change-Id: I136fe6102c28cc8ccc021555c42ec7b0be716444
Closes-Bug: 1381875
Merge "reject problematic object names"