Browse Source

Merge branch 'master' into 'feature/hummingbird'

Change-Id: I7cfe7d6a20966e71c7fd3620ef772d5d3f01a27f
changes/85/400985/1
John Dickinson 3 years ago
parent
commit
0c3f8f8710
100 changed files with 3096 additions and 1150 deletions
  1. +2
    -13
      .alltests
  2. +0
    -1
      .functests
  3. +3
    -0
      .mailmap
  4. +277
    -250
      AUTHORS
  5. +121
    -0
      CHANGELOG
  6. +1
    -1
      REVIEW_GUIDELINES.rst
  7. +17
    -27
      api-ref/source/conf.py
  8. +5
    -3
      api-ref/source/index.rst
  9. +6
    -0
      api-ref/source/metadata_header_encoding.inc
  10. +7
    -0
      api-ref/source/metadata_header_syntax.inc
  11. +367
    -222
      api-ref/source/parameters.yaml
  12. +1
    -1
      api-ref/source/samples/account-containers-list-http-request-json.txt
  13. +1
    -2
      api-ref/source/samples/account-containers-list-http-request-xml.txt
  14. +2
    -1
      api-ref/source/samples/account-containers-list-http-response-json.txt
  15. +2
    -1
      api-ref/source/samples/account-containers-list-http-response-xml.txt
  16. +5
    -0
      api-ref/source/samples/capabilities-list-response.json
  17. +2
    -1
      api-ref/source/samples/objects-list-http-response-json.txt
  18. +2
    -1
      api-ref/source/samples/objects-list-http-response-xml.txt
  19. +94
    -107
      api-ref/source/storage-account-services.inc
  20. +110
    -65
      api-ref/source/storage-container-services.inc
  21. +127
    -74
      api-ref/source/storage-object-services.inc
  22. +5
    -0
      api-ref/source/storage_info.inc
  23. +151
    -143
      bandit.yaml
  24. +1
    -1
      bin/swift-account-audit
  25. +2
    -1
      bin/swift-drive-audit
  26. +10
    -55
      bin/swift-temp-url
  27. +1
    -1
      doc/manpages/account-server.conf.5
  28. +1
    -1
      doc/manpages/container-server.conf.5
  29. +1
    -1
      doc/manpages/object-server.conf.5
  30. +11
    -3
      doc/manpages/proxy-server.conf.5
  31. +63
    -0
      doc/manpages/swift-account-audit.1
  32. +11
    -2
      doc/manpages/swift-account-info.1
  33. +51
    -0
      doc/manpages/swift-config.1
  34. +11
    -2
      doc/manpages/swift-container-info.1
  35. +58
    -0
      doc/manpages/swift-container-reconciler.1
  36. +38
    -0
      doc/manpages/swift-drive-audit.1
  37. +67
    -0
      doc/manpages/swift-form-signature.1
  38. +30
    -2
      doc/manpages/swift-get-nodes.1
  39. +17
    -2
      doc/manpages/swift-object-info.1
  40. +60
    -0
      doc/manpages/swift-object-reconstructor.1
  41. +38
    -0
      doc/manpages/swift-recon-cron.1
  42. +58
    -0
      doc/manpages/swift-reconciler-enqueue.1
  43. +52
    -0
      doc/manpages/swift-ring-builder-analyzer.1
  44. +56
    -0
      doc/manpages/swift-temp-url.1
  45. +213
    -0
      doc/manpages/swift.conf.5
  46. +2
    -0
      doc/saio/bin/remakerings
  47. +6
    -2
      doc/saio/bin/resetswift
  48. +3
    -1
      doc/saio/bin/startmain
  49. +3
    -1
      doc/saio/bin/startrest
  50. +4
    -2
      doc/source/admin_guide.rst
  51. +7
    -1
      doc/source/api/large_objects.rst
  52. +3
    -3
      doc/source/api/object_api_v1_overview.rst
  53. +43
    -23
      doc/source/api/object_versioning.rst
  54. +1
    -0
      doc/source/api/use_the_content-disposition_metadata.rst
  55. +2
    -0
      doc/source/associated_projects.rst
  56. +2
    -1
      doc/source/cors.rst
  57. +1
    -1
      doc/source/deployment_guide.rst
  58. +6
    -2
      doc/source/development_middleware.rst
  59. +1
    -1
      doc/source/index.rst
  60. +1
    -1
      doc/source/ops_runbook/troubleshooting.rst
  61. +7
    -5
      doc/source/overview_architecture.rst
  62. +65
    -2
      doc/source/overview_auth.rst
  63. +18
    -7
      doc/source/overview_container_sync.rst
  64. +101
    -65
      doc/source/overview_erasure_code.rst
  65. +4
    -0
      doc/source/overview_large_objects.rst
  66. +1
    -0
      doc/source/policies_saio.rst
  67. +1
    -1
      etc/account-server.conf-sample
  68. +1
    -1
      etc/container-server.conf-sample
  69. +3
    -0
      etc/drive-audit.conf-sample
  70. +1
    -1
      etc/object-server.conf-sample
  71. +30
    -5
      etc/proxy-server.conf-sample
  72. +3
    -2
      install-guide/source/conf.py
  73. +1
    -1
      install-guide/source/controller-install-debian.rst
  74. +1
    -1
      install-guide/source/controller-install-rdo.rst
  75. +1
    -1
      install-guide/source/controller-install-ubuntu.rst
  76. +1
    -1
      install-guide/source/finalize-installation-rdo.rst
  77. +1
    -1
      install-guide/source/finalize-installation-ubuntu-debian.rst
  78. +3
    -3
      install-guide/source/storage-install-rdo.rst
  79. +3
    -3
      install-guide/source/storage-install-ubuntu-debian.rst
  80. +1
    -3
      install-guide/source/verify.rst
  81. +59
    -0
      releasenotes/notes/2_10_0_release-666a76f4975657a5.yaml
  82. +54
    -0
      releasenotes/notes/2_11_0_release-ac1d256e455d347e.yaml
  83. +345
    -0
      releasenotes/source/conf.py
  84. +5
    -0
      releasenotes/source/current.rst
  85. +10
    -0
      releasenotes/source/index.rst
  86. +6
    -0
      releasenotes/source/newton.rst
  87. +1
    -1
      requirements.txt
  88. +6
    -4
      swift/account/backend.py
  89. +16
    -8
      swift/cli/recon.py
  90. +6
    -3
      swift/cli/ringbuilder.py
  91. +1
    -1
      swift/common/constraints.py
  92. +1
    -1
      swift/common/container_sync_realms.py
  93. +2
    -2
      swift/common/daemon.py
  94. +3
    -1
      swift/common/header_key_dict.py
  95. +6
    -1
      swift/common/internal_client.py
  96. +76
    -0
      swift/common/linkat.py
  97. +1
    -1
      swift/common/manager.py
  98. +1
    -1
      swift/common/middleware/acl.py
  99. +2
    -0
      swift/common/middleware/catch_errors.py
  100. +5
    -0
      swift/common/middleware/container_sync.py

+ 2
- 13
.alltests View File

@@ -1,33 +1,22 @@
#!/bin/bash

set -e

TOP_DIR=$(python -c "import os; print os.path.dirname(os.path.realpath('$0'))")

echo "==== Unit tests ===="
resetswift
$TOP_DIR/.unittests $@
rvalue=$?
if [ $rvalue != 0 ] ; then
exit $rvalue
fi

echo "==== Func tests ===="
resetswift
startmain
$TOP_DIR/.functests $@
rvalue=$?
if [ $rvalue != 0 ] ; then
exit $rvalue
fi

echo "==== Probe tests ===="
resetswift
$TOP_DIR/.probetests $@
rvalue=$?
if [ $rvalue != 0 ] ; then
exit $rvalue
fi

echo "All tests runs fine"

exit 0


+ 0
- 1
.functests View File

@@ -4,7 +4,6 @@
# SWIFT_TEST_IN_PROCESS=1 tox -e func -- --pdb test.functional.tests.TestFile.testCopy

SRC_DIR=$(python -c "import os; print os.path.dirname(os.path.realpath('$0'))")
set -e

cd ${SRC_DIR}
export TESTS_DIR=${SRC_DIR}/test/functional

+ 3
- 0
.mailmap View File

@@ -109,3 +109,6 @@ Kato Tomoyuki <kato.tomoyuki@jp.fujitsu.com>
Liang Jingtao <liang.jingtao@zte.com.cn>
Yu Yafei <yu.yafei@zte.com.cn>
Zheng Yao <zheng.yao1@zte.com.cn>
Paul Dardeau <paul.dardeau@intel.com> <pauldardeau@gmail.com>
Cheng Li <shcli@cn.ibm.com>
Nandini Tata <nandini.tata@intel.com> <nandini.tata.15@gmail.com>

+ 277
- 250
AUTHORS View File

@@ -26,290 +26,317 @@ Chuck Thier (cthier@gmail.com)

