)]}'
{"doc/user-guide/source/cli-swift-set-object-expiration.rst":[{"author":{"_account_id":10705,"name":"Darren Chan","email":"dazzachan@yahoo.com.au","username":"daz"},"change_message_id":"1a0413fb27b9f1f7831154cc1391f7c80aee42ed","unresolved":false,"context_lines":[{"line_number":2,"context_line":"Object expiration"},{"line_number":3,"context_line":"\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d"},{"line_number":4,"context_line":""},{"line_number":5,"context_line":"-  You can schedule Swift objects to expire by setting the ``X-Delete-At``"},{"line_number":6,"context_line":"   or ``X-Delete-After`` header."},{"line_number":7,"context_line":"   Once the object is deleted, Swift will no longer serve the object and"},{"line_number":8,"context_line":"   it will be deleted from the cluster shortly thereafter."},{"line_number":9,"context_line":""},{"line_number":10,"context_line":"-  Set an object to expire at an absolute time (Unix time):"},{"line_number":11,"context_line":""}],"source_content_type":"text/x-rst","patch_set":3,"id":"ba5201f7_c1940c46","line":8,"range":{"start_line":5,"start_character":0,"end_line":8,"end_character":58},"updated":"2017-01-10 01:33:13.000000000","message":"Change this from a bulleted list to introductory paragraph.","commit_id":"4f74247145f6c47658ecfefc44be83d983386adf"},{"author":{"_account_id":10897,"name":"Joseph Robinson","email":"josephremail@gmail.com","username":"RobiJoe"},"change_message_id":"7da0b89f2c2c253c7ad88f42ed488d45f03f6555","unresolved":false,"context_lines":[{"line_number":13,"context_line":""},{"line_number":14,"context_line":"      $ swift post CONTAINER OBJECT_FILENAME -H \"X-Delete-At:UNIX_TIME\""},{"line_number":15,"context_line":""},{"line_number":16,"context_line":"   .. note::"},{"line_number":17,"context_line":""},{"line_number":18,"context_line":"      You can get the current Unix time by running the following:"},{"line_number":19,"context_line":""}],"source_content_type":"text/x-rst","patch_set":3,"id":"ba5201f7_c90272b4","line":16,"updated":"2017-01-10 03:13:33.000000000","message":"One recommendation - add the note content as another sentence for the first step:\n\n Set and object to expire at an absolute time (in Unix time). You can get the current Unix time by running the ``date +\u0027%s\u0027`` command:","commit_id":"4f74247145f6c47658ecfefc44be83d983386adf"},{"author":{"_account_id":10607,"name":"Alexandra Settle","email":"a.settle@outlook.com","username":"asettle"},"change_message_id":"c0302d6ee0b62860f9aaa7bacef3be900dab3e22","unresolved":false,"context_lines":[{"line_number":2,"context_line":"Object expiration"},{"line_number":3,"context_line":"\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d"},{"line_number":4,"context_line":""},{"line_number":5,"context_line":"You can schedule Swift objects to expire by setting the ``X-Delete-At``"},{"line_number":6,"context_line":"or ``X-Delete-After`` header.  Once the object is deleted, Swift will"},{"line_number":7,"context_line":"no longer serve the object and it will be deleted from the cluster shortly"},{"line_number":8,"context_line":"thereafter."}],"source_content_type":"text/x-rst","patch_set":5,"id":"ba5201f7_afa99ce1","line":5,"range":{"start_line":5,"start_character":17,"end_line":5,"end_character":22},"updated":"2017-01-10 11:57:49.000000000","message":"lowercase \u0027s\u0027 for swift (project names). I would recommend using Object Storage (swift) - as such","commit_id":"e3871f240d9f5efba2d94ab1eedb5540014f6463"},{"author":{"_account_id":10607,"name":"Alexandra Settle","email":"a.settle@outlook.com","username":"asettle"},"change_message_id":"c0302d6ee0b62860f9aaa7bacef3be900dab3e22","unresolved":false,"context_lines":[{"line_number":3,"context_line":"\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d"},{"line_number":4,"context_line":""},{"line_number":5,"context_line":"You can schedule Swift objects to expire by setting the ``X-Delete-At``"},{"line_number":6,"context_line":"or ``X-Delete-After`` header.  Once the object is deleted, Swift will"},{"line_number":7,"context_line":"no longer serve the object and it will be deleted from the cluster shortly"},{"line_number":8,"context_line":"thereafter."},{"line_number":9,"context_line":""}],"source_content_type":"text/x-rst","patch_set":5,"id":"ba5201f7_0fb9c82e","line":6,"range":{"start_line":6,"start_character":29,"end_line":6,"end_character":31},"updated":"2017-01-10 11:57:49.000000000","message":"remove all double spaces after a period - single space only please","commit_id":"e3871f240d9f5efba2d94ab1eedb5540014f6463"},{"author":{"_account_id":10607,"name":"Alexandra Settle","email":"a.settle@outlook.com","username":"asettle"},"change_message_id":"c0302d6ee0b62860f9aaa7bacef3be900dab3e22","unresolved":false,"context_lines":[{"line_number":7,"context_line":"no longer serve the object and it will be deleted from the cluster shortly"},{"line_number":8,"context_line":"thereafter."},{"line_number":9,"context_line":""},{"line_number":10,"context_line":"-  Set an object to expire at an absolute time (in Unix time). You"},{"line_number":11,"context_line":"   can get the current Unix time by running ``date +\u0027%s\u0027``."},{"line_number":12,"context_line":""},{"line_number":13,"context_line":"   .. code-block:: console"}],"source_content_type":"text/x-rst","patch_set":5,"id":"ba5201f7_2f8dac7b","line":10,"range":{"start_line":10,"start_character":0,"end_line":10,"end_character":1},"updated":"2017-01-10 11:57:49.000000000","message":"* Use the asterisk as the dot point for consistency","commit_id":"e3871f240d9f5efba2d94ab1eedb5540014f6463"},{"author":{"_account_id":7233,"name":"Matthew Oliver","email":"matt@oliver.net.au","username":"mattoliverau"},"change_message_id":"8ef1d7715da993cc3de1f1bf63a06abaa75e742e","unresolved":false,"context_lines":[{"line_number":33,"context_line":""},{"line_number":34,"context_line":"      $ swift post CONTAINER OBJECT_FILENAME -H \"X-Delete-After:SECONDS\""},{"line_number":35,"context_line":""},{"line_number":36,"context_line":"   Verify the ``X-Delete-After`` header has posted to the object:"},{"line_number":37,"context_line":""},{"line_number":38,"context_line":"   .. code-block:: console"},{"line_number":39,"context_line":""}],"source_content_type":"text/x-rst","patch_set":5,"id":"ba5201f7_67b52d7d","line":36,"updated":"2017-01-10 05:36:20.000000000","message":"X-Delete-After on the Swift server side gets converted to an X-Delete-At (time() + after_seconds). So the resulting metadata after:\n\n  swift post CONTAINER OBJECT_FILENAME -H \"X-Delete-After:SECONDS\"\n\nwould be something like:\n\n  X-Delete-At: UNIX_TIME\n\nNot as an \u0027X-Delete-After\u0027.","commit_id":"e3871f240d9f5efba2d94ab1eedb5540014f6463"},{"author":{"_account_id":7233,"name":"Matthew Oliver","email":"matt@oliver.net.au","username":"mattoliverau"},"change_message_id":"8ef1d7715da993cc3de1f1bf63a06abaa75e742e","unresolved":false,"context_lines":[{"line_number":44,"context_line":""},{"line_number":45,"context_line":"   .. code-block:: console"},{"line_number":46,"context_line":""},{"line_number":47,"context_line":"      $ swift post CONTAINER OBJECT_FILENAME -H \"X-Remove-Delete-After:\""},{"line_number":48,"context_line":""},{"line_number":49,"context_line":".. note::"},{"line_number":50,"context_line":""}],"source_content_type":"text/x-rst","patch_set":5,"id":"ba5201f7_c7ac1938","line":47,"range":{"start_line":47,"start_character":49,"end_line":47,"end_character":71},"updated":"2017-01-10 05:36:20.000000000","message":"This does work however, because the middleware will remove an expiring object entry with both after and at.","commit_id":"e3871f240d9f5efba2d94ab1eedb5540014f6463"},{"author":{"_account_id":7233,"name":"Matthew Oliver","email":"matt@oliver.net.au","username":"mattoliverau"},"change_message_id":"8ef1d7715da993cc3de1f1bf63a06abaa75e742e","unresolved":false,"context_lines":[{"line_number":51,"context_line":"   In order for object expiration to work properly, the"},{"line_number":52,"context_line":"   ``swift-object-expirer`` daemon will need access to all backend"},{"line_number":53,"context_line":"   servers in the cluster. The daemon does not need access to the proxy-server"},{"line_number":54,"context_line":"   or public network."}],"source_content_type":"text/x-rst","patch_set":5,"id":"ba5201f7_67436d6d","line":54,"updated":"2017-01-10 05:36:20.000000000","message":"Just i note here, many deployments either have the object expirer running on all the object servers and I\u0027ve heard others that put it on the proxies.. I don\u0027t expect you to add a note about this, but just what I hear from deployers.\n\nAlso there is work upstream to change the way we manage expiring objects. The headers will be the same, but it would remove the need for an extra daemon.. but this could still be a few releases away. Just keeping y\u0027all in the loop.","commit_id":"e3871f240d9f5efba2d94ab1eedb5540014f6463"}]}
