swift/swift/obj
John Dickinson 156f27c921 object versioning
Object versioning in swift is implemented by setting a flag on the container
to tell swift to version all objects in the container. The flag is the
``X-Versions-Location`` header on the container, and its value is the
container where the versions are stored.

When data is ``PUT`` into a versioned container (a container with the
versioning flag turned on), the existing data in the file is redirected to a
new object and the data in the ``PUT`` request is saved as the data for the
versioned object. The new object name (for the previous version) is
``<versions_container>/<object_name>/<timestamp>``, where the timestamp is
generated by converting the ``Last-Modified`` header value of the current
version to a unix timestamp.

A ``GET`` to a versioned object will return the current version of the object
without having to do any request redirects or metadata lookups.

Change-Id: I4fcd723145e02bbb2ec1d3ad356713f5dea43b8b
2012-03-28 15:48:43 -05:00
..
__init__.py Initial commit of Swift code 2010-07-12 17:03:45 -05:00
auditor.py updated copyright date for all files 2012-03-19 13:45:34 -05:00
expirer.py Fixed url in ObjectExpirer.iter_objects(). 2012-03-26 15:56:38 +00:00
replicator.py Merge "Make ring class interface slightly more abstracted from implementation." 2012-03-22 20:25:06 +00:00
server.py object versioning 2012-03-28 15:48:43 -05:00
updater.py Merge "Only rewrite async-pending files if the data changed" 2012-03-26 09:39:17 +00:00