Contributors
------------
Mehdi Abaakouk (sileht@redhat.com)
Nelson Almeida (nelsonmarcos@gmail.com)
Timur Alperovich (timur.alperovich@gmail.com)
Jesse Andrews (anotherjesse@gmail.com)
Joe Arnold (joe@swiftstack.com)
Ionuț Arțăriși (iartarisi@suse.cz)
Minwoo Bae (minwoob@us.ibm.com)
Aaron Rosen (arosen@nicira.com)
Adrian Smith (adrian_f_smith@dell.com)
Akihito Takai (takaiak@nttdata.co.jp)
Alex Gaynor (alex.gaynor@gmail.com)
Alex Holden (alex@alexjonasholden.com)
Alex Pecoraro (alex.pecoraro@emc.com)
Alex Yang (alex890714@gmail.com)
Alexandra Settle (alexandra.settle@rackspace.com)
Alfredo Moralejo (amoralej@redhat.com)
Alistair Coles (alistair.coles@hpe.com)
Andreas Jaeger (aj@suse.de)
Andrew Clay Shafer (acs@parvuscaptus.com)
Andrew Hale (andy@wwwdata.eu)
Andrew Welleck (awellec@us.ibm.com)
Andy McCrae (andy.mccrae@gmail.com)
Anh Tran (anhtt@vn.fujitsu.com)
Ankur Gupta (ankur.gupta@intel.com)
Anne Gentle (anne@openstack.org)
Arnaud JOST (arnaud.jost@ovh.net)
Atsushi Sakai (sakaia@jp.fujitsu.com)
Azhagu Selvan SP (tamizhgeek@gmail.com)
Ben Keller (bjkeller@us.ibm.com)
Ben Martin (blmartin@us.ibm.com)
Bill Huber (wbhuber@us.ibm.com)
Bob Ball (bob.ball@citrix.com)
Christopher Bartz (bartz@dkrz.de)
Christian Berendt (berendt@b1-systems.de)
Luis de Bethencourt (luis@debethencourt.com)
Keshava Bharadwaj (kb.sankethi@gmail.com)
Yummy Bian (yummy.bian@gmail.com)
Darrell Bishop (darrell@swiftstack.com)
James E. Blair (jeblair@openstack.org)
Fabien Boucher (fabien.boucher@enovance.com)
Clark Boylan (clark.boylan@gmail.com)
Pádraig Brady (pbrady@redhat.com)
Lorcan Browne (lorcan.browne@hpe.com)
Russell Bryant (rbryant@redhat.com)
Jay S. Bryant (jsbryant@us.ibm.com)
Tim Burke (tim.burke@gmail.com)
Brent Roskos (broskos@internap.com)
Brian Cline (bcline@softlayer.com)
Brian Curtin (brian.curtin@rackspace.com)
Brian D. Burns (iosctr@gmail.com)
Félix Cantournet (felix.cantournet@cloudwatt.com)
Devin Carlen (devin.carlen@gmail.com)
Thierry Carrez (thierry@openstack.org)
Brian K. Jones (bkjones@gmail.com)
Brian Ober (bober@us.ibm.com)
Brian Reitz (brian.reitz@oracle.com)
Bryan Keller (kellerbr@us.ibm.com)
Béla Vancsics (vancsics@inf.u-szeged.hu)
Caleb Tennis (caleb.tennis@gmail.com)
Carlos Cavanna (ccavanna@ca.ibm.com)
Emmanuel Cazenave (contact@emcaz.fr)
Mahati Chamarthy (mahati.chamarthy@gmail.com)
Zap Chang (zapchang@gmail.com)
François Charlier (francois.charlier@enovance.com)
Catherine Northcott (catherine@northcott.nz)
Cedric Dos Santos (cedric.dos.sant@gmail.com)
Changbin Liu (changbin.liu@gmail.com)
ChangBo Guo(gcb) (eric.guo@easystack.cn)
Chaozhe Chen (chaozhe.chen@easystack.cn)
Ray Chen (oldsharp@163.com)
Harshit Chitalia (harshit@acelio.com)
Brian Cline (bcline@softlayer.com)
Alistair Coles (alistair.coles@hpe.com)
Charles Hsu (charles0126@gmail.com)
Cheng Li (shcli@cn.ibm.com)
Chris Wedgwood (cw@f00f.org)
Christian Berendt (berendt@b1-systems.de)
Christian Hugo (hugo.christian@web.de)
Christian Schwede (cschwede@redhat.com)
Christopher Bartz (bartz@dkrz.de)
Christopher MacGown (chris@pistoncloud.com)
Chuck Short (chuck.short@canonical.com)
Clark Boylan (clark.boylan@gmail.com)
Clay Gerrard (clay.gerrard@gmail.com)
Clément Contini (ccontini@cloudops.com)
Brian Curtin (brian.curtin@rackspace.com)
Thiago da Silva (thiago@redhat.com)
dangming (dangming@unitedstack.com)
Julien Danjou (julien@danjou.info)
Paul Dardeau (paul.dardeau@intel.com)
Zack M. Davis (zdavis@swiftstack.com)
Ksenia Demina (kdemina@mirantis.com)
Colin Nicholson (colin.nicholson@iomart.com)
Conrad Weidenkeller (conrad.weidenkeller@rackspace.com)
Constantine Peresypkin (constantine.peresypk@rackspace.com)
Cory Wright (cory.wright@rackspace.com)
Cristian A Sanchez (cristian.a.sanchez@intel.com)
Dae S. Kim (dae@velatum.com)
Daisuke Morita (morita.daisuke@ntti3.com)
Dan Dillinger (dan.dillinger@sonian.net)
Cedric Dos Santos (cedric.dos.sant@gmail.com)
Gerry Drudy (gerry.drudy@hpe.com)
Morgan Fainberg (morgan.fainberg@gmail.com)
ZhiQiang Fan (aji.zqfan@gmail.com)
Oshrit Feder (oshritf@il.ibm.com)
Mike Fedosin (mfedosin@mirantis.com)
Ricardo Ferreira (ricardo.sff@gmail.com)
Flaper Fesp (flaper87@gmail.com)
Tom Fifield (tom@openstack.org)
Florent Flament (florent.flament-ext@cloudwatt.com)
Gaurav B. Gangalwar (gaurav@gluster.com)
Jiangmiao Gao (tolbkni@gmail.com)
Alex Gaynor (alex.gaynor@gmail.com)
Martin Geisler (martin@geisler.net)
Anne Gentle (anne@openstack.org)
Clay Gerrard (clay.gerrard@gmail.com)
Filippo Giunchedi (fgiunchedi@wikimedia.org)
Mark Gius (launchpad@markgius.com)
Dan Hersam (dan.hersam@hp.com)
Dan Prince (dprince@redhat.com)
dangming (dangming@unitedstack.com)
Daniele Valeriani (daniele@dvaleriani.net)
Darrell Bishop (darrell@swiftstack.com)
David Goetz (david.goetz@rackspace.com)
Tushar Gohad (tushar.gohad@intel.com)
Thomas Goirand (thomas@goirand.fr)
Jonathan Gonzalez V (jonathan.abdiel@gmail.com)
Joe Gordon (jogo@cloudscaling.com)
Shashirekha Gundur (shashirekha.j.gundur@intel.com)
ChangBo Guo(gcb) (eric.guo@easystack.cn)
Zhang Guoqing (zhang.guoqing@99cloud.net)
Ankur Gupta (ankur.gupta@intel.com)
David Hadas (davidh@il.ibm.com)
Andrew Hale (andy@wwwdata.eu)
Soren Hansen (soren@linux2go.dk)
Richard Hawkins (richard.hawkins@rackspace.com)
Gregory Haynes (greg@greghaynes.net)
Doug Hellmann (doug.hellmann@dreamhost.com)
Dan Hersam (dan.hersam@hp.com)
hgangwx (hgangwx@cn.ibm.com)
David Liu (david.liu@cn.ibm.com)
David Moreau Simard (dmsimard@iweb.com)
Dean Troyer (dtroyer@gmail.com)
Denis V. Meltsaykin (dmeltsaykin@mirantis.com)
Derek Higgins (derekh@redhat.com)
Jonathan Hinson (jlhinson@us.ibm.com)
Alex Holden (alex@alexjonasholden.com)
Devin Carlen (devin.carlen@gmail.com)
Dharmendra Kushwaha (dharmendra.kushwaha@nectechnologies.in)
Dhriti Shikhar (dhrish20@gmail.com)
Dieter Plaetinck (dieter@vimeo.com)
Dirk Mueller (dirk@dmllr.de)
Dmitriy Ukhlov (dukhlov@mirantis.com)
Dmitry Ukov (dukov@mirantis.com)
Dolph Mathews (dolph.mathews@gmail.com)
Donagh McCabe (donagh.mccabe@hpe.com)
Doron Chen (cdoron@il.ibm.com)
Doug Hellmann (doug.hellmann@dreamhost.com)
Doug Weimer (dweimer@gmail.com)
Dragos Manolescu (dragosm@hp.com)
Eamonn O'Toole (eamonn.otoole@hpe.com)
Ed Leafe (ed.leafe@rackspace.com)
Edward Hope-Morley (opentastic@gmail.com)
Ellen Leahy (ellen.mar.leahy@hpe.com)
Emett Speer (speer.emett@gmail.com)
Emile Snyder (emile.snyder@gmail.com)
Emmanuel Cazenave (contact@emcaz.fr)
Eohyung Lee (liquidnuker@gmail.com)
Eran Rom (eranr@il.ibm.com)
Eugene Kirpichov (ekirpichov@gmail.com)
Ewan Mellor (ewan.mellor@citrix.com)
Fabien Boucher (fabien.boucher@enovance.com)
Falk Reimann (falk.reimann@sap.com)
Felipe Reyes (freyes@tty.cl)
Ferenc Horváth (hferenc@inf.u-szeged.hu)
Charles Hsu (charles0126@gmail.com)
Joanna H. Huang (joanna.huitzu.huang@gmail.com)
Kun Huang (gareth@unitedstack.com)
Bill Huber (wbhuber@us.ibm.com)
Filippo Giunchedi (fgiunchedi@wikimedia.org)
Flaper Fesp (flaper87@gmail.com)
Florent Flament (florent.flament-ext@cloudwatt.com)
François Charlier (francois.charlier@enovance.com)
Fujita Tomonori (fujita.tomonori@lab.ntt.co.jp)
Félix Cantournet (felix.cantournet@cloudwatt.com)
Gage Hugo (gh159m@att.com)
Matthieu Huin (mhu@enovance.com)
Hodong Hwang (hodong.hwang@kt.com)
Motonobu Ichimura (motonobu@gmail.com)
Andreas Jaeger (aj@suse.de)
Shri Javadekar (shrinand@maginatics.com)
Iryoung Jeong (iryoung@gmail.com)
Paul Jimenez (pj@place.org)
Liang Jingtao (liang.jingtao@zte.com.cn)
Zhang Jinnan (ben.os@99cloud.net)
Jason Johnson (jajohnson@softlayer.com)
Brian K. Jones (bkjones@gmail.com)
Arnaud JOST (arnaud.jost@ovh.net)
Kiyoung Jung (kiyoung.jung@kt.com)
Ganesh Maharaj Mahalingam (ganesh.mahalingam@intel.com)
Gaurav B. Gangalwar (gaurav@gluster.com)
gecong1973 (ge.cong@zte.com.cn)
gengchc2 (geng.changcai2@zte.com.cn)
Gerry Drudy (gerry.drudy@hpe.com)
Gil Vernik (gilv@il.ibm.com)
Gonéri Le Bouder (goneri.lebouder@enovance.com)
Graham Hayes (graham.hayes@hpe.com)
Gregory Haynes (greg@greghaynes.net)
Guang Yee (guang.yee@hpe.com)
Gábor Antal (antal@inf.u-szeged.hu)
Ha Van Tu (tuhv@vn.fujitsu.com)
Hamdi Roumani (roumani@ca.ibm.com)
Hanxi Liu (hanxi.liu@easystack.cn)
Harshada Mangesh Kakad (harshadak@metsi.co.uk)
Takashi Kajinami (kajinamit@nttdata.co.jp)
Matt Kassawara (mkassawara@gmail.com)
Morita Kazutaka (morita.kazutaka@gmail.com)
Josh Kearney (josh@jk0.org)
Ben Keller (bjkeller@us.ibm.com)
Bryan Keller (kellerbr@us.ibm.com)
Harshit Chitalia (harshit@acelio.com)
hgangwx (hgangwx@cn.ibm.com)
Hisashi Osanai (osanai.hisashi@jp.fujitsu.com)
Hodong Hwang (hodong.hwang@kt.com)
Hou Ming Wang (houming.wang@easystack.cn)
houweichao (houwch@gohighsec.com)
Hua Zhang (zhuadl@cn.ibm.com)
Hugo Kuo (tonytkdk@gmail.com)
Ilya Kharin (ikharin@mirantis.com)
Dae S. Kim (dae@velatum.com)
Nathan Kinder (nkinder@redhat.com)
Eugene Kirpichov (ekirpichov@gmail.com)
Leah Klearman (lklrmn@gmail.com)
Martin Kletzander (mkletzan@redhat.com)
Ionuț Arțăriși (iartarisi@suse.cz)
Iryoung Jeong (iryoung@gmail.com)
Jaivish Kothari (jaivish.kothari@nectechnologies.in)
Petr Kovar (pkovar@redhat.com)
Steve Kowalik (steven@wedontsleep.org)
Sergey Kraynev (skraynev@mirantis.com)
Sushil Kumar (sushil.kumar2@globallogic.com)
Madhuri Kumari (madhuri.rai07@gmail.com)
Yatin Kumbhare (yatinkumbhare@gmail.com)
Dharmendra Kushwaha (dharmendra.kushwaha@nectechnologies.in)
Hugo Kuo (tonytkdk@gmail.com)
Tin Lam (tl3438@att.com)
Steven Lang (Steven.Lang@hgst.com)
Gonéri Le Bouder (goneri.lebouder@enovance.com)
Romain Le Disez (romain.ledisez@ovh.net)
John Leach (john@johnleach.co.uk)
Ed Leafe (ed.leafe@rackspace.com)
Thomas Leaman (thomas.leaman@hp.com)
Eohyung Lee (liquidnuker@gmail.com)
Zhao Lei (zhaolei@cn.fujitsu.com)
James E. Blair (jeblair@openstack.org)
James Page (james.page@ubuntu.com)
Jamie Lennox (jlennox@redhat.com)
Cheng Li (shcli@cn.ibm.com)
Mingyu Li (li.mingyu@99cloud.net)
Tong Li (litong01@us.ibm.com)
Ke Liang (ke.liang@easystack.cn)
Peter Lisak (peter.lisak@firma.seznam.cz)
David Liu (david.liu@cn.ibm.com)
Changbin Liu (changbin.liu@gmail.com)
Janie Richling (jrichli@us.ibm.com)
Jason Johnson (jajohnson@softlayer.com)
Jay S. Bryant (jsbryant@us.ibm.com)
Jeremy Stanley (fungi@yuggoth.org)
Jesse Andrews (anotherjesse@gmail.com)
Jian Zhang (jian.zhang@intel.com)
Jiangmiao Gao (tolbkni@gmail.com)
Jing Liuqing (jing.liuqing@99cloud.net)
Victor Lowther (victor.lowther@gmail.com)
Sergey Lukjanov (slukjanov@mirantis.com)
Zhongyue Luo (zhongyue.nah@intel.com)
Paul Luse (paul.e.luse@intel.com)
Christopher MacGown (chris@pistoncloud.com)
Ganesh Maharaj Mahalingam (ganesh.mahalingam@intel.com)
Maria Malyarova (savoreux69@gmail.com)
Dragos Manolescu (dragosm@hp.com)
Ben Martin (blmartin@us.ibm.com)
Steve Martinelli (stevemar@ca.ibm.com)
Joanna H. Huang (joanna.huitzu.huang@gmail.com)
Joe Arnold (joe@swiftstack.com)
Joe Gordon (jogo@cloudscaling.com)
John Leach (john@johnleach.co.uk)
Jola Mirecka (jola.mirecka@hp.com)
Jon Snitow (otherjon@swiftstack.com)
Jonathan Gonzalez V (jonathan.abdiel@gmail.com)
Jonathan Hinson (jlhinson@us.ibm.com)
Josh Kearney (josh@jk0.org)
Juan J. Martinez (juan@memset.com)
Marcelo Martins (btorch@gmail.com)
Nakagawa Masaaki (nakagawamsa@nttdata.co.jp)
Dolph Mathews (dolph.mathews@gmail.com)
Tomas Matlocha (tomas.matlocha@firma.seznam.cz)
Julien Danjou (julien@danjou.info)
Kai Zhang (zakir.exe@gmail.com)
Kapil Thangavelu (kapil.foss@gmail.com)
karen chan (karen@karen-chan.com)
Kato Tomoyuki (kato.tomoyuki@jp.fujitsu.com)
Kazuhiro Miyahara (miyahara.kazuhiro@lab.ntt.co.jp)
Ke Liang (ke.liang@easystack.cn)
Kenichiro Matsuda (matsuda_kenichi@jp.fujitsu.com)
Keshava Bharadwaj (kb.sankethi@gmail.com)
Kiyoung Jung (kiyoung.jung@kt.com)
Koert van der Veer (koert@cloudvps.com)
Kota Tsuyuzaki (tsuyuzaki.kota@lab.ntt.co.jp)
Ksenia Demina (kdemina@mirantis.com)
Kun Huang (gareth@unitedstack.com)
Larry Rensing (lr699s@att.com)
Leah Klearman (lklrmn@gmail.com)
Li Riqiang (lrqrun@gmail.com)
Liang Jingtao (liang.jingtao@zte.com.cn)
Lin Yang (lin.a.yang@intel.com)
Liu Siqi (meizu647@gmail.com)
liujiong (liujiong@gohighsec.com)
Lokesh S (lokesh.s@hp.com)
Lorcan Browne (lorcan.browne@hpe.com)
Luis de Bethencourt (luis@debethencourt.com)
Luong Anh Tuan (tuanla@vn.fujitsu.com)
Madhuri Kumari (madhuri.rai07@gmail.com)
Mahati Chamarthy (mahati.chamarthy@gmail.com)
maoshuai (fwsakura@163.com)
Marcelo Martins (btorch@gmail.com)
Maria Malyarova (savoreux69@gmail.com)
Mark Gius (launchpad@markgius.com)
Mark Seger (mark.seger@hpe.com)
Martin Geisler (martin@geisler.net)
Martin Kletzander (mkletzan@redhat.com)
Maru Newby (mnewby@internap.com)
Matt Kassawara (mkassawara@gmail.com)
Matt Riedemann (mriedem@us.ibm.com)
Matthew Oliver (matt@oliver.net.au)
Matthieu Huin (mhu@enovance.com)
Mauro Stettler (mauro.stettler@gmail.com)
Mehdi Abaakouk (sileht@redhat.com)
Michael Matur (michael.matur@gmail.com)
Donagh McCabe (donagh.mccabe@hpe.com)
Andy McCrae (andy.mccrae@gmail.com)
Paul McMillan (paul.mcmillan@nebula.com)
Ewan Mellor (ewan.mellor@citrix.com)
Denis V. Meltsaykin (dmeltsaykin@mirantis.com)
Samuel Merritt (sam@swiftstack.com)
Stephen Milton (milton@isomedia.com)
Jola Mirecka (jola.mirecka@hp.com)
Kazuhiro Miyahara (miyahara.kazuhiro@lab.ntt.co.jp)
Alfredo Moralejo (amoralej@redhat.com)
Daisuke Morita (morita.daisuke@ntti3.com)
Michael Shuler (mshuler@gmail.com)
Mike Fedosin (mfedosin@mirantis.com)
Mingyu Li (li.mingyu@99cloud.net)
Minwoo Bae (minwoob@us.ibm.com)
Mitsuhiro SHIGEMATSU (shigematsu.mitsuhiro@lab.ntt.co.jp)
Mohit Motiani (mohit.motiani@intel.com)
Dirk Mueller (dirk@dmllr.de)
Takashi Natsume (natsume.takashi@lab.ntt.co.jp)
Russ Nelson (russ@crynwr.com)
Maru Newby (mnewby@internap.com)
Monty Taylor (mordred@inaugust.com)
Morgan Fainberg (morgan.fainberg@gmail.com)
Morita Kazutaka (morita.kazutaka@gmail.com)
Motonobu Ichimura (motonobu@gmail.com)
Nakagawa Masaaki (nakagawamsa@nttdata.co.jp)
Nakul Dahiwade (nakul.dahiwade@intel.com)
Nam Nguyen Hoai (namnh@vn.fujitsu.com)
Nandini Tata (nandini.tata@intel.com)
Nathan Kinder (nkinder@redhat.com)
Nelson Almeida (nelsonmarcos@gmail.com)
Newptone (xingchao@unitedstack.com)
Colin Nicholson (colin.nicholson@iomart.com)
Zhenguo Niu (zhenguo@unitedstack.com)
Catherine Northcott (catherine@northcott.nz)
Nguyen Hung Phuong (phuongnh@vn.fujitsu.com)
Nguyen Phuong An (AnNP@vn.fujitsu.com)
Nicolas Helgeson (nh202b@att.com)
Nicolas Trangez (ikke@nicolast.be)
Ning Zhang (ning@zmanda.com)
Nirmal Thacker (nirmalthacker@gmail.com)
npraveen35 (npraveen35@gmail.com)
Olga Saprycheva (osapryc@us.ibm.com)
Ondrej Novy (ondrej.novy@firma.seznam.cz)
Brian Ober (bober@us.ibm.com)
Timothy Okwii (tokwii@cisco.com)
Matthew Oliver (matt@oliver.net.au)
Hisashi Osanai (osanai.hisashi@jp.fujitsu.com)
Eamonn O'Toole (eamonn.otoole@hpe.com)
Or Ozeri (oro@il.ibm.com)
James Page (james.page@ubuntu.com)
Prashanth Pai (ppai@redhat.com)
Venkateswarlu Pallamala (p.venkatesh551@gmail.com)
Oshrit Feder (oshritf@il.ibm.com)
Paul Dardeau (paul.dardeau@intel.com)
Paul Jimenez (pj@place.org)
Paul Luse (paul.e.luse@intel.com)
Paul McMillan (paul.mcmillan@nebula.com)
Pawel Palucki (pawel.palucki@gmail.com)
Alex Pecoraro (alex.pecoraro@emc.com)
Sascha Peilicke (saschpe@gmx.de)
Constantine Peresypkin (constantine.peresypk@rackspace.com)
Nguyen Hung Phuong (phuongnh@vn.fujitsu.com)
Dieter Plaetinck (dieter@vimeo.com)
Dan Prince (dprince@redhat.com)
Saverio Proto (saverio.proto@switch.ch)
Sivasathurappan Radhakrishnan (siva.radhakrishnan@intel.com)
Sarvesh Ranjan (saranjan@cisco.com)
Falk Reimann (falk.reimann@sap.com)
Brian Reitz (brian.reitz@oracle.com)
Pearl Yajing Tan (pearl.y.tan@seagate.com)
Pete Zaitcev (zaitcev@kotori.zaitcev.us)
Peter Lisak (peter.lisak@firma.seznam.cz)
Petr Kovar (pkovar@redhat.com)
Pradeep Kumar Singh (pradeep.singh@nectechnologies.in)
Prashanth Pai (ppai@redhat.com)
Pádraig Brady (pbrady@redhat.com)
Qiaowei Ren (qiaowei.ren@intel.com)
Felipe Reyes (freyes@tty.cl)
Janie Richling (jrichli@us.ibm.com)
Matt Riedemann (mriedem@us.ibm.com)
Li Riqiang (lrqrun@gmail.com)
Rafael Rivero (rafael@cloudscaling.com)
Larry Rensing (lr699s@att.com)
Victor Rodionov (victor.rodionov@nexenta.com)
Eran Rom (eranr@il.ibm.com)
Aaron Rosen (arosen@nicira.com)
Brent Roskos (broskos@internap.com)
Hamdi Roumani (roumani@ca.ibm.com)
Shilla Saebi (shilla.saebi@gmail.com)
Atsushi Sakai (sakaia@jp.fujitsu.com)
Cristian A Sanchez (cristian.a.sanchez@intel.com)
Olga Saprycheva (osapryc@us.ibm.com)
Christian Schwede (cschwede@redhat.com)
Mark Seger (mark.seger@hpe.com)
Azhagu Selvan SP (tamizhgeek@gmail.com)
Alexandra Settle (alexandra.settle@rackspace.com)
Andrew Clay Shafer (acs@parvuscaptus.com)
Mitsuhiro SHIGEMATSU (shigematsu.mitsuhiro@lab.ntt.co.jp)
Dhriti Shikhar (dhrish20@gmail.com)
Chuck Short (chuck.short@canonical.com)
Michael Shuler (mshuler@gmail.com)
David Moreau Simard (dmsimard@iweb.com)
Scott Simpson (sasimpson@gmail.com)
Pradeep Kumar Singh (pradeep.singh@nectechnologies.in)
Rainer Toebbicke (Rainer.Toebbicke@cern.ch)
Ray Chen (oldsharp@163.com)
Rebecca Finn (rebeccax.finn@intel.com)
Ricardo Ferreira (ricardo.sff@gmail.com)
Richard Hawkins (richard.hawkins@rackspace.com)
Romain Le Disez (romain.ledisez@ovh.net)
Russ Nelson (russ@crynwr.com)
Russell Bryant (rbryant@redhat.com)
Samuel Merritt (sam@swiftstack.com)
Sarafraj Singh (Sarafraj.Singh@intel.com)
Liu Siqi (meizu647@gmail.com)
Adrian Smith (adrian_f_smith@dell.com)
Jon Snitow (otherjon@swiftstack.com)
Emile Snyder (emile.snyder@gmail.com)
Emett Speer (speer.emett@gmail.com)
Sarvesh Ranjan (saranjan@cisco.com)
Sascha Peilicke (saschpe@gmx.de)
Saverio Proto (saverio.proto@switch.ch)
Scott Simpson (sasimpson@gmail.com)
Sergey Kraynev (skraynev@mirantis.com)
Sergey Lukjanov (slukjanov@mirantis.com)
Shane Wang (shane.wang@intel.com)
Shashank Kumar Shankar (shashank.kumar.shankar@intel.com)
Shashirekha Gundur (shashirekha.j.gundur@intel.com)
Shilla Saebi (shilla.saebi@gmail.com)
Shri Javadekar (shrinand@maginatics.com)
Sivasathurappan Radhakrishnan (siva.radhakrishnan@intel.com)
Soren Hansen (soren@linux2go.dk)
Stephen Milton (milton@isomedia.com)
Steve Kowalik (steven@wedontsleep.org)
Steve Martinelli (stevemar@ca.ibm.com)
Steven Lang (Steven.Lang@hgst.com)
Sushil Kumar (sushil.kumar2@globallogic.com)
Takashi Kajinami (kajinamit@nttdata.co.jp)
Takashi Natsume (natsume.takashi@lab.ntt.co.jp)
TheSriram (sriram@klusterkloud.com)
Jeremy Stanley (fungi@yuggoth.org)
Mauro Stettler (mauro.stettler@gmail.com)
Thiago da Silva (thiago@redhat.com)
Thierry Carrez (thierry@openstack.org)
Thomas Goirand (thomas@goirand.fr)
Thomas Leaman (thomas.leaman@hp.com)
Tim Burke (tim.burke@gmail.com)
Timothy Okwii (tokwii@cisco.com)
Timur Alperovich (timur.alperovich@gmail.com)
Tin Lam (tl3438@att.com)
Tobias Stevenson (tstevenson@vbridges.com)
Tom Fifield (tom@openstack.org)
Tomas Matlocha (tomas.matlocha@firma.seznam.cz)
Tong Li (litong01@us.ibm.com)
Travis McPeak (tmcpeak@us.ibm.com)
Tushar Gohad (tushar.gohad@intel.com)
venkatamahesh (venkatamaheshkotha@gmail.com)
Venkateswarlu Pallamala (p.venkatesh551@gmail.com)
Victor Lowther (victor.lowther@gmail.com)
Victor Rodionov (victor.rodionov@nexenta.com)
Victor Stinner (vstinner@redhat.com)
Akihito Takai (takaiak@nttdata.co.jp)
Pearl Yajing Tan (pearl.y.tan@seagate.com)
Nandini Tata (nandini.tata.15@gmail.com)
Yuriy Taraday (yorik.sar@gmail.com)
Monty Taylor (mordred@inaugust.com)
Caleb Tennis (caleb.tennis@gmail.com)
Rainer Toebbicke (Rainer.Toebbicke@cern.ch)
Fujita Tomonori (fujita.tomonori@lab.ntt.co.jp)
Kato Tomoyuki (kato.tomoyuki@jp.fujitsu.com)
Nirmal Thacker (nirmalthacker@gmail.com)
Kapil Thangavelu (kapil.foss@gmail.com)
Anh Tran (anhtt@vn.fujitsu.com)
Nicolas Trangez (ikke@nicolast.be)
Dean Troyer (dtroyer@gmail.com)
Kota Tsuyuzaki (tsuyuzaki.kota@lab.ntt.co.jp)
Dmitriy Ukhlov (dukhlov@mirantis.com)
Dmitry Ukov (dukov@mirantis.com)
Vincent Untz (vuntz@suse.com)
Daniele Valeriani (daniele@dvaleriani.net)
Koert van der Veer (koert@cloudvps.com)
Béla Vancsics (vancsics@inf.u-szeged.hu)
Vladimir Vechkanov (vvechkanov@mirantis.com)
venkatamahesh (venkatamaheshkotha@gmail.com)
Gil Vernik (gilv@il.ibm.com)
Hou Ming Wang (houming.wang@easystack.cn)
Shane Wang (shane.wang@intel.com)
Yaguang Wang (yaguang.wang@intel.com)
Chris Wedgwood (cw@f00f.org)
Conrad Weidenkeller (conrad.weidenkeller@rackspace.com)
Doug Weimer (dweimer@gmail.com)
Andrew Welleck (awellec@us.ibm.com)
Wu Wenxiang (wu.wenxiang@99cloud.net)
Cory Wright (cory.wright@rackspace.com)
Yaguang Wang (yaguang.wang@intel.com)
Yatin Kumbhare (yatinkumbhare@gmail.com)
Ye Jia Xu (xyj.asmy@gmail.com)
Yu Yafei (yu.yafei@zte.com.cn)
Zheng Yao (zheng.yao1@zte.com.cn)
Alex Yang (alex890714@gmail.com)
Lin Yang (lin.a.yang@intel.com)
Yee (mail.zhang.yee@gmail.com)
Guang Yee (guang.yee@hpe.com)
Pete Zaitcev (zaitcev@kotori.zaitcev.us)
Hua Zhang (zhuadl@cn.ibm.com)
Jian Zhang (jian.zhang@intel.com)
Kai Zhang (zakir.exe@gmail.com)
Ning Zhang (ning@zmanda.com)
Yu Yafei (yu.yafei@zte.com.cn)
Yuan Zhou (yuan.zhou@intel.com)
Yummy Bian (yummy.bian@gmail.com)
Yuriy Taraday (yorik.sar@gmail.com)
Yushiro FURUKAWA (y.furukawa_2@jp.fujitsu.com)
Zack M. Davis (zdavis@swiftstack.com)
Zap Chang (zapchang@gmail.com)
Zhang Guoqing (zhang.guoqing@99cloud.net)
Zhang Jinnan (ben.os@99cloud.net)
zhangyanxian (zhangyanxianmail@163.com)
Zhao Lei (zhaolei@cn.fujitsu.com)
Zheng Yao (zheng.yao1@zte.com.cn)
zheng yin (yin.zheng@easystack.cn)
Zhenguo Niu (zhenguo@unitedstack.com)
ZhiQiang Fan (aji.zqfan@gmail.com)
Zhongyue Luo (zhongyue.nah@intel.com)
zhufl (zhu.fanglei@zte.com.cn)

+ 121
- 0
CHANGELOG View File

@@ -1,3 +1,124 @@
swift (2.11.0)

* We have made significant improvements and changes to the erasure
code implementation.

- Instead of using a separate .durable file to indicate the
durable status of an EC fragment archive, we rename the .data
to include a durable marker in the filename. This saves one
inode for every EC .data file. Existing .durable files will not
be removed, and they will continue to work just fine.

Note that after writing EC data with Swift 2.11.0 or later, that
data will not be accessible to earlier versions of Swift.

- Closed a bug where ssync may have written bad fragment data in
some circumstances. A check was added to ensure the correct number
of bytes is written for a fragment before finalizing the write.
Also, erasure coded fragment metadata will now be validated on read
requests and, if bad data is found, the fragment will be quarantined.

- The improvements to EC reads made in Swift 2.10.0 have also been
applied to the reconstructor. This allows fragments to be rebuilt
in more circumstances, resulting in faster recovery from failures.

- WARNING: If you are using the ISA-L library for erasure codes,
please upgrade to liberasurecode 1.3.1 (or later) as soon as
possible. If you are using isa_l_rs_vand with more than 4 parity,
please read https://bugs.launchpad.net/swift/+bug/1639691 and take
necessary action.

- Updated the PyECLib dependency to 1.3.1.

* Added a configurable URL base to staticweb.

* Support multi-range GETs for static large objects.

* TempURLs using the "inline" parameter can now also set the
"filename" parameter. Both are used in the Content-Disposition
response header.

* Mirror X-Trans-Id to X-Openstack-Request-Id.

* SLO will now concurrently HEAD segments, resulting in much faster
manifest validation and object creation. By default, two HEAD requests
will be done at a time, but this can be changed by the operator via
the new `concurrency` setting in the "[filter:slo]" section of
the proxy server config.

* Suppressed the KeyError message when auditor finds an expired object.

* Daemons using InternalClient can now be properly killed with SIGTERM.

* Added a "user" option to the drive-audit config file. Its value is
used to set the owner of the drive-audit recon cache.

* Throttle update_auditor_status calls so it updates no more than once
per minute.

* Suppress unexpected-file warnings for rsync temp files.

* Various other minor bug fixes and improvements.

swift (2.10.0, OpenStack Newton)

* Object versioning now supports a "history" mode in addition to
the older "stack" mode. The difference is in how DELETE requests
are handled. For full details, please read
http://docs.openstack.org/developer/swift/overview_object_versioning.html.

* New config variables to change the schedule priority and I/O
scheduling class. Servers and daemons now understand
`nice_priority`, `ionice_class`, and `ionice_priority` to
schedule their relative importance. Please read
http://docs.openstack.org/developer/swift/deployment_guide.html
for full config details.

* On newer kernels (3.15+ when using xfs), Swift will use the O_TMPFILE
flag when opening a file instead of creating a temporary file
and renaming it on commit. This makes the data path simpler and
allows the filesystem to more efficiently optimize the files on
disk, resulting in better performance.

* Erasure code GET performance has been significantly
improved in clusters that are not completely healthy.

* Significant improvements to the api-ref doc available at
http://developer.openstack.org/api-ref/object-storage/.

* A PUT or POST to a container will now update the container's
Last-Modified time, and that value will be included in a
GET/HEAD response.

* Include object sysmeta in POST responses. Sysmeta is still
stripped from the response before being sent to the client, but
this allows middleware to make use of the information.

* Fixed a bug where a container listing delimiter wouldn't work
with encryption.

* Fixed a bug where some headers weren't being copied correctly
in a COPY request.

* Container sync can now copy SLOs more efficiently by allowing
the manifest to be synced before all of the referenced segments.
This fixes a bug where container sync would not copy SLO manifests.

* Fixed a bug where some tombstone files might never be reclaimed.

* Update dnspython dependency to 1.14, removing the need to have
separate dnspython dependencies for Py2 and Py3.

* Deprecate swift-temp-url and call python-swiftclient's
implementation instead. This adds python-swiftclient as an
optional dependency of Swift.

* Moved other-requirements.txt to bindep.txt. bindep.txt lists
non-python dependencies of Swift.

* Various other minor bug fixes and improvements.


swift (2.9.0)

* Swift now supports at-rest encryption. This feature encrypts all

+ 1
- 1
REVIEW_GUIDELINES.rst View File

@@ -109,7 +109,7 @@ to be cleaned up at some point - but it absolutely should merge
because: CRITICAL. BUG. FIX.

You should comment inline to praise code that is "obvious". You should
comment inline to highlight code that that you found to be "obfuscated".
comment inline to highlight code that you found to be "obfuscated".

Unfortunately "readability" is often subjective. We should remember
that it's probably just our own personal preference. Rather than a

+ 17
- 27
api-ref/source/conf.py View File

@@ -29,35 +29,17 @@ import subprocess
import sys
import warnings

# TODO(Graham Hayes): Remove the following block of code when os-api-ref is
# using openstackdocstheme
import openstackdocstheme

import os_api_ref
html_theme = 'openstackdocs'
html_theme_path = [openstackdocstheme.get_html_theme_path()]
html_theme_options = {
"sidebar_mode": "toc",
}

if getattr(os_api_ref, 'THEME', 'olsosphinx') == 'openstackdocstheme':
# We are on the new version with openstackdocstheme support

extensions = [
'os_api_ref',
]

import openstackdocstheme # noqa

html_theme = 'openstackdocs'
html_theme_path = [openstackdocstheme.get_html_theme_path()]
html_theme_options = {
"sidebar_mode": "toc",
}

else:
# We are on the old version without openstackdocstheme support

extensions = [
'os_api_ref',
'oslosphinx',
]

# End temporary block
extensions = [
'os_api_ref',
]

# If extensions (or modules to document with autodoc) are in another directory,
# add these directories to sys.path here. If the directory is relative to the
@@ -94,6 +76,14 @@ version = __version__.rsplit('.', 1)[0]
# The full version, including alpha/beta/rc tags.
release = __version__

# Config logABug feature
giturl = u'http://git.openstack.org/cgit/openstack/swift/tree/api-ref/source'
# source tree
# html_context allows us to pass arbitrary values into the html template
html_context = {'bug_tag': 'api-ref',
'giturl': giturl,
'bug_project': 'swift'}

# The language for content autogenerated by Sphinx. Refer to documentation
# for a list of supported languages.
#

+ 5
- 3
api-ref/source/index.rst View File

@@ -6,8 +6,10 @@

.. rest_expand_all::

.. include:: storage_info.inc
.. include:: storage-account-services.inc
.. include:: storage_endpoints.inc
.. include:: storage-object-services.inc
.. include:: storage-container-services.inc
.. include:: storage_info.inc
.. include:: storage-object-services.inc
.. include:: storage_endpoints.inc



+ 6
- 0
api-ref/source/metadata_header_encoding.inc View File

@@ -0,0 +1,6 @@
.. note::

The metadata value must be UTF-8-encoded and then
URL-encoded before you include it in the header.
This is a direct violation of the HTTP/1.1 `basic rules
<http://www.w3.org/Protocols/rfc2616/rfc2616-sec2.html#sec2.2>`_.

+ 7
- 0
api-ref/source/metadata_header_syntax.inc View File

@@ -0,0 +1,7 @@
.. note::

Metadata keys (the name of the metadata) must be treated as case-insensitive
at all times. These keys can contain ASCII 7-bit characters that are not
control (0-31) characters, DEL, or a separator character, according to
`HTTP/1.1 <http://www.w3.org/Protocols/rfc2616/rfc2616.html>`_ .
The underscore character is silently converted to a hyphen.

+ 367
- 222
api-ref/source/parameters.yaml View File

@@ -22,9 +22,9 @@ Content-Disposition:
in: header
required: false
type: string
Content-Disposition_1:
Content-Disposition_resp:
description: |
If set, specifies the override behavior for the
If present, specifies the override behavior for the
browser. For example, this header might specify that the browser
use a download program to save this file rather than show the
file, which is the default. If not set, this header is not
@@ -39,37 +39,36 @@ Content-Encoding:
in: header
required: false
type: string
Content-Encoding_1:
Content-Encoding_resp:
description: |
If set, the value of the ``Content-Encoding``
If present, the value of the ``Content-Encoding``
metadata. If not set, the operation does not return this header.
in: header
required: false
type: string
Content-Length:
Content-Length_cud_resp:
description: |
If the operation succeeds, this value is zero
(0). If the operation fails, this value is the length of the error
(0) or the length of informational or error
text in the response body.
in: header
required: true
type: string
Content-Length_1:
Content-Length_get_resp:
description: |
Set to the length of the object content. Do not
set if chunked transfer encoding is being used.
The length of the object content in the response
body, in bytes.
in: header
required: false
type: integer
Content-Length_2:
required: true
type: string
Content-Length_listing_resp:
description: |
The length of the response body that contains the
list of names. If the operation fails, this value is the length of
the error text in the response body.
If the operation succeeds, the length of the response body
in bytes. On error, this is the length of the error text.
in: header
required: true
type: string
Content-Length_3:
Content-Length_obj_head_resp:
description: |
HEAD operations do not return content. The
``Content-Length`` header value is not the size of the response
@@ -77,57 +76,52 @@ Content-Length_3:
in: header
required: true
type: string
Content-Length_4:
Content-Length_put_req:
description: |
The length of the object content in the response
body, in bytes.
Set to the length of the object content (i.e. the length in bytes
of the request body). Do not
set if chunked transfer encoding is being used.
in: header
required: true
type: string
Content-Type:
required: false
type: integer
Content-Type_cud_resp:
description: |
Changes the MIME type for the object.
If present, this value is the MIME
type of the informational or error text in the response body.
in: header
required: false
type: string
Content-Type_1:
Content-Type_listing_resp:
description: |
If the operation fails, this value is the MIME
type of the error text in the response body.
If the operation succeeds, this value is the MIME type of the list
response. The MIME type is determined by the listing format specified by
the request and will be one of ``text/plain``, ``application/json``,
``application/xml``, or ``text/xml``. If the operation fails, this value is
the MIME type of the error text in the response body.
in: header
required: true
type: string
Content-Type_2:
Content-Type_obj_cu_req:
description: |
The MIME type of the object.
Sets the MIME type for the object.
in: header
required: true
required: false
type: string
Content-Type_3:
Content-Type_obj_resp:
description: |
The MIME type of the list of names. If the
operation fails, this value is the MIME type of the error text in
the response body.
If the operation succeeds, this value is the MIME type of the object. If
the operation fails, this value is the MIME type of the error text in the
response body.
in: header
required: true
type: string
Date:
description: |
The transaction date and time.

The date and time stamp format is `ISO 8601
<https://en.wikipedia.org/wiki/ISO_8601>`_:

::

CCYY-MM-DDThh:mm:ss±hh:mm

For example, ``2015-08-27T09:49:58-05:00``.

The ``±hh:mm`` value, if included, is the time zone as an offset
from UTC. In the previous example, the offset value is ``-05:00``.

A ``null`` value indicates that the token never expires.
The date and time the system responded to the request,
using the preferred format of
`RFC 7231 <https://tools.ietf.org/html/rfc7231#section-7.1.1.1>`_ as
shown in this example ``Thu, 16 Jun 2016 15:10:38 GMT``. The time is
always in UTC.
in: header
required: true
type: string
@@ -140,14 +134,29 @@ Destination:
in: header
required: true
type: string
ETag:
Destination-Account:
description: |
Specifies the account name where the object is copied to. If not
specified, the object is copied to the account which owns the object
(i.e., the account in the path).
in: header
required: false
type: string
ETag_obj_copied:
description: |
The MD5 checksum of the copied object content.
The value is not quoted.
in: header
required: true
type: string
ETag_1:
ETag_obj_received:
description: |
The MD5 checksum of the uploaded object content.
The value is not quoted.
in: header
required: true
type: string
ETag_obj_req:
description: |
The MD5 checksum value of the request body. For
example, the MD5 checksum value of the object content. You are
@@ -158,7 +167,7 @@ ETag_1:
in: header
required: false
type: string
ETag_2:
ETag_obj_resp:
description: |
For objects smaller than 5 GB, this value is the
MD5 checksum of the object content. The value is not quoted. For
@@ -190,7 +199,7 @@ If-Modified-Since:
If-None-Match:
description: |
In combination with ``Expect: 100-Continue``,
specify an ``"If- None-Match: *"`` header to query whether the
specify an ``"If-None-Match: *"`` header to query whether the
server already has a copy of the object before any data is sent.
in: header
required: false
@@ -205,19 +214,10 @@ If-Unmodified-Since:
Last-Modified:
description: |
The date and time when the object was created or its metadata was
changed.

The date and time stamp format is `ISO 8601
<https://en.wikipedia.org/wiki/ISO_8601>`_:

::

CCYY-MM-DDThh:mm:ss±hh:mm

For example, ``2015-08-27T09:49:58-05:00``.
changed. The date and time is formaatted as shown in this
example: ``Fri, 12 Aug 2016 14:24:16 GMT``

The ``±hh:mm`` value, if included, is the time zone as an offset
from UTC. In the previous example, the offset value is ``-05:00``.
The time is always in UTC.
in: header
required: true
type: string
@@ -233,18 +233,21 @@ Range:
do, the value defaults to the offset of the last byte of data.
- **Suffix byte range specification**. Use LENGTH bytes to specify
the length of the data range. The following forms of the header
specify the following ranges of data: - ``Range: bytes=-5``. The
last five bytes. - ``Range: bytes=10-15``. The five bytes of data
after a 10-byte offset. - ``Range: bytes=10-15,-5``. A multi-
part response that contains the last five bytes and the five
bytes of data after a 10-byte offset. The ``Content-Type``
response header contains ``multipart/byteranges``. - ``Range:
bytes=4-6``. Bytes 4 to 6 inclusive. - ``Range: bytes=2-2``. Byte
2, the third byte of the data. - ``Range: bytes=6-``. Byte 6 and
after. - ``Range: bytes=1-3,2-5``. A multi-part response that
contains bytes 1 to 3 inclusive, and bytes 2 to 5 inclusive. The
``Content-Type`` response header contains
``multipart/byteranges``.
specify the following ranges of data:

- ``Range: bytes=-5``. The last five bytes.
- ``Range: bytes=10-15``. The six bytes of data after a 10-byte offset.
- ``Range: bytes=10-15,-5``. A multi-part response that contains the
last five bytes and the six
bytes of data after a 10-byte offset. The ``Content-Type``
response header contains ``multipart/byteranges``.
- ``Range: bytes=4-6``. Bytes 4 to 6 inclusive.
- ``Range: bytes=2-2``. Byte 2, the third byte of the data.
- ``Range: bytes=6-``. Byte 6 and after.
- ``Range: bytes=1-3,2-5``. A multi-part response that
contains bytes 1 to 3 inclusive, and bytes 2 to 5 inclusive. The
``Content-Type`` response header contains
``multipart/byteranges``.
in: header
required: false
type: string
@@ -272,45 +275,87 @@ X-Account-Container-Count:
X-Account-Meta-name:
description: |
The custom account metadata item, where
``{name}`` is the name of the metadata item. One ``X-Account-
Meta- {name}`` response header appears for each metadata item (for
each ``{name}``).
``name`` is the name of the metadata item. One ``X-Account-Meta-name``
response header appears for each metadata item (for
each ``name``).
in: header
required: false
type: string
X-Account-Meta-name_1:
X-Account-Meta-name_req:
description: |
The account metadata. The ``{name}`` is the name
The account metadata. The ``name`` is the name
of metadata item that you want to add, update, or delete. To
delete this item, send an empty value in this header. You must
specify an ``X-Account-Meta- {name}`` header for each metadata
item (for each ``{name}``) that you want to add, update, or
specify an ``X-Account-Meta-name`` header for each metadata
item (for each ``name``) that you want to add, update, or
delete.
in: header
required: false
type: string
X-Account-Meta-Temp-URL-Key:
X-Account-Meta-Quota-Bytes_resp:
description: |
The secret key value for temporary URLs. If not
set, this header is not returned in the response.
If present, this is the limit on the total size in bytes of objects stored
in the account.
Typically this value is set by an administrator.
in: header
required: false
type: string
X-Account-Meta-Temp-URL-Key-2:
X-Account-Meta-Temp-URL-Key-2_req:
description: |
A second secret key value for temporary URLs. If
not set, this header is not returned in the response.
A second secret key value for temporary URLs.
The second key enables you to rotate keys by having
two active keys at the same time.
in: header
required: false
type: string
X-Account-Meta-Temp-URL-Key-2_resp:
description: |
The second secret key value for temporary URLs. If
not set, this header is not returned in the response.
in: header
required: false
type: string
X-Account-Meta-Temp-URL-Key_req:
description: |
The secret key value for temporary URLs.
in: header
required: false
type: string
X-Account-Meta-Temp-URL-Key_resp:
description: |
The secret key value for temporary URLs. If not
set, this header is not returned in the response.
in: header
required: false
type: string
X-Account-Object-Count:
description: |
The number of objects in the account.
in: header
required: true
type: integer
X-Account-Storage-Policy-name-Bytes-Used:
description: |
The total number of bytes that are stored in
in a given storage policy, where ``name`` is the
name of the storage policy.
in: header
required: true
type: integer
X-Account-Storage-Policy-name-Container-Count:
description: |
The number of containers in the account that use the given
storage policy where ``name`` is the name of the storage policy.
in: header
required: true
type: integer
X-Account-Storage-Policy-name-Object-Count:
description: |
The number of objects in given storage policy where ``name`` is
the name of the storage policy.
in: header
required: true
type: integer
X-Auth-Token:
description: |
Authentication token. If you omit this header,
@@ -319,12 +364,6 @@ X-Auth-Token:
in: header
required: false
type: string
X-Auth-Token_1:
description: |
Authentication token.
in: header
required: true
type: string
X-Container-Bytes-Used:
description: |
The total number of bytes used.
@@ -354,14 +393,16 @@ X-Container-Meta-Access-Control-Expose-Headers:
Headers the Object Storage service exposes to the
browser (technically, through the ``user-agent`` setting), in the
request response, separated by spaces. By default the Object
Storage service returns the following values for this header: -
All “simple response headers” as listed on
`http://www.w3.org/TR/cors/#simple-response-header
<http://www.w3.org/TR/cors/#simple-response-header>`_. - The
headers ``etag``, ``x-timestamp``, ``x-trans-id``. - All metadata
headers (``X-Container-Meta-*`` for containers and ``X-Object-
Meta-*`` for objects) headers listed in ``X-Container- Meta-
Access-Control-Expose-Headers``.
Storage service returns the following headers:

- All “simple response headers” as listed on
`http://www.w3.org/TR/cors/#simple-response-header
<http://www.w3.org/TR/cors/#simple-response-header>`_.
- The headers ``etag``, ``x-timestamp``, ``x-trans-id``,
``x-openstack-request-id``.
- All metadata headers (``X-Container-Meta-*`` for containers and
``X-Object-Meta-*`` for objects).
- headers listed in ``X-Container-Meta-Access-Control-Expose-Headers``.
in: header
required: false
type: string
@@ -376,21 +417,21 @@ X-Container-Meta-Access-Control-Max-Age:
type: string
X-Container-Meta-name:
description: |
The container metadata, where ``{name}`` is the
name of metadata item. You must specify an ``X-Container-Meta-
{name}`` header for each metadata item (for each ``{name}``) that
you want to add or update.
The custom container metadata item, where
``name`` is the name of the metadata item. One ``X-Container-Meta-name``
response header appears for each metadata item (for
each ``name``).
in: header
required: false
required: true
type: string
X-Container-Meta-name_1:
X-Container-Meta-name_req:
description: |
The custom container metadata item, where
``{name}`` is the name of the metadata item. One ``X-Container-
Meta- {name}`` response header appears for each metadata item (for
each ``{name}``).
The container metadata, where ``name`` is the
name of metadata item. You must specify an ``X-Container-Meta-name``
header for each metadata item (for each ``name``) that
you want to add or update.
in: header
required: true
required: false
type: string
X-Container-Meta-Quota-Bytes:
description: |
@@ -398,6 +439,17 @@ X-Container-Meta-Quota-Bytes:
Typically these values are set by an administrator. Returns a 413
response (request entity too large) when an object PUT operation
exceeds this quota value.
This value does not take effect immediately. see
`Container Quotas
<http://docs.openstack.org/developer/swift/api/container_quotas.html>`_
for more information.
in: header
required: false
type: string
X-Container-Meta-Quota-Bytes_resp:
description: |
The maximum size of the container, in bytes. If not set, this header is not
returned by this operation.
in: header
required: false
type: string
@@ -407,20 +459,45 @@ X-Container-Meta-Quota-Count:
Typically these values are set by an administrator. Returns a 413
response (request entity too large) when an object PUT operation
exceeds this quota value.
This value does not take effect immediately. see
`Container Quotas
<http://docs.openstack.org/developer/swift/api/container_quotas.html>`_
for more information.
in: header
required: false
type: string
X-Container-Meta-Quota-Count_resp:
description: |
The maximum object count of the container. If not set, this header is not
returned by this operation.
in: header
required: false
type: string
X-Container-Meta-Temp-URL-Key-2_req:
description: |
A second secret key value for temporary URLs.
The second key enables you to rotate keys by having
two active keys at the same time.
in: header
required: false
type: string
X-Container-Meta-Temp-URL-Key-2_resp:
description: |
The second secret key value for temporary URLs. If
not set, this header is not returned in the response.
in: header
required: false
type: string
X-Container-Meta-Temp-URL-Key:
X-Container-Meta-Temp-URL-Key_req:
description: |
The secret key value for temporary URLs.
in: header
required: false
type: string
X-Container-Meta-Temp-URL-Key-2:
X-Container-Meta-Temp-URL-Key_resp:
description: |
A second secret key value for temporary URLs. The
second key enables you to rotate keys by having two active keys at
the same time.
The secret key value for temporary URLs. If not
set, this header is not returned in the response.
in: header
required: false
type: string
@@ -431,7 +508,7 @@ X-Container-Meta-Web-Directory-Type:
``application/directory``. Directory marker objects are 0-byte
objects that represent directories to create a simulated
hierarchical structure. For example, if you set ``"X-Container-
Meta-Web-Directory- Type: text/directory"``, Object Storage treats
Meta-Web-Directory-Type: text/directory"``, Object Storage treats
0-byte objects with a content-type of ``text/directory`` as
directories rather than objects.
in: header
@@ -446,47 +523,18 @@ X-Container-Object-Count:
X-Container-Read:
description: |
Sets a container access control list (ACL) that grants read access.
Container ACLs are available on any Object Storage cluster, and are
enabled by container rather than by cluster.

To set the container read ACL:
The scope of the access is specific to the container. The ACL grants
the ability to perform GET or HEAD operations on objects in the container
or to perform a GET or HEAD operation on the container itself.

.. code-block:: bash

$ curl -X {PUT|POST} -i -H "X-Auth-Token: TOKEN" -H \
"X-Container-Read: ACL" STORAGE_URL/CONTAINER

For example:

.. code-block:: bash

$ curl -X PUT -i \
-H "X-Auth-Token: 0101010101" \
-H "X-Container-Read: .r:*" \
http://swift.example.com/v1/AUTH_bob/read_container

In the command, specify the ACL in the ``X-Container-Read`` header,
as follows:

- ``.r:*`` All referrers.

- ``.r:example.com,swift.example.com`` Comma-separated list of
referrers.

- ``.rlistings`` Container listing access.

- ``AUTH_username`` Access to a user who authenticates through a
legacy or non-OpenStack-Identity-based authentication system.

- ``LDAP_`` Access to all users who authenticate through an LDAP-
based legacy or non-OpenStack-Identity-based authentication
system.
The format and scope of the ACL is dependent on the authorization system
used by the Object Storage service.
in: header
required: false
type: string
X-Container-Read_1:
X-Container-Read_resp:
description: |
The ACL that grants read access. If not set, this
The ACL that grants read access. If there is no ACL, this
header is not returned by this operation.
in: header
required: false
@@ -496,10 +544,13 @@ X-Container-Sync-Key:
Sets the secret key for container
synchronization. If you remove the secret key, synchronization is
halted.
For more information, see `Container to Container Synchronization
<http://docs.openstack.org/developer/swift/overview_
container_sync.html>`_
in: header
required: false
type: string
X-Container-Sync-Key_1:
X-Container-Sync-Key_resp:
description: |
The secret key for container synchronization. If
not set, this header is not returned by this operation.
@@ -516,7 +567,7 @@ X-Container-Sync-To:
in: header
required: false
type: string
X-Container-Sync-To_1:
X-Container-Sync-To_resp:
description: |
The destination for container synchronization. If
not set, this header is not returned by this operation.
@@ -525,13 +576,21 @@ X-Container-Sync-To_1:
type: string
X-Container-Write:
description: |
Sets an ACL that grants write access.
Sets a container access control list (ACL) that grants write access.
The scope of the access is specific to the container. The ACL grants
the ability to perform PUT, POST and DELETE operations on
objects in the container. It does not grant write access to the container
metadata.

The format of the ACL is dependent on the authorization system
used by the Object Storage service.

in: header
required: false
type: string
X-Container-Write_1:
description: |
The ACL that grants write access. If not set,
X-Container-Write_resp:
description:
The ACL that grants write access. If there is no ACL,
this header is not returned by this operation.
in: header
required: false
@@ -544,6 +603,13 @@ X-Copied-From:
in: header
required: false
type: string
X-Copied-From-Account:
description: |
For a copied object, shows the account
from which the new object was copied.
in: header
required: false
type: string
X-Copied-From-Last-Modified:
description: |
For a copied object, the date and time in `UNIX
@@ -572,7 +638,7 @@ X-Delete-After:
description: |
The number of seconds after which the system
removes the object. Internally, the Object Storage system stores
this value in the ``X -Delete-At`` metadata item.
this value in the ``X-Delete-At`` metadata item.
in: header
required: false
type: integer
@@ -585,21 +651,11 @@ X-Delete-At:
in: header
required: false
type: integer
X-Delete-At_1:
description: |
If set, the date and time in `UNIX Epoch time
stamp format <https://en.wikipedia.org/wiki/Unix_time>`_ when the
system deletes the object. For example, ``1440619048`` is
equivalent to ``Mon, Wed, 26 Aug 2015 19:57:28 GMT``. If not set,
this operation does not return this header.
in: header
required: false
type: integer
X-Detect-Content-Type:
description: |
If set to ``true``, Object Storage guesses the
content type based on the file extension and ignores the value
sent in the ``Content- Type`` header, if present.
sent in the ``Content-Type`` header, if present.
in: header
required: false
type: boolean
@@ -611,6 +667,27 @@ X-Fresh-Metadata:
in: header
required: false
type: boolean
X-History-Location:
description: |
The URL-encoded UTF-8 representation of the container that stores
previous versions of objects. If neither this nor ``X-Versions-Location``
is set, versioning is disabled for this container. ``X-History-Location``
and ``X-Versions-Location`` cannot both be set at the same time. For more
information about object versioning, see `Object versioning
<http://docs.openstack.org/ developer/swift/api/object_versioning.html>`_.
in: header
required: false
type: string
X-History-Location_resp:
description: |
If present, this container has versioning enabled and the value
is the UTF-8 encoded name of another container.
For more information about object versioning,
see `Object versioning <http://docs.openstack.org/developer/
swift/api/object_versioning.html>`_.
in: header
required: false
type: string
X-Newest:
description: |
If set to true , Object Storage queries all
@@ -631,9 +708,9 @@ X-Object-Manifest:
in: header
required: false
type: string
X-Object-Manifest_1:
X-Object-Manifest_resp:
description: |
If set, to this is a dynamic large object
If present, this is a dynamic large object
manifest object. The value is the container and object name prefix
of the segment objects in the form ``container/prefix``.
in: header
@@ -641,32 +718,65 @@ X-Object-Manifest_1:
type: string
X-Object-Meta-name:
description: |
The object metadata, where ``{name}`` is the name
of the metadata item. You must specify an ``X-Object-Meta-
{name}`` header for each metadata ``{name}`` item that you want to
add or update.
The object metadata, where ``name`` is the name
of the metadata item. You must specify an
``X-Object-Meta-name`` header for each metadata ``name`` item that
you want to add or update.
in: header
required: false
type: string
X-Object-Meta-name_resp:
description: |
If present, the custom object metadata item, where ``name``
is the name of the metadata item. One``X-Object-Meta-name``
response header appears for each metadata ``name`` item.
in: header
required: false
type: string
X-Object-Meta-name_1:
X-Openstack-Request-Id:
description: |
The custom object metadata item, where ``{name}``
is the name of the metadata item. One ``X-Object-Meta- {name}``
response header appears for each metadata ``{name}`` item.
A unique transaction ID for this request. Your
service provider might need this value if you report a problem.
(same as ``X-Trans-Id``)
in: header
required: true
type: string
X-Remove-Account-name:
description: |
Removes the metadata item named ``name``.
For example, ``X-Remove-Account-Meta-Blue`` removes
custom metadata.
in: header
required: false
type: string
X-Remove-Container-name:
description: |
Removes the metadata item named ``{name}``. For
example, ``X -Remove-Container-Read`` removes the ``X-Container-
Read`` metadata item.
Removes the metadata item named ``name``. For
example, ``X-Remove-Container-Read`` removes the
``X-Container-Read`` metadata item and ``X-Remove-Container-Meta-Blue``
removes custom metadata.
in: header
required: false
type: string
X-Remove-History-Location:
description: |
Set to any value to disable versioning. Note that this disables version
that was set via ``X-Versions-Location`` as well.
in: header
required: false
type: string
X-Remove-Versions-Location:
description: |
Set to any value to disable versioning.
Set to any value to disable versioning. Note that this disables version
that was set via ``X-History-Location`` as well.
in: header
required: false
type: string
X-Service-Token:
description: |
A service token. See `OpenStack Service Using Composite Tokens
<http://docs.openstack.org/developer/swift/overview_auth.html#openstack-
service-using-composite-tokens>`_ for more information.
in: header
required: false
type: string
@@ -677,6 +787,14 @@ X-Static-Large-Object:
in: header
required: true
type: boolean
X-Storage-Policy:
description: |
In requests, specifies the name of the storage policy to use for
the container. In responses, is the storage policy name.
The storage policy of the container cannot be changed.
in: header
required: false
type: string
X-Timestamp:
description: |
The date and time in `UNIX Epoch time stamp
@@ -696,23 +814,23 @@ X-Trans-Id:
type: string
X-Trans-Id-Extra:
description: |
Extra transaction information. Use the ``X-Trans-
Id-Extra`` request header to include extra information to help you
Extra transaction information. Use the ``X-Trans-Id-Extra``
request header to include extra information to help you
debug any errors that might occur with large object upload and
other Object Storage transactions. Object Storage appends the
first 32 characters of the ``X-Trans-Id- Extra`` request header
other Object Storage transactions. The server appends the
first 32 characters of the ``X-Trans-Id-Extra`` request header
value to the transaction ID value in the generated ``X-Trans-Id``
response header. You must UTF-8-encode and then URL-encode the
extra transaction information before you include it in the ``X
-Trans-Id-Extra`` request header. For example, you can include
extra transaction information before you include it in the
``X-Trans-Id-Extra`` request header. For example, you can include
extra transaction information when you upload `large objects
<http://docs.openstack.org/user-
guide/cli_swift_large_object_creation.html>`_ such as images. When
<http://docs.openstack.org/developer/swift/api/large_objects.html>`_
such as images. When
you upload each segment and the manifest, include the same value
in the ``X-Trans-Id-Extra`` request header. If an error occurs,
you can find all requests that are related to the large object
upload in the Object Storage logs. You can also use ``X-Trans-Id-
Extra`` strings to help operators debug requests that fail to
upload in the Object Storage logs. You can also use ``X-Trans-Id-Extra``
strings to help operators debug requests that fail to
receive responses. The operator can search for the extra
information in the logs.
in: header
@@ -721,19 +839,19 @@ X-Trans-Id-Extra:
X-Versions-Location:
description: |
The URL-encoded UTF-8 representation of the container that stores
previous versions of objects. If not set, versioning is disabled
for this container. For more information about object versioning,
see `Object versioning <http://docs.openstack.org/developer/
swift/api/object_versioning.html>`_.
previous versions of objects. If neither this nor ``X-History-Location``
is set, versioning is disabled for this container. ``X-Versions-Location``
and ``X-History-Location`` cannot both be set at the same time. For more
information about object versioning, see `Object versioning
<http://docs.openstack.org/ developer/swift/api/object_versioning.html>`_.
in: header
required: false
type: string
X-Versions-Mode:
X-Versions-Location_resp:
description: |
The versioning mode for this container. The value must be either
``stack`` or ``history``. If not set, ``stack`` mode will be used.
This setting has no impact unless ``X-Versions-Location`` is set
for the container. For more information about object versioning,
If present, this container has versioning enabled and the value
is the UTF-8 encoded name of another container.
For more information about object versioning,
see `Object versioning <http://docs.openstack.org/developer/
swift/api/object_versioning.html>`_.
in: header
@@ -750,12 +868,13 @@ account:
type: string
container:
description: |
The unique name for the container. The container
The unique (within an account) name for the container. The container
name must be from 1 to 256 characters long and can start with any
character and contain any pattern. Character set must be UTF-8.
The container name cannot contain a slash (``/``) character
because this character delimits the container and object name. For
example, ``/account/container/object``.
example, the path ``/v1/account/www/pages`` specifies the ``www``
container, not the ``www/pages`` container.
in: path
required: false
type: string
@@ -767,6 +886,16 @@ object:
type: string

# variables in query
bulk-delete:
description: |
When the ``bulk-delete`` query parameter is present in the POST
request, multiple objects or containers can be deleted
with a single request. See `Bulk Delete
<http://docs.openstack.org/developer/swift/middleware.html?highlight=
bulk#bulk-delete>`_ for how this feature is used.
in: query
required: false
type: string
delimiter:
description: |
Delimiter value, which returns the object names
@@ -784,6 +913,16 @@ end_marker:
in: query
required: false
type: string
extract-archive:
description: |
When the ``extract-archive`` query parameter is present in the POST
request, an archive (tar file) is uploaded and extracted to
create multiple objects. See `Extract Archive
<http://docs.openstack.org/developer/swift/middleware.html?highlight=
bulk#extract-archive>`_ for how this feature is used.
in: query
required: false
type: string
filename:
description: |
Overrides the default file name. Object Storage
@@ -823,23 +962,24 @@ marker:
in: query
required: false
type: string
multipart-manifest:
multipart-manifest_copy:
description: |
If ``?multipart-manifest=put``, the object is a
static large object manifest and the body contains the manifest.
If you include the ``multipart-manifest=get``
query parameter and the object is a large object, the object
contents are not copied. Instead, the manifest is copied to
the new object.
in: query
required: false
type: string
multipart-manifest_1:
multipart-manifest_delete:
description: |
If you include the ``multipart-manifest=delete``
query parameter and the object is a static large object, the
segment objects and manifest object are deleted. If you omit the
``multipart- manifest=delete`` query parameter and the object is a
``multipart-manifest=delete`` query parameter and the object is a
static large object, the manifest object is deleted but the
segment objects are not deleted. For a bulk delete, the response
body looks the same as it does for a normal bulk delete. In
contrast, a plain object DELETE response has an empty body.
segment objects are not deleted. The response body will contain
the status of the deletion of every processed segment object.
in: query
required: false
type: string
@@ -862,6 +1002,13 @@ multipart-manifest_head:
in: query
required: false
type: string
multipart-manifest_put:
description: |
If you include the ``multipart-manifest=put`` query parameter, the object
is a static large object manifest and the body contains the manifest.
in: query
required: false
type: string
path:
description: |
For a string value, returns the object names that
@@ -878,11 +1025,9 @@ prefix:
type: string
swiftinfo_expires:
description: |
Filters the response by the expiration date and
time in `UNIX Epoch time stamp format
<https://en.wikipedia.org/wiki/Unix_time>`_. For example,
``1440619048`` is equivalent to ``Mon, Wed, 26 Aug 2015 19:57:28
GMT``.
The time at which ``swiftinfo_sig`` expires. The time is in
`UNIX Epoch time stamp format
<https://en.wikipedia.org/wiki/Unix_time>`_.
in: query
required: false
type: integer

+ 1
- 1
api-ref/source/samples/account-containers-list-http-request-json.txt View File

@@ -1 +1 @@
curl -i https://23.253.72.207/v1/$account?format=json -X GET -H "X-Auth-Token: $token"
curl -i $publicURL?format=json -X GET -H "X-Auth-Token: $token"

+ 1
- 2
api-ref/source/samples/account-containers-list-http-request-xml.txt View File

@@ -1,2 +1 @@
curl -i https://23.253.72.207/v1/$account?format=xml \
-X GET -H "X-Auth-Token: $token"
curl -i $publicURL?format=xml -X GET -H "X-Auth-Token: $token"

+ 2
- 1
api-ref/source/samples/account-containers-list-http-response-json.txt View File

@@ -8,4 +8,5 @@ X-Account-Container-Count: 2
Content-Type: application/json; charset=utf-8
Accept-Ranges: bytes
X-Trans-Id: tx274a77a8975c4a66aeb24-0052d95365
Date: Fri, 17 Jan 2014 15:59:33 GMT
X-Openstack-Request-Id: tx274a77a8975c4a66aeb24-0052d95365
Date: Fri, 17 Jan 2014 15:59:33 GMT

+ 2
- 1
api-ref/source/samples/account-containers-list-http-response-xml.txt View File

@@ -8,4 +8,5 @@ X-Account-Container-Count: 2
Content-Type: application/xml; charset=utf-8
Accept-Ranges: bytes
X-Trans-Id: tx69f60bc9f7634a01988e6-0052d9544b
Date: Fri, 17 Jan 2014 16:03:23 GMT
X-Openstack-Request-Id: tx69f60bc9f7634a01988e6-0052d9544b
Date: Fri, 17 Jan 2014 16:03:23 GMT

+ 5
- 0
api-ref/source/samples/capabilities-list-response.json View File

@@ -2,6 +2,11 @@
"swift": {
"version": "1.11.0"
},
"slo": {
"max_manifest_segments": 1000,
"max_manifest_size": 2097152,
"min_segment_size": 1
},
"staticweb": {},
"tempurl": {}
}

+ 2
- 1
api-ref/source/samples/objects-list-http-response-json.txt View File

@@ -7,4 +7,5 @@ X-Timestamp: 1389727543.65372
X-Container-Bytes-Used: 26
Content-Type: application/json; charset=utf-8
X-Trans-Id: tx26377fe5fab74869825d1-0052d6bdff
Date: Wed, 15 Jan 2014 16:57:35 GMT
X-Openstack-Request-Id: tx26377fe5fab74869825d1-0052d6bdff
Date: Wed, 15 Jan 2014 16:57:35 GMT

+ 2
- 1
api-ref/source/samples/objects-list-http-response-xml.txt View File

@@ -7,4 +7,5 @@ X-Timestamp: 1389727543.65372
X-Container-Bytes-Used: 26
Content-Type: application/xml; charset=utf-8
X-Trans-Id: txc75ea9a6e66f47d79e0c5-0052d6be76
Date: Wed, 15 Jan 2014 16:59:35 GMT
X-Openstack-Request-Id: txc75ea9a6e66f47d79e0c5-0052d6be76
Date: Wed, 15 Jan 2014 16:59:35 GMT

+ 94
- 107
api-ref/source/storage-account-services.inc View File

@@ -5,60 +5,10 @@ Accounts
========

Lists containers for an account. Creates, updates, shows, and
deletes account metadata.
deletes account metadata. For more information and concepts about
accounts see `Object Storage API overview
<http://docs.openstack.org/developer/swift/api/object_api_v1_overview.html>`_.

Account metadata operations work differently than container and
object metadata operations work. Depending on the contents of your
POST account metadata request, the Object Storage API updates the
metadata in one of these ways:

**Account metadata operations**

+----------------------------------------------------------+---------------------------------------------------------------+
| POST request body contains | Description |
+----------------------------------------------------------+---------------------------------------------------------------+
| A metadata key without a value. | The API removes the metadata item from the account. |
| | |
| The metadata key already exists for the account. | |
+----------------------------------------------------------+---------------------------------------------------------------+
| A metadata key without a value. | The API ignores the metadata key. |
| | |
| The metadata key does not already exist for the account. | |
+----------------------------------------------------------+---------------------------------------------------------------+
| A metadata key value. | The API updates the metadata key value for the account. |
| | |
| The metadata key already exists for the account. | |
+----------------------------------------------------------+---------------------------------------------------------------+
| A metadata key value. | The API adds the metadata key and value pair, or item, to the |
| | account. |
| The metadata key does not already exist for the account. | |
+----------------------------------------------------------+---------------------------------------------------------------+
| One or more account metadata items are omitted. | The API does not change the existing metadata items. |
| | |
| The metadata items already exist for the account. | |
+----------------------------------------------------------+---------------------------------------------------------------+



For these requests, specifying the ``X-Remove-Account-Meta-*``
request header for the key with any value is equivalent to
specifying the ``X-Account-Meta-*`` request header with an empty
value.

Metadata keys must be treated as case-insensitive at all times.
These keys can contain ASCII 7-bit characters that are not control
(0-31) characters, DEL, or a separator character, according to
`HTTP/1.1 <http://www.w3.org/Protocols/rfc2616/rfc2616.html>`_ .
Also, Object Storage does not support the underscore character,
which it silently converts to a hyphen.

The metadata values in Object Storage do not follow HTTP/1.1 rules
for character encodings. You must use a UTF-8 encoding to get a
byte array for any string that contains characters that are not in
the 7-bit ASCII 0-127 range. Otherwise, Object Storage returns the
404 response code for ISO-8859-1 characters in the 128-255 range,
which is a direct violation of the HTTP/1.1 `basic rules
<http://www.w3.org/Protocols/rfc2616/rfc2616-sec2.html#sec2.2>`_.


Show account details and list containers
@@ -74,23 +24,6 @@ using the SQLite memcmp() function, regardless of text encoding.
See `Collating Sequences
<http://www.sqlite.org/datatype3.html#collation>`_.

Example requests and responses:

- Show account details and list containers and ask for a JSON
response:

::

curl -i $publicURL?format=json -X GET -H "X-Auth-Token: $token"


- List containers and ask for an XML response:

::

curl -i $publicURL?format=xml -X GET -H "X-Auth-Token: $token"


The response body returns a list of containers. The default
response (``text/plain``) returns one container per line.

@@ -106,6 +39,21 @@ is text, JSON, or XML. For a text response, you get a 204 , because
there is no content. However, for a JSON or XML response, you get a
200 with content indicating an empty array.

Example requests and responses:

- Show account details and list containers and ask for a JSON
response:

.. literalinclude:: samples/account-containers-list-http-request-json.txt
.. literalinclude:: samples/account-containers-list-http-response-json.txt
.. literalinclude:: samples/account-containers-list-response.json

- Show account details and list containers and ask for an XML response:

.. literalinclude:: samples/account-containers-list-http-request-xml.txt
.. literalinclude:: samples/account-containers-list-http-response-xml.txt
.. literalinclude:: samples/account-containers-list-response.xml

If the request succeeds, the operation returns one of these status
codes:

@@ -135,6 +83,7 @@ Request
- prefix: prefix
- delimiter: delimiter
- X-Auth-Token: X-Auth-Token
- X-Service-Token: X-Service-Token
- X-Newest: X-Newest
- Accept: Accept
- X-Trans-Id-Extra: X-Trans-Id-Extra
@@ -145,33 +94,27 @@ Response Parameters

.. rest_parameters:: parameters.yaml