Browse Source

Merge branch 'master' into 'feature/hummingbird'

Change-Id: I7cfe7d6a20966e71c7fd3620ef772d5d3f01a27f
changes/85/400985/1
John Dickinson 2 years ago
parent
commit
0c3f8f8710
100 changed files with 3091 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. 0
    0
      swift/common/middleware/container_sync.py

+ 2
- 13
.alltests View File

@@ -1,33 +1,22 @@
1 1
 #!/bin/bash
2 2
 
3
+set -e
4
+
3 5
 TOP_DIR=$(python -c "import os; print os.path.dirname(os.path.realpath('$0'))")
4 6
 
5 7
 echo "==== Unit tests ===="
6 8
 resetswift
7 9
 $TOP_DIR/.unittests $@
8
-rvalue=$?
9
-if [ $rvalue != 0 ] ; then
10
-    exit $rvalue
11
-fi
12 10
 
13 11
 echo "==== Func tests ===="
14 12
 resetswift
15 13
 startmain
16 14
 $TOP_DIR/.functests $@
17
-rvalue=$?
18
-if [ $rvalue != 0 ] ; then
19
-    exit $rvalue
20
-fi
21 15
 
22 16
 echo "==== Probe tests ===="
23 17
 resetswift
24 18
 $TOP_DIR/.probetests $@
25
-rvalue=$?
26
-if [ $rvalue != 0 ] ; then
27
-    exit $rvalue
28
-fi
29 19
 
30 20
 echo "All tests runs fine"
31 21
 
32 22
 exit 0
33
-

+ 0
- 1
.functests View File

@@ -4,7 +4,6 @@
4 4
 # SWIFT_TEST_IN_PROCESS=1 tox -e func -- --pdb test.functional.tests.TestFile.testCopy
5 5
 
6 6
 SRC_DIR=$(python -c "import os; print os.path.dirname(os.path.realpath('$0'))")
7
-set -e
8 7
 
9 8
 cd ${SRC_DIR}
10 9
 export TESTS_DIR=${SRC_DIR}/test/functional

+ 3
- 0
.mailmap View File

@@ -109,3 +109,6 @@ Kato Tomoyuki <kato.tomoyuki@jp.fujitsu.com>
109 109
 Liang Jingtao <liang.jingtao@zte.com.cn>
110 110
 Yu Yafei <yu.yafei@zte.com.cn>
111 111
 Zheng Yao <zheng.yao1@zte.com.cn>
112
+Paul Dardeau <paul.dardeau@intel.com> <pauldardeau@gmail.com>
113
+Cheng Li <shcli@cn.ibm.com>
114
+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)
26 26
 
27 27
 Contributors
28 28
 ------------
29
-Mehdi Abaakouk (sileht@redhat.com)
30
-Nelson Almeida (nelsonmarcos@gmail.com)
31
-Timur Alperovich (timur.alperovich@gmail.com)
32
-Jesse Andrews (anotherjesse@gmail.com)
33
-Joe Arnold (joe@swiftstack.com)
34
-Ionuț Arțăriși (iartarisi@suse.cz)
35
-Minwoo Bae (minwoob@us.ibm.com)
29
+Aaron Rosen (arosen@nicira.com)
30
+Adrian Smith (adrian_f_smith@dell.com)
31
+Akihito Takai (takaiak@nttdata.co.jp)
32
+Alex Gaynor (alex.gaynor@gmail.com)
33
+Alex Holden (alex@alexjonasholden.com)
34
+Alex Pecoraro (alex.pecoraro@emc.com)
35
+Alex Yang (alex890714@gmail.com)
36
+Alexandra Settle (alexandra.settle@rackspace.com)
37
+Alfredo Moralejo (amoralej@redhat.com)
38
+Alistair Coles (alistair.coles@hpe.com)
39
+Andreas Jaeger (aj@suse.de)
40
+Andrew Clay Shafer (acs@parvuscaptus.com)
41
+Andrew Hale (andy@wwwdata.eu)
42
+Andrew Welleck (awellec@us.ibm.com)
43
+Andy McCrae (andy.mccrae@gmail.com)
44
+Anh Tran (anhtt@vn.fujitsu.com)
45
+Ankur Gupta (ankur.gupta@intel.com)
46
+Anne Gentle (anne@openstack.org)
47
+Arnaud JOST (arnaud.jost@ovh.net)
48
+Atsushi Sakai (sakaia@jp.fujitsu.com)
49
+Azhagu Selvan SP (tamizhgeek@gmail.com)
50
+Ben Keller (bjkeller@us.ibm.com)
51
+Ben Martin (blmartin@us.ibm.com)
52
+Bill Huber (wbhuber@us.ibm.com)
36 53
 Bob Ball (bob.ball@citrix.com)
37
-Christopher Bartz (bartz@dkrz.de)
38
-Christian Berendt (berendt@b1-systems.de)
39
-Luis de Bethencourt (luis@debethencourt.com)
40
-Keshava Bharadwaj (kb.sankethi@gmail.com)
41
-Yummy Bian (yummy.bian@gmail.com)
42
-Darrell Bishop (darrell@swiftstack.com)
43
-James E. Blair (jeblair@openstack.org)
44
-Fabien Boucher (fabien.boucher@enovance.com)
45
-Clark Boylan (clark.boylan@gmail.com)
46
-Pádraig Brady (pbrady@redhat.com)
47
-Lorcan Browne (lorcan.browne@hpe.com)
48
-Russell Bryant (rbryant@redhat.com)
49
-Jay S. Bryant (jsbryant@us.ibm.com)
50
-Tim Burke (tim.burke@gmail.com)
54
+Brent Roskos (broskos@internap.com)
55
+Brian Cline (bcline@softlayer.com)
56
+Brian Curtin (brian.curtin@rackspace.com)
51 57
 Brian D. Burns (iosctr@gmail.com)
52
-Félix Cantournet (felix.cantournet@cloudwatt.com)
53
-Devin Carlen (devin.carlen@gmail.com)
54
-Thierry Carrez (thierry@openstack.org)
58
+Brian K. Jones (bkjones@gmail.com)
59
+Brian Ober (bober@us.ibm.com)
60
+Brian Reitz (brian.reitz@oracle.com)
61
+Bryan Keller (kellerbr@us.ibm.com)
62
+Béla Vancsics (vancsics@inf.u-szeged.hu)
63
+Caleb Tennis (caleb.tennis@gmail.com)
55 64
 Carlos Cavanna (ccavanna@ca.ibm.com)
56
-Emmanuel Cazenave (contact@emcaz.fr)
57
-Mahati Chamarthy (mahati.chamarthy@gmail.com)
58
-Zap Chang (zapchang@gmail.com)
59
-François Charlier (francois.charlier@enovance.com)
65
+Catherine Northcott (catherine@northcott.nz)
66
+Cedric Dos Santos (cedric.dos.sant@gmail.com)
67
+Changbin Liu (changbin.liu@gmail.com)
68
+ChangBo Guo(gcb) (eric.guo@easystack.cn)
60 69
 Chaozhe Chen (chaozhe.chen@easystack.cn)
61
-Ray Chen (oldsharp@163.com)
62
-Harshit Chitalia (harshit@acelio.com)
63
-Brian Cline (bcline@softlayer.com)
64
-Alistair Coles (alistair.coles@hpe.com)
70
+Charles Hsu (charles0126@gmail.com)
71
+Cheng Li (shcli@cn.ibm.com)
72
+Chris Wedgwood (cw@f00f.org)
73
+Christian Berendt (berendt@b1-systems.de)
74
+Christian Hugo (hugo.christian@web.de)
75
+Christian Schwede (cschwede@redhat.com)
76
+Christopher Bartz (bartz@dkrz.de)
77
+Christopher MacGown (chris@pistoncloud.com)
78
+Chuck Short (chuck.short@canonical.com)
79
+Clark Boylan (clark.boylan@gmail.com)
80
+Clay Gerrard (clay.gerrard@gmail.com)
65 81
 Clément Contini (ccontini@cloudops.com)
66
-Brian Curtin (brian.curtin@rackspace.com)
67
-Thiago da Silva (thiago@redhat.com)
68
-dangming (dangming@unitedstack.com)
69
-Julien Danjou (julien@danjou.info)
70
-Paul Dardeau (paul.dardeau@intel.com)
71
-Zack M. Davis (zdavis@swiftstack.com)
72
-Ksenia Demina (kdemina@mirantis.com)
82
+Colin Nicholson (colin.nicholson@iomart.com)
83
+Conrad Weidenkeller (conrad.weidenkeller@rackspace.com)
84
+Constantine Peresypkin (constantine.peresypk@rackspace.com)
85
+Cory Wright (cory.wright@rackspace.com)
86
+Cristian A Sanchez (cristian.a.sanchez@intel.com)
87
+Dae S. Kim (dae@velatum.com)
88
+Daisuke Morita (morita.daisuke@ntti3.com)
73 89
 Dan Dillinger (dan.dillinger@sonian.net)
74
-Cedric Dos Santos (cedric.dos.sant@gmail.com)
75
-Gerry Drudy (gerry.drudy@hpe.com)
76
-Morgan Fainberg (morgan.fainberg@gmail.com)
77
-ZhiQiang Fan (aji.zqfan@gmail.com)
78
-Oshrit Feder (oshritf@il.ibm.com)
79
-Mike Fedosin (mfedosin@mirantis.com)
80
-Ricardo Ferreira (ricardo.sff@gmail.com)
81
-Flaper Fesp (flaper87@gmail.com)
82
-Tom Fifield (tom@openstack.org)
83
-Florent Flament (florent.flament-ext@cloudwatt.com)
84
-Gaurav B. Gangalwar (gaurav@gluster.com)
85
-Jiangmiao Gao (tolbkni@gmail.com)
86
-Alex Gaynor (alex.gaynor@gmail.com)
87
-Martin Geisler (martin@geisler.net)
88
-Anne Gentle (anne@openstack.org)
89
-Clay Gerrard (clay.gerrard@gmail.com)
90
-Filippo Giunchedi (fgiunchedi@wikimedia.org)
91
-Mark Gius (launchpad@markgius.com)
90
+Dan Hersam (dan.hersam@hp.com)
91
+Dan Prince (dprince@redhat.com)
92
+dangming (dangming@unitedstack.com)
93
+Daniele Valeriani (daniele@dvaleriani.net)
94
+Darrell Bishop (darrell@swiftstack.com)
92 95
 David Goetz (david.goetz@rackspace.com)
93
-Tushar Gohad (tushar.gohad@intel.com)
94
-Thomas Goirand (thomas@goirand.fr)
95
-Jonathan Gonzalez V (jonathan.abdiel@gmail.com)
96
-Joe Gordon (jogo@cloudscaling.com)
97
-Shashirekha Gundur (shashirekha.j.gundur@intel.com)
98
-ChangBo Guo(gcb) (eric.guo@easystack.cn)
99
-Zhang Guoqing (zhang.guoqing@99cloud.net)
100
-Ankur Gupta (ankur.gupta@intel.com)
101 96
 David Hadas (davidh@il.ibm.com)
102
-Andrew Hale (andy@wwwdata.eu)
103
-Soren Hansen (soren@linux2go.dk)
104
-Richard Hawkins (richard.hawkins@rackspace.com)
105
-Gregory Haynes (greg@greghaynes.net)
106
-Doug Hellmann (doug.hellmann@dreamhost.com)
107
-Dan Hersam (dan.hersam@hp.com)
108
-hgangwx (hgangwx@cn.ibm.com)
97
+David Liu (david.liu@cn.ibm.com)
98
+David Moreau Simard (dmsimard@iweb.com)
99
+Dean Troyer (dtroyer@gmail.com)
100
+Denis V. Meltsaykin (dmeltsaykin@mirantis.com)
109 101
 Derek Higgins (derekh@redhat.com)
110
-Jonathan Hinson (jlhinson@us.ibm.com)
111
-Alex Holden (alex@alexjonasholden.com)
102
+Devin Carlen (devin.carlen@gmail.com)
103
+Dharmendra Kushwaha (dharmendra.kushwaha@nectechnologies.in)
104
+Dhriti Shikhar (dhrish20@gmail.com)
105
+Dieter Plaetinck (dieter@vimeo.com)
106
+Dirk Mueller (dirk@dmllr.de)
107
+Dmitriy Ukhlov (dukhlov@mirantis.com)
108
+Dmitry Ukov (dukov@mirantis.com)
109
+Dolph Mathews (dolph.mathews@gmail.com)
110
+Donagh McCabe (donagh.mccabe@hpe.com)
111
+Doron Chen (cdoron@il.ibm.com)
112
+Doug Hellmann (doug.hellmann@dreamhost.com)
113
+Doug Weimer (dweimer@gmail.com)
114
+Dragos Manolescu (dragosm@hp.com)
115
+Eamonn O'Toole (eamonn.otoole@hpe.com)
116
+Ed Leafe (ed.leafe@rackspace.com)
112 117
 Edward Hope-Morley (opentastic@gmail.com)
118
+Ellen Leahy (ellen.mar.leahy@hpe.com)
119
+Emett Speer (speer.emett@gmail.com)
120
+Emile Snyder (emile.snyder@gmail.com)
121
+Emmanuel Cazenave (contact@emcaz.fr)
122
+Eohyung Lee (liquidnuker@gmail.com)
123
+Eran Rom (eranr@il.ibm.com)
124
+Eugene Kirpichov (ekirpichov@gmail.com)
125
+Ewan Mellor (ewan.mellor@citrix.com)
126
+Fabien Boucher (fabien.boucher@enovance.com)
127
+Falk Reimann (falk.reimann@sap.com)
128
+Felipe Reyes (freyes@tty.cl)
113 129
 Ferenc Horváth (hferenc@inf.u-szeged.hu)
114
-Charles Hsu (charles0126@gmail.com)
115
-Joanna H. Huang (joanna.huitzu.huang@gmail.com)
116
-Kun Huang (gareth@unitedstack.com)
117
-Bill Huber (wbhuber@us.ibm.com)
130
+Filippo Giunchedi (fgiunchedi@wikimedia.org)
131
+Flaper Fesp (flaper87@gmail.com)
132
+Florent Flament (florent.flament-ext@cloudwatt.com)
133
+François Charlier (francois.charlier@enovance.com)
134
+Fujita Tomonori (fujita.tomonori@lab.ntt.co.jp)
135
+Félix Cantournet (felix.cantournet@cloudwatt.com)
118 136
 Gage Hugo (gh159m@att.com)
119
-Matthieu Huin (mhu@enovance.com)
120
-Hodong Hwang (hodong.hwang@kt.com)
121
-Motonobu Ichimura (motonobu@gmail.com)
122
-Andreas Jaeger (aj@suse.de)
123
-Shri Javadekar (shrinand@maginatics.com)
124
-Iryoung Jeong (iryoung@gmail.com)
125
-Paul Jimenez (pj@place.org)
126
-Liang Jingtao (liang.jingtao@zte.com.cn)
127
-Zhang Jinnan (ben.os@99cloud.net)
128
-Jason Johnson (jajohnson@softlayer.com)
129
-Brian K. Jones (bkjones@gmail.com)
130
-Arnaud JOST (arnaud.jost@ovh.net)
131
-Kiyoung Jung (kiyoung.jung@kt.com)
137
+Ganesh Maharaj Mahalingam (ganesh.mahalingam@intel.com)
138
+Gaurav B. Gangalwar (gaurav@gluster.com)
139
+gecong1973 (ge.cong@zte.com.cn)
140
+gengchc2 (geng.changcai2@zte.com.cn)
141
+Gerry Drudy (gerry.drudy@hpe.com)
142
+Gil Vernik (gilv@il.ibm.com)
143
+Gonéri Le Bouder (goneri.lebouder@enovance.com)
144
+Graham Hayes (graham.hayes@hpe.com)
145
+Gregory Haynes (greg@greghaynes.net)
146
+Guang Yee (guang.yee@hpe.com)
147
+Gábor Antal (antal@inf.u-szeged.hu)
148
+Ha Van Tu (tuhv@vn.fujitsu.com)
149
+Hamdi Roumani (roumani@ca.ibm.com)
150
+Hanxi Liu (hanxi.liu@easystack.cn)
132 151
 Harshada Mangesh Kakad (harshadak@metsi.co.uk)
133
-Takashi Kajinami (kajinamit@nttdata.co.jp)
134
-Matt Kassawara (mkassawara@gmail.com)
135
-Morita Kazutaka (morita.kazutaka@gmail.com)
136
-Josh Kearney (josh@jk0.org)
137
-Ben Keller (bjkeller@us.ibm.com)
138
-Bryan Keller (kellerbr@us.ibm.com)
152
+Harshit Chitalia (harshit@acelio.com)
153
+hgangwx (hgangwx@cn.ibm.com)
154
+Hisashi Osanai (osanai.hisashi@jp.fujitsu.com)
155
+Hodong Hwang (hodong.hwang@kt.com)
156
+Hou Ming Wang (houming.wang@easystack.cn)
157
+houweichao (houwch@gohighsec.com)
158
+Hua Zhang (zhuadl@cn.ibm.com)
159
+Hugo Kuo (tonytkdk@gmail.com)
139 160
 Ilya Kharin (ikharin@mirantis.com)
140
-Dae S. Kim (dae@velatum.com)
141
-Nathan Kinder (nkinder@redhat.com)
142
-Eugene Kirpichov (ekirpichov@gmail.com)
143
-Leah Klearman (lklrmn@gmail.com)
144
-Martin Kletzander (mkletzan@redhat.com)
161
+Ionuț Arțăriși (iartarisi@suse.cz)
162
+Iryoung Jeong (iryoung@gmail.com)
145 163
 Jaivish Kothari (jaivish.kothari@nectechnologies.in)
146
-Petr Kovar (pkovar@redhat.com)
147
-Steve Kowalik (steven@wedontsleep.org)
148
-Sergey Kraynev (skraynev@mirantis.com)
149
-Sushil Kumar (sushil.kumar2@globallogic.com)
150
-Madhuri Kumari (madhuri.rai07@gmail.com)
151
-Yatin Kumbhare (yatinkumbhare@gmail.com)
152
-Dharmendra Kushwaha (dharmendra.kushwaha@nectechnologies.in)
153
-Hugo Kuo (tonytkdk@gmail.com)
154
-Tin Lam (tl3438@att.com)
155
-Steven Lang (Steven.Lang@hgst.com)
156
-Gonéri Le Bouder (goneri.lebouder@enovance.com)
157
-Romain Le Disez (romain.ledisez@ovh.net)
158
-John Leach (john@johnleach.co.uk)
159
-Ed Leafe (ed.leafe@rackspace.com)
160
-Thomas Leaman (thomas.leaman@hp.com)
161
-Eohyung Lee (liquidnuker@gmail.com)
162
-Zhao Lei (zhaolei@cn.fujitsu.com)
164
+James E. Blair (jeblair@openstack.org)
165
+James Page (james.page@ubuntu.com)
163 166
 Jamie Lennox (jlennox@redhat.com)
164
-Cheng Li (shcli@cn.ibm.com)
165
-Mingyu Li (li.mingyu@99cloud.net)
166
-Tong Li (litong01@us.ibm.com)
167
-Ke Liang (ke.liang@easystack.cn)
168
-Peter Lisak (peter.lisak@firma.seznam.cz)
169
-David Liu (david.liu@cn.ibm.com)
170
-Changbin Liu (changbin.liu@gmail.com)
167
+Janie Richling (jrichli@us.ibm.com)
168
+Jason Johnson (jajohnson@softlayer.com)
169
+Jay S. Bryant (jsbryant@us.ibm.com)
170
+Jeremy Stanley (fungi@yuggoth.org)
171
+Jesse Andrews (anotherjesse@gmail.com)
172
+Jian Zhang (jian.zhang@intel.com)
173
+Jiangmiao Gao (tolbkni@gmail.com)
171 174
 Jing Liuqing (jing.liuqing@99cloud.net)
172
-Victor Lowther (victor.lowther@gmail.com)
173
-Sergey Lukjanov (slukjanov@mirantis.com)
174
-Zhongyue Luo (zhongyue.nah@intel.com)
175
-Paul Luse (paul.e.luse@intel.com)
176
-Christopher MacGown (chris@pistoncloud.com)
177
-Ganesh Maharaj Mahalingam (ganesh.mahalingam@intel.com)
178
-Maria Malyarova (savoreux69@gmail.com)
179
-Dragos Manolescu (dragosm@hp.com)
180
-Ben Martin (blmartin@us.ibm.com)
181
-Steve Martinelli (stevemar@ca.ibm.com)
175
+Joanna H. Huang (joanna.huitzu.huang@gmail.com)
176
+Joe Arnold (joe@swiftstack.com)
177
+Joe Gordon (jogo@cloudscaling.com)
178
+John Leach (john@johnleach.co.uk)
179
+Jola Mirecka (jola.mirecka@hp.com)
180
+Jon Snitow (otherjon@swiftstack.com)
181
+Jonathan Gonzalez V (jonathan.abdiel@gmail.com)
182
+Jonathan Hinson (jlhinson@us.ibm.com)
183
+Josh Kearney (josh@jk0.org)
182 184
 Juan J. Martinez (juan@memset.com)
183
-Marcelo Martins (btorch@gmail.com)
184
-Nakagawa Masaaki (nakagawamsa@nttdata.co.jp)
185
-Dolph Mathews (dolph.mathews@gmail.com)
186
-Tomas Matlocha (tomas.matlocha@firma.seznam.cz)
185
+Julien Danjou (julien@danjou.info)
186
+Kai Zhang (zakir.exe@gmail.com)
187
+Kapil Thangavelu (kapil.foss@gmail.com)
188
+karen chan (karen@karen-chan.com)
189
+Kato Tomoyuki (kato.tomoyuki@jp.fujitsu.com)
190
+Kazuhiro Miyahara (miyahara.kazuhiro@lab.ntt.co.jp)
191
+Ke Liang (ke.liang@easystack.cn)
187 192
 Kenichiro Matsuda (matsuda_kenichi@jp.fujitsu.com)
193
+Keshava Bharadwaj (kb.sankethi@gmail.com)
194
+Kiyoung Jung (kiyoung.jung@kt.com)
195
+Koert van der Veer (koert@cloudvps.com)
196
+Kota Tsuyuzaki (tsuyuzaki.kota@lab.ntt.co.jp)
197
+Ksenia Demina (kdemina@mirantis.com)
198
+Kun Huang (gareth@unitedstack.com)
199
+Larry Rensing (lr699s@att.com)
200
+Leah Klearman (lklrmn@gmail.com)
201
+Li Riqiang (lrqrun@gmail.com)
202
+Liang Jingtao (liang.jingtao@zte.com.cn)
203
+Lin Yang (lin.a.yang@intel.com)
204
+Liu Siqi (meizu647@gmail.com)
205
+liujiong (liujiong@gohighsec.com)
206
+Lokesh S (lokesh.s@hp.com)
207
+Lorcan Browne (lorcan.browne@hpe.com)
208
+Luis de Bethencourt (luis@debethencourt.com)
209
+Luong Anh Tuan (tuanla@vn.fujitsu.com)
210
+Madhuri Kumari (madhuri.rai07@gmail.com)
211
+Mahati Chamarthy (mahati.chamarthy@gmail.com)
212
+maoshuai (fwsakura@163.com)
213
+Marcelo Martins (btorch@gmail.com)
214
+Maria Malyarova (savoreux69@gmail.com)
215
+Mark Gius (launchpad@markgius.com)
216
+Mark Seger (mark.seger@hpe.com)
217
+Martin Geisler (martin@geisler.net)
218
+Martin Kletzander (mkletzan@redhat.com)
219
+Maru Newby (mnewby@internap.com)
220
+Matt Kassawara (mkassawara@gmail.com)
221
+Matt Riedemann (mriedem@us.ibm.com)
222
+Matthew Oliver (matt@oliver.net.au)
223
+Matthieu Huin (mhu@enovance.com)
224
+Mauro Stettler (mauro.stettler@gmail.com)
225
+Mehdi Abaakouk (sileht@redhat.com)
188 226
 Michael Matur (michael.matur@gmail.com)
189
-Donagh McCabe (donagh.mccabe@hpe.com)
190
-Andy McCrae (andy.mccrae@gmail.com)
191
-Paul McMillan (paul.mcmillan@nebula.com)
192
-Ewan Mellor (ewan.mellor@citrix.com)
193
-Denis V. Meltsaykin (dmeltsaykin@mirantis.com)
194
-Samuel Merritt (sam@swiftstack.com)
195
-Stephen Milton (milton@isomedia.com)
196
-Jola Mirecka (jola.mirecka@hp.com)
197
-Kazuhiro Miyahara (miyahara.kazuhiro@lab.ntt.co.jp)
198
-Alfredo Moralejo (amoralej@redhat.com)
199
-Daisuke Morita (morita.daisuke@ntti3.com)
227
+Michael Shuler (mshuler@gmail.com)
228
+Mike Fedosin (mfedosin@mirantis.com)
229
+Mingyu Li (li.mingyu@99cloud.net)
230
+Minwoo Bae (minwoob@us.ibm.com)
231
+Mitsuhiro SHIGEMATSU (shigematsu.mitsuhiro@lab.ntt.co.jp)
200 232
 Mohit Motiani (mohit.motiani@intel.com)
201
-Dirk Mueller (dirk@dmllr.de)
202
-Takashi Natsume (natsume.takashi@lab.ntt.co.jp)
203
-Russ Nelson (russ@crynwr.com)
204
-Maru Newby (mnewby@internap.com)
233
+Monty Taylor (mordred@inaugust.com)
234
+Morgan Fainberg (morgan.fainberg@gmail.com)
235
+Morita Kazutaka (morita.kazutaka@gmail.com)
236
+Motonobu Ichimura (motonobu@gmail.com)
237
+Nakagawa Masaaki (nakagawamsa@nttdata.co.jp)
238
+Nakul Dahiwade (nakul.dahiwade@intel.com)
239
+Nam Nguyen Hoai (namnh@vn.fujitsu.com)
240
+Nandini Tata (nandini.tata@intel.com)
241
+Nathan Kinder (nkinder@redhat.com)
242
+Nelson Almeida (nelsonmarcos@gmail.com)
205 243
 Newptone (xingchao@unitedstack.com)
206
-Colin Nicholson (colin.nicholson@iomart.com)
207
-Zhenguo Niu (zhenguo@unitedstack.com)
208
-Catherine Northcott (catherine@northcott.nz)
244
+Nguyen Hung Phuong (phuongnh@vn.fujitsu.com)
245
+Nguyen Phuong An (AnNP@vn.fujitsu.com)
246
+Nicolas Helgeson (nh202b@att.com)
247
+Nicolas Trangez (ikke@nicolast.be)
248
+Ning Zhang (ning@zmanda.com)
249
+Nirmal Thacker (nirmalthacker@gmail.com)
250
+npraveen35 (npraveen35@gmail.com)
251
+Olga Saprycheva (osapryc@us.ibm.com)
209 252
 Ondrej Novy (ondrej.novy@firma.seznam.cz)
210
-Brian Ober (bober@us.ibm.com)
211
-Timothy Okwii (tokwii@cisco.com)
212
-Matthew Oliver (matt@oliver.net.au)
213
-Hisashi Osanai (osanai.hisashi@jp.fujitsu.com)
214
-Eamonn O'Toole (eamonn.otoole@hpe.com)
215 253
 Or Ozeri (oro@il.ibm.com)
216
-James Page (james.page@ubuntu.com)
217
-Prashanth Pai (ppai@redhat.com)
218
-Venkateswarlu Pallamala (p.venkatesh551@gmail.com)
254
+Oshrit Feder (oshritf@il.ibm.com)
255
+Paul Dardeau (paul.dardeau@intel.com)
256
+Paul Jimenez (pj@place.org)
257
+Paul Luse (paul.e.luse@intel.com)
258
+Paul McMillan (paul.mcmillan@nebula.com)
219 259
 Pawel Palucki (pawel.palucki@gmail.com)
220
-Alex Pecoraro (alex.pecoraro@emc.com)
221
-Sascha Peilicke (saschpe@gmx.de)
222
-Constantine Peresypkin (constantine.peresypk@rackspace.com)
223
-Nguyen Hung Phuong (phuongnh@vn.fujitsu.com)
224
-Dieter Plaetinck (dieter@vimeo.com)
225
-Dan Prince (dprince@redhat.com)
226
-Saverio Proto (saverio.proto@switch.ch)
227
-Sivasathurappan Radhakrishnan (siva.radhakrishnan@intel.com)
228
-Sarvesh Ranjan (saranjan@cisco.com)
229
-Falk Reimann (falk.reimann@sap.com)
230
-Brian Reitz (brian.reitz@oracle.com)
260
+Pearl Yajing Tan (pearl.y.tan@seagate.com)
261
+Pete Zaitcev (zaitcev@kotori.zaitcev.us)
262
+Peter Lisak (peter.lisak@firma.seznam.cz)
263
+Petr Kovar (pkovar@redhat.com)
264
+Pradeep Kumar Singh (pradeep.singh@nectechnologies.in)
265
+Prashanth Pai (ppai@redhat.com)
266
+Pádraig Brady (pbrady@redhat.com)
231 267
 Qiaowei Ren (qiaowei.ren@intel.com)
232
-Felipe Reyes (freyes@tty.cl)
233
-Janie Richling (jrichli@us.ibm.com)
234
-Matt Riedemann (mriedem@us.ibm.com)
235
-Li Riqiang (lrqrun@gmail.com)
236 268
 Rafael Rivero (rafael@cloudscaling.com)
237
-Larry Rensing (lr699s@att.com)
238
-Victor Rodionov (victor.rodionov@nexenta.com)
239
-Eran Rom (eranr@il.ibm.com)
240
-Aaron Rosen (arosen@nicira.com)
241
-Brent Roskos (broskos@internap.com)
242
-Hamdi Roumani (roumani@ca.ibm.com)
243
-Shilla Saebi (shilla.saebi@gmail.com)
244
-Atsushi Sakai (sakaia@jp.fujitsu.com)
245
-Cristian A Sanchez (cristian.a.sanchez@intel.com)
246
-Olga Saprycheva (osapryc@us.ibm.com)
247
-Christian Schwede (cschwede@redhat.com)
248
-Mark Seger (mark.seger@hpe.com)
249
-Azhagu Selvan SP (tamizhgeek@gmail.com)
250
-Alexandra Settle (alexandra.settle@rackspace.com)
251
-Andrew Clay Shafer (acs@parvuscaptus.com)
252
-Mitsuhiro SHIGEMATSU (shigematsu.mitsuhiro@lab.ntt.co.jp)
253
-Dhriti Shikhar (dhrish20@gmail.com)
254
-Chuck Short (chuck.short@canonical.com)
255
-Michael Shuler (mshuler@gmail.com)
256
-David Moreau Simard (dmsimard@iweb.com)
257
-Scott Simpson (sasimpson@gmail.com)
258
-Pradeep Kumar Singh (pradeep.singh@nectechnologies.in)
269
+Rainer Toebbicke (Rainer.Toebbicke@cern.ch)
270
+Ray Chen (oldsharp@163.com)
271
+Rebecca Finn (rebeccax.finn@intel.com)
272
+Ricardo Ferreira (ricardo.sff@gmail.com)
273
+Richard Hawkins (richard.hawkins@rackspace.com)
274
+Romain Le Disez (romain.ledisez@ovh.net)
275
+Russ Nelson (russ@crynwr.com)
276
+Russell Bryant (rbryant@redhat.com)
277
+Samuel Merritt (sam@swiftstack.com)
259 278
 Sarafraj Singh (Sarafraj.Singh@intel.com)
260
-Liu Siqi (meizu647@gmail.com)
261
-Adrian Smith (adrian_f_smith@dell.com)
262
-Jon Snitow (otherjon@swiftstack.com)
263
-Emile Snyder (emile.snyder@gmail.com)
264
-Emett Speer (speer.emett@gmail.com)
279
+Sarvesh Ranjan (saranjan@cisco.com)
280
+Sascha Peilicke (saschpe@gmx.de)
281
+Saverio Proto (saverio.proto@switch.ch)
282
+Scott Simpson (sasimpson@gmail.com)
283
+Sergey Kraynev (skraynev@mirantis.com)
284
+Sergey Lukjanov (slukjanov@mirantis.com)
285
+Shane Wang (shane.wang@intel.com)
286
+Shashank Kumar Shankar (shashank.kumar.shankar@intel.com)
287
+Shashirekha Gundur (shashirekha.j.gundur@intel.com)
288
+Shilla Saebi (shilla.saebi@gmail.com)
289
+Shri Javadekar (shrinand@maginatics.com)
290
+Sivasathurappan Radhakrishnan (siva.radhakrishnan@intel.com)
291
+Soren Hansen (soren@linux2go.dk)
292
+Stephen Milton (milton@isomedia.com)
293
+Steve Kowalik (steven@wedontsleep.org)
294
+Steve Martinelli (stevemar@ca.ibm.com)
295
+Steven Lang (Steven.Lang@hgst.com)
296
+Sushil Kumar (sushil.kumar2@globallogic.com)
297
+Takashi Kajinami (kajinamit@nttdata.co.jp)
298
+Takashi Natsume (natsume.takashi@lab.ntt.co.jp)
265 299
 TheSriram (sriram@klusterkloud.com)
266
-Jeremy Stanley (fungi@yuggoth.org)
267
-Mauro Stettler (mauro.stettler@gmail.com)
300
+Thiago da Silva (thiago@redhat.com)
301
+Thierry Carrez (thierry@openstack.org)
302
+Thomas Goirand (thomas@goirand.fr)
303
+Thomas Leaman (thomas.leaman@hp.com)
304
+Tim Burke (tim.burke@gmail.com)
305
+Timothy Okwii (tokwii@cisco.com)
306
+Timur Alperovich (timur.alperovich@gmail.com)
307
+Tin Lam (tl3438@att.com)
268 308
 Tobias Stevenson (tstevenson@vbridges.com)
309
+Tom Fifield (tom@openstack.org)
310
+Tomas Matlocha (tomas.matlocha@firma.seznam.cz)
311
+Tong Li (litong01@us.ibm.com)
312
+Travis McPeak (tmcpeak@us.ibm.com)
313
+Tushar Gohad (tushar.gohad@intel.com)
314
+venkatamahesh (venkatamaheshkotha@gmail.com)
315
+Venkateswarlu Pallamala (p.venkatesh551@gmail.com)
316
+Victor Lowther (victor.lowther@gmail.com)
317
+Victor Rodionov (victor.rodionov@nexenta.com)
269 318
 Victor Stinner (vstinner@redhat.com)
270
-Akihito Takai (takaiak@nttdata.co.jp)
271
-Pearl Yajing Tan (pearl.y.tan@seagate.com)
272
-Nandini Tata (nandini.tata.15@gmail.com)
273
-Yuriy Taraday (yorik.sar@gmail.com)
274
-Monty Taylor (mordred@inaugust.com)
275
-Caleb Tennis (caleb.tennis@gmail.com)
276
-Rainer Toebbicke (Rainer.Toebbicke@cern.ch)
277
-Fujita Tomonori (fujita.tomonori@lab.ntt.co.jp)
278
-Kato Tomoyuki (kato.tomoyuki@jp.fujitsu.com)
279
-Nirmal Thacker (nirmalthacker@gmail.com)
280
-Kapil Thangavelu (kapil.foss@gmail.com)
281
-Anh Tran (anhtt@vn.fujitsu.com)
282
-Nicolas Trangez (ikke@nicolast.be)
283
-Dean Troyer (dtroyer@gmail.com)
284
-Kota Tsuyuzaki (tsuyuzaki.kota@lab.ntt.co.jp)
285
-Dmitriy Ukhlov (dukhlov@mirantis.com)
286
-Dmitry Ukov (dukov@mirantis.com)
287 319
 Vincent Untz (vuntz@suse.com)
288
-Daniele Valeriani (daniele@dvaleriani.net)
289
-Koert van der Veer (koert@cloudvps.com)
290
-Béla Vancsics (vancsics@inf.u-szeged.hu)
291 320
 Vladimir Vechkanov (vvechkanov@mirantis.com)
292
-venkatamahesh (venkatamaheshkotha@gmail.com)
293
-Gil Vernik (gilv@il.ibm.com)
294
-Hou Ming Wang (houming.wang@easystack.cn)
295
-Shane Wang (shane.wang@intel.com)
296
-Yaguang Wang (yaguang.wang@intel.com)
297
-Chris Wedgwood (cw@f00f.org)
298
-Conrad Weidenkeller (conrad.weidenkeller@rackspace.com)
299
-Doug Weimer (dweimer@gmail.com)
300
-Andrew Welleck (awellec@us.ibm.com)
301 321
 Wu Wenxiang (wu.wenxiang@99cloud.net)
302
-Cory Wright (cory.wright@rackspace.com)
322
+Yaguang Wang (yaguang.wang@intel.com)
323
+Yatin Kumbhare (yatinkumbhare@gmail.com)
303 324
 Ye Jia Xu (xyj.asmy@gmail.com)
304
-Yu Yafei (yu.yafei@zte.com.cn)
305
-Zheng Yao (zheng.yao1@zte.com.cn)
306
-Alex Yang (alex890714@gmail.com)
307
-Lin Yang (lin.a.yang@intel.com)
308 325
 Yee (mail.zhang.yee@gmail.com)
309
-Guang Yee (guang.yee@hpe.com)
310
-Pete Zaitcev (zaitcev@kotori.zaitcev.us)
311
-Hua Zhang (zhuadl@cn.ibm.com)
312
-Jian Zhang (jian.zhang@intel.com)
313
-Kai Zhang (zakir.exe@gmail.com)
314
-Ning Zhang (ning@zmanda.com)
326
+Yu Yafei (yu.yafei@zte.com.cn)
315 327
 Yuan Zhou (yuan.zhou@intel.com)
328
+Yummy Bian (yummy.bian@gmail.com)
329
+Yuriy Taraday (yorik.sar@gmail.com)
330
+Yushiro FURUKAWA (y.furukawa_2@jp.fujitsu.com)
331
+Zack M. Davis (zdavis@swiftstack.com)
332
+Zap Chang (zapchang@gmail.com)
333
+Zhang Guoqing (zhang.guoqing@99cloud.net)
334
+Zhang Jinnan (ben.os@99cloud.net)
335
+zhangyanxian (zhangyanxianmail@163.com)
336
+Zhao Lei (zhaolei@cn.fujitsu.com)
337
+Zheng Yao (zheng.yao1@zte.com.cn)
338
+zheng yin (yin.zheng@easystack.cn)
339
+Zhenguo Niu (zhenguo@unitedstack.com)
340
+ZhiQiang Fan (aji.zqfan@gmail.com)
341
+Zhongyue Luo (zhongyue.nah@intel.com)
342
+zhufl (zhu.fanglei@zte.com.cn)

+ 121
- 0
CHANGELOG View File

@@ -1,3 +1,124 @@
1
+swift (2.11.0)
2
+
3
+    * We have made significant improvements and changes to the erasure
4
+      code implementation.
5
+
6
+      - Instead of using a separate .durable file to indicate the
7
+        durable status of an EC fragment archive, we rename the .data
8
+        to include a durable marker in the filename. This saves one
9
+        inode for every EC .data file. Existing .durable files will not
10
+        be removed, and they will continue to work just fine.
11
+
12
+        Note that after writing EC data with Swift 2.11.0 or later, that
13
+        data will not be accessible to earlier versions of Swift.
14
+
15
+      - Closed a bug where ssync may have written bad fragment data in
16
+        some circumstances. A check was added to ensure the correct number
17
+        of bytes is written for a fragment before finalizing the write.
18
+        Also, erasure coded fragment metadata will now be validated on read
19
+        requests and, if bad data is found, the fragment will be quarantined.
20
+
21
+      - The improvements to EC reads made in Swift 2.10.0 have also been
22
+        applied to the reconstructor. This allows fragments to be rebuilt
23
+        in more circumstances, resulting in faster recovery from failures.
24
+
25
+      - WARNING: If you are using the ISA-L library for erasure codes,
26
+        please upgrade to liberasurecode 1.3.1 (or later) as soon as
27
+        possible. If you are using isa_l_rs_vand with more than 4 parity,
28
+        please read https://bugs.launchpad.net/swift/+bug/1639691 and take
29
+        necessary action.
30
+
31
+      - Updated the PyECLib dependency to 1.3.1.
32
+
33
+    * Added a configurable URL base to staticweb.
34
+
35
+    * Support multi-range GETs for static large objects.
36
+
37
+    * TempURLs using the "inline" parameter can now also set the
38
+      "filename" parameter. Both are used in the Content-Disposition
39
+      response header.
40
+
41
+    * Mirror X-Trans-Id to X-Openstack-Request-Id.
42
+
43
+    * SLO will now concurrently HEAD segments, resulting in much faster
44
+      manifest validation and object creation. By default, two HEAD requests
45
+      will be done at a time, but this can be changed by the operator via
46
+      the new `concurrency` setting in the "[filter:slo]" section of
47
+      the proxy server config.
48
+
49
+    * Suppressed the KeyError message when auditor finds an expired object.
50
+
51
+    * Daemons using InternalClient can now be properly killed with SIGTERM.
52
+
53
+    * Added a "user" option to the drive-audit config file. Its value is
54
+      used to set the owner of the drive-audit recon cache.
55
+
56
+    * Throttle update_auditor_status calls so it updates no more than once
57
+      per minute.
58
+
59
+    * Suppress unexpected-file warnings for rsync temp files.
60
+
61
+    * Various other minor bug fixes and improvements.
62
+
63
+swift (2.10.0, OpenStack Newton)
64
+
65
+    * Object versioning now supports a "history" mode in addition to
66
+      the older "stack" mode. The difference is in how DELETE requests
67
+      are handled. For full details, please read
68
+      http://docs.openstack.org/developer/swift/overview_object_versioning.html.
69
+
70
+    * New config variables to change the schedule priority and I/O
71
+      scheduling class. Servers and daemons now understand
72
+      `nice_priority`, `ionice_class`, and `ionice_priority` to
73
+      schedule their relative importance. Please read
74
+      http://docs.openstack.org/developer/swift/deployment_guide.html
75
+      for full config details.
76
+
77
+    * On newer kernels (3.15+ when using xfs), Swift will use the O_TMPFILE
78
+      flag when opening a file instead of creating a temporary file
79
+      and renaming it on commit. This makes the data path simpler and
80
+      allows the filesystem to more efficiently optimize the files on
81
+      disk, resulting in better performance.
82
+
83
+    * Erasure code GET performance has been significantly
84
+      improved in clusters that are not completely healthy.
85
+
86
+    * Significant improvements to the api-ref doc available at
87
+      http://developer.openstack.org/api-ref/object-storage/.
88
+
89
+    * A PUT or POST to a container will now update the container's
90
+      Last-Modified time, and that value will be included in a
91
+      GET/HEAD response.
92
+
93
+    * Include object sysmeta in POST responses. Sysmeta is still
94
+      stripped from the response before being sent to the client, but
95
+      this allows middleware to make use of the information.
96
+
97
+    * Fixed a bug where a container listing delimiter wouldn't work
98
+      with encryption.
99
+
100
+    * Fixed a bug where some headers weren't being copied correctly
101
+      in a COPY request.
102
+
103
+    * Container sync can now copy SLOs more efficiently by allowing
104
+      the manifest to be synced before all of the referenced segments.
105
+      This fixes a bug where container sync would not copy SLO manifests.
106
+
107
+    * Fixed a bug where some tombstone files might never be reclaimed.
108
+
109
+    * Update dnspython dependency to 1.14, removing the need to have
110
+      separate dnspython dependencies for Py2 and Py3.
111
+
112
+    * Deprecate swift-temp-url and call python-swiftclient's
113
+      implementation instead. This adds python-swiftclient as an
114
+      optional dependency of Swift.
115
+
116
+    * Moved other-requirements.txt to bindep.txt. bindep.txt lists
117
+      non-python dependencies of Swift.
118
+
119
+    * Various other minor bug fixes and improvements.
120
+
121
+
1 122
 swift (2.9.0)
2 123
 
3 124
     * 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
109 109
 because: CRITICAL. BUG. FIX.
110 110
 
111 111
 You should comment inline to praise code that is "obvious". You should
112
-comment inline to highlight code that that you found to be "obfuscated".
112
+comment inline to highlight code that you found to be "obfuscated".
113 113
 
114 114
 Unfortunately "readability" is often subjective. We should remember
115 115
 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
29 29
 import sys
30 30
 import warnings
31 31
 
32
-# TODO(Graham Hayes): Remove the following block of code when os-api-ref is
33
-# using openstackdocstheme
32
+import openstackdocstheme
34 33
 
35
-import os_api_ref
34
+html_theme = 'openstackdocs'
35
+html_theme_path = [openstackdocstheme.get_html_theme_path()]
36
+html_theme_options = {
37
+    "sidebar_mode": "toc",
38
+}
36 39
 
37
-if getattr(os_api_ref, 'THEME', 'olsosphinx') == 'openstackdocstheme':
38
-    # We are on the new version with openstackdocstheme support
39
-
40
-    extensions = [
41
-        'os_api_ref',
42
-    ]
43
-
44
-    import openstackdocstheme  # noqa
45
-
46
-    html_theme = 'openstackdocs'
47
-    html_theme_path = [openstackdocstheme.get_html_theme_path()]
48
-    html_theme_options = {
49
-        "sidebar_mode": "toc",
50
-    }
51
-
52
-else:
53
-    # We are on the old version without openstackdocstheme support
54
-
55
-    extensions = [
56
-        'os_api_ref',
57
-        'oslosphinx',
58
-    ]
59
-
60
-# End temporary block
40
+extensions = [
41
+    'os_api_ref',
42
+]
61 43
 
62 44
 # If extensions (or modules to document with autodoc) are in another directory,
63 45
 # add these directories to sys.path here. If the directory is relative to the
@@ -94,6 +76,14 @@ version = __version__.rsplit('.', 1)[0]
94 76
 # The full version, including alpha/beta/rc tags.
95 77
 release = __version__
96 78
 
79
+# Config logABug feature
80
+giturl = u'http://git.openstack.org/cgit/openstack/swift/tree/api-ref/source'
81
+# source tree
82
+# html_context allows us to pass arbitrary values into the html template
83
+html_context = {'bug_tag': 'api-ref',
84
+                'giturl': giturl,
85
+                'bug_project': 'swift'}
86
+
97 87
 # The language for content autogenerated by Sphinx. Refer to documentation
98 88
 # for a list of supported languages.
99 89
 #

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

@@ -6,8 +6,10 @@
6 6
 
7 7
 .. rest_expand_all::
8 8
 
9
+.. include:: storage_info.inc
9 10
 .. include:: storage-account-services.inc
10
-.. include:: storage_endpoints.inc
11
-.. include:: storage-object-services.inc
12 11
 .. include:: storage-container-services.inc
13
-.. include:: storage_info.inc
12
+.. include:: storage-object-services.inc
13
+.. include:: storage_endpoints.inc
14
+
15
+

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

@@ -0,0 +1,6 @@
1
+.. note::
2
+
3
+    The metadata value must be UTF-8-encoded and then
4
+    URL-encoded before you include it in the header.
5
+    This is a direct violation of the HTTP/1.1 `basic rules
6
+    <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 @@
1
+.. note::
2
+
3
+    Metadata keys (the name of the metadata) must be treated as case-insensitive
4
+    at all times. These keys can contain ASCII 7-bit characters that are not
5
+    control (0-31) characters, DEL, or a separator character, according to
6
+    `HTTP/1.1 <http://www.w3.org/Protocols/rfc2616/rfc2616.html>`_ .
7
+    The underscore character is silently converted to a hyphen.

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

@@ -22,9 +22,9 @@ Content-Disposition:
22 22
   in: header
23 23
   required: false
24 24
   type: string
25
-Content-Disposition_1:
25
+Content-Disposition_resp:
26 26
   description: |
27
-    If set, specifies the override behavior for the
27
+    If present, specifies the override behavior for the
28 28
     browser. For example, this header might specify that the browser
29 29
     use a download program to save this file rather than show the
30 30
     file, which is the default.  If not set, this header is not
@@ -39,37 +39,36 @@ Content-Encoding:
39 39
   in: header
40 40
   required: false
41 41
   type: string
42
-Content-Encoding_1:
42
+Content-Encoding_resp:
43 43
   description: |
44
-    If set, the value of the ``Content-Encoding``
44
+    If present, the value of the ``Content-Encoding``
45 45
     metadata.  If not set, the operation does not return this header.
46 46
   in: header
47 47
   required: false
48 48
   type: string
49
-Content-Length:
49
+Content-Length_cud_resp:
50 50
   description: |
51 51
     If the operation succeeds, this value is zero
52
-    (0). If the operation fails, this value is the length of the error
52
+    (0) or the length of informational or error
53 53
     text in the response body.
54 54
   in: header
55 55
   required: true
56 56
   type: string
57
-Content-Length_1:
57
+Content-Length_get_resp:
58 58
   description: |
59
-    Set to the length of the object content. Do not
60
-    set if chunked transfer encoding is being used.
59
+    The length of the object content in the response
60
+    body, in bytes.
61 61
   in: header
62
-  required: false
63
-  type: integer
64
-Content-Length_2:
62
+  required: true
63
+  type: string
64
+Content-Length_listing_resp:
65 65
   description: |
66
-    The length of the response body that contains the
67
-    list of names. If the operation fails, this value is the length of
68
-    the error text in the response body.
66
+    If the operation succeeds, the length of the response body
67
+    in bytes. On error, this is the length of the error text.
69 68
   in: header
70 69
   required: true
71 70
   type: string
72
-Content-Length_3:
71
+Content-Length_obj_head_resp:
73 72
   description: |
74 73
     HEAD operations do not return content. The
75 74
     ``Content-Length`` header value is not the size of the response
@@ -77,57 +76,52 @@ Content-Length_3:
77 76
   in: header
78 77
   required: true
79 78
   type: string
80
-Content-Length_4:
79
+Content-Length_put_req:
81 80
   description: |
82
-    The length of the object content in the response
83
-    body, in bytes.
81
+    Set to the length of the object content (i.e. the length in bytes
82
+    of the request body). Do not
83
+    set if chunked transfer encoding is being used.
84 84
   in: header
85
-  required: true
86
-  type: string
87
-Content-Type:
85
+  required: false
86
+  type: integer
87
+Content-Type_cud_resp:
88 88
   description: |
89
-    Changes the MIME type for the object.
89
+    If present, this value is the MIME
90
+    type of the informational or error text in the response body.
90 91
   in: header
91 92
   required: false
92 93
   type: string
93
-Content-Type_1:
94
+Content-Type_listing_resp:
94 95
   description: |
95
-    If the operation fails, this value is the MIME
96
-    type of the error text in the response body.
96
+    If the operation succeeds, this value is the MIME type of the list
97
+    response. The MIME type is determined by the listing format specified by
98
+    the request and will be one of ``text/plain``, ``application/json``,
99
+    ``application/xml``, or ``text/xml``. If the operation fails, this value is
100
+    the MIME type of the error text in the response body.
97 101
   in: header
98 102
   required: true
99 103
   type: string
100
-Content-Type_2:
104
+Content-Type_obj_cu_req:
101 105
   description: |
102
-    The MIME type of the object.
106
+    Sets the MIME type for the object.
103 107
   in: header
104
-  required: true
108
+  required: false
105 109
   type: string
106
-Content-Type_3:
110
+Content-Type_obj_resp:
107 111
   description: |
108
-    The MIME type of the list of names. If the
109
-    operation fails, this value is the MIME type of the error text in
110
-    the response body.
112
+    If the operation succeeds, this value is the MIME type of the object. If
113
+    the operation fails, this value is the MIME type of the error text in the
114
+    response body.
111 115
   in: header
112 116
   required: true
113 117
   type: string
114 118
 Date:
115 119
   description: |
116
-    The transaction date and time.
117
-
118
-    The date and time stamp format is `ISO 8601
119
-    <https://en.wikipedia.org/wiki/ISO_8601>`_:
120
-
121
-    ::
122
-
123
-       CCYY-MM-DDThh:mm:ss±hh:mm
124
-
125
-    For example, ``2015-08-27T09:49:58-05:00``.
126
-
127
-    The ``±hh:mm`` value, if included, is the time zone as an offset
128
-    from UTC. In the previous example, the offset value is ``-05:00``.
129
-
130
-    A ``null`` value indicates that the token never expires.
120
+    The date and time the system responded to the request,
121
+    using the preferred format of
122
+    `RFC 7231 <https://tools.ietf.org/html/rfc7231#section-7.1.1.1>`_ as
123
+    shown in this example ``Thu, 16 Jun 2016 15:10:38 GMT``. The time is
124
+    always in UTC.
131 125
   in: header
132 126
   required: true
133 127
   type: string
@@ -140,14 +134,29 @@ Destination:
140 134
   in: header
141 135
   required: true
142 136
   type: string
143
-ETag:
137
+Destination-Account:
138
+  description: |
139
+    Specifies the account name where the object is copied to. If not
140
+    specified, the object is copied to the account which owns the object
141
+    (i.e., the account in the path).
142
+  in: header
143
+  required: false
144
+  type: string
145
+ETag_obj_copied:
144 146
   description: |
145 147
     The MD5 checksum of the copied object content.
146 148
     The value is not quoted.
147 149
   in: header
148 150
   required: true
149 151
   type: string
150
-ETag_1:
152
+ETag_obj_received:
153
+  description: |
154
+    The MD5 checksum of the uploaded object content.
155
+    The value is not quoted.
156
+  in: header
157
+  required: true
158
+  type: string
159
+ETag_obj_req:
151 160
   description: |
152 161
     The MD5 checksum value of the request body. For
153 162
     example, the MD5 checksum value of the object content. You are
@@ -158,7 +167,7 @@ ETag_1:
158 167
   in: header
159 168
   required: false
160 169
   type: string
161
-ETag_2:
170
+ETag_obj_resp:
162 171
   description: |
163 172
     For objects smaller than 5 GB, this value is the
164 173
     MD5 checksum of the object content. The value is not quoted.  For
@@ -190,7 +199,7 @@ If-Modified-Since:
190 199
 If-None-Match:
191 200
   description: |
192 201
     In combination with ``Expect: 100-Continue``,
193
-    specify an ``"If- None-Match: *"`` header to query whether the
202
+    specify an ``"If-None-Match: *"`` header to query whether the
194 203
     server already has a copy of the object before any data is sent.
195 204
   in: header
196 205
   required: false
@@ -205,19 +214,10 @@ If-Unmodified-Since:
205 214
 Last-Modified:
206 215
   description: |
207 216
     The date and time when the object was created or its metadata was
208
-    changed.
209
-
210
-    The date and time stamp format is `ISO 8601
211
-    <https://en.wikipedia.org/wiki/ISO_8601>`_:
212
-
213
-    ::
214
-
215
-       CCYY-MM-DDThh:mm:ss±hh:mm
216
-
217
-    For example, ``2015-08-27T09:49:58-05:00``.
217
+    changed. The date and time is formaatted as shown in this
218
+    example: ``Fri, 12 Aug 2016 14:24:16 GMT``
218 219
 
219
-    The ``±hh:mm`` value, if included, is the time zone as an offset
220
-    from UTC. In the previous example, the offset value is ``-05:00``.
220
+    The time is always in UTC.
221 221
   in: header
222 222
   required: true
223 223
   type: string
@@ -233,18 +233,21 @@ Range:
233 233
     do, the value   defaults to the offset of the last byte of data.
234 234
     - **Suffix byte range specification**. Use LENGTH bytes to specify
235 235
     the length of the data range.  The following forms of the header
236
-    specify the following ranges of data:  - ``Range: bytes=-5``. The
237
-    last five bytes.  - ``Range: bytes=10-15``. The five bytes of data
238
-    after a 10-byte   offset.  - ``Range: bytes=10-15,-5``. A multi-
239
-    part response that contains the   last five bytes and the five
240
-    bytes of data after a 10-byte   offset. The ``Content-Type``
241
-    response header contains   ``multipart/byteranges``.  - ``Range:
242
-    bytes=4-6``. Bytes 4 to 6 inclusive.  - ``Range: bytes=2-2``. Byte
243
-    2, the third byte of the data.  - ``Range: bytes=6-``. Byte 6 and
244
-    after.  - ``Range: bytes=1-3,2-5``. A multi-part response that
245
-    contains   bytes 1 to 3 inclusive, and bytes 2 to 5 inclusive. The
246
-    ``Content-Type`` response header contains
247
-    ``multipart/byteranges``.
236
+    specify the following ranges of data:
237
+
238
+    - ``Range: bytes=-5``. The last five bytes.
239
+    - ``Range: bytes=10-15``. The six bytes of data after a 10-byte   offset.
240
+    - ``Range: bytes=10-15,-5``. A multi-part response that contains the
241
+      last five bytes and the six
242
+      bytes of data after a 10-byte offset. The ``Content-Type``
243
+      response header contains   ``multipart/byteranges``.
244
+    - ``Range: bytes=4-6``. Bytes 4 to 6 inclusive.
245
+    - ``Range: bytes=2-2``. Byte 2, the third byte of the data.
246
+    - ``Range: bytes=6-``. Byte 6 and after.
247
+    - ``Range: bytes=1-3,2-5``. A multi-part response that
248
+      contains   bytes 1 to 3 inclusive, and bytes 2 to 5 inclusive. The
249
+      ``Content-Type`` response header contains
250
+      ``multipart/byteranges``.
248 251
   in: header
249 252
   required: false
250 253
   type: string
@@ -272,45 +275,87 @@ X-Account-Container-Count:
272 275
 X-Account-Meta-name:
273 276
   description: |
274 277
     The custom account metadata item, where
275
-    ``{name}`` is the name of the metadata item.  One ``X-Account-
276
-    Meta- {name}`` response header appears for each metadata item (for
277
-    each ``{name}``).
278
+    ``name`` is the name of the metadata item.  One ``X-Account-Meta-name``
279
+    response header appears for each metadata item (for
280
+    each ``name``).
278 281
   in: header
279 282
   required: false
280 283
   type: string
281
-X-Account-Meta-name_1:
284
+X-Account-Meta-name_req:
282 285
   description: |
283
-    The account metadata. The ``{name}`` is the name
286
+    The account metadata. The ``name`` is the name
284 287
     of metadata item that you want to add, update, or delete. To
285 288
     delete this item, send an empty value in this header.  You must
286
-    specify an ``X-Account-Meta- {name}`` header for each metadata
287
-    item (for each ``{name}``) that you want to add, update, or
289
+    specify an ``X-Account-Meta-name`` header for each metadata
290
+    item (for each ``name``) that you want to add, update, or
288 291
     delete.
289 292
   in: header
290 293
   required: false
291 294
   type: string
292
-X-Account-Meta-Temp-URL-Key:
295
+X-Account-Meta-Quota-Bytes_resp:
293 296
   description: |
294
-    The secret key value for temporary URLs. If not
295
-    set, this header is not returned in the response.
297
+    If present, this is the limit on the total size in bytes of objects stored
298
+    in the account.
299
+    Typically this value is set by an administrator.
296 300
   in: header
297 301
   required: false
298 302
   type: string
299
-X-Account-Meta-Temp-URL-Key-2:
303
+X-Account-Meta-Temp-URL-Key-2_req:
300 304
   description: |
301
-    A second secret key value for temporary URLs. If
302
-    not set, this header is not returned in the response.
305
+    A second secret key value for temporary URLs.
303 306
     The second key enables you to rotate keys by having
304 307
     two active keys at the same time.
305 308
   in: header
306 309
   required: false
307 310
   type: string
311
+X-Account-Meta-Temp-URL-Key-2_resp:
312
+  description: |
313
+    The second secret key value for temporary URLs. If
314
+    not set, this header is not returned in the response.
315
+  in: header
316
+  required: false
317
+  type: string
318
+X-Account-Meta-Temp-URL-Key_req:
319
+  description: |
320
+    The secret key value for temporary URLs.
321
+  in: header
322
+  required: false
323
+  type: string
324
+X-Account-Meta-Temp-URL-Key_resp:
325
+  description: |
326
+    The secret key value for temporary URLs. If not
327
+    set, this header is not returned in the response.
328
+  in: header
329
+  required: false
330
+  type: string
308 331
 X-Account-Object-Count:
309 332
   description: |
310 333
     The number of objects in the account.
311 334
   in: header
312 335
   required: true
313 336
   type: integer
337
+X-Account-Storage-Policy-name-Bytes-Used:
338
+  description: |
339
+    The total number of bytes that are stored in
340
+    in a given storage policy, where ``name`` is the
341
+    name of the storage policy.
342
+  in: header
343
+  required: true
344
+  type: integer
345
+X-Account-Storage-Policy-name-Container-Count:
346
+  description: |
347
+    The number of containers in the account that use the given
348
+    storage policy where ``name`` is the name of the storage policy.
349
+  in: header
350
+  required: true
351
+  type: integer
352
+X-Account-Storage-Policy-name-Object-Count:
353
+  description: |
354
+    The number of objects in given storage policy where ``name`` is
355
+    the name of the storage policy.
356
+  in: header
357
+  required: true
358
+  type: integer
314 359
 X-Auth-Token:
315 360
   description: |
316 361
     Authentication token. If you omit this header,
@@ -319,12 +364,6 @@ X-Auth-Token:
319 364
   in: header
320 365
   required: false
321 366
   type: string
322
-X-Auth-Token_1:
323
-  description: |
324
-    Authentication token.
325
-  in: header
326
-  required: true
327
-  type: string
328 367
 X-Container-Bytes-Used:
329 368
   description: |
330 369
     The total number of bytes used.
@@ -354,14 +393,16 @@ X-Container-Meta-Access-Control-Expose-Headers:
354 393
     Headers the Object Storage service exposes to the
355 394
     browser (technically, through the ``user-agent`` setting), in the
356 395
     request response, separated by spaces.  By default the Object
357
-    Storage service returns the following values for this header:  -
358
-    All “simple response headers” as listed on
359
-    `http://www.w3.org/TR/cors/#simple-response-header
360
-    <http://www.w3.org/TR/cors/#simple-response-header>`_.  - The
361
-    headers ``etag``, ``x-timestamp``, ``x-trans-id``.  - All metadata
362
-    headers (``X-Container-Meta-*`` for containers and   ``X-Object-
363
-    Meta-*`` for objects) headers listed in ``X-Container-   Meta-
364
-    Access-Control-Expose-Headers``.
396
+    Storage service returns the following headers:
397
+
398
+    - All “simple response headers” as listed on
399
+      `http://www.w3.org/TR/cors/#simple-response-header
400
+      <http://www.w3.org/TR/cors/#simple-response-header>`_.
401
+    - The headers ``etag``, ``x-timestamp``, ``x-trans-id``,
402
+      ``x-openstack-request-id``.
403
+    - All metadata headers (``X-Container-Meta-*`` for containers and
404
+      ``X-Object-Meta-*`` for objects).
405
+    - headers listed in ``X-Container-Meta-Access-Control-Expose-Headers``.
365 406
   in: header
366 407
   required: false
367 408
   type: string
@@ -376,21 +417,21 @@ X-Container-Meta-Access-Control-Max-Age:
376 417
   type: string
377 418
 X-Container-Meta-name:
378 419
   description: |
379
-    The container metadata, where ``{name}`` is the
380
-    name of metadata item.  You must specify an ``X-Container-Meta-
381
-    {name}`` header for each metadata item (for each ``{name}``) that
382
-    you want to add or update.
420
+    The custom container metadata item, where
421
+    ``name`` is the name of the metadata item.  One ``X-Container-Meta-name``
422
+    response header appears for each metadata item (for
423
+    each ``name``).
383 424
   in: header
384
-  required: false
425
+  required: true
385 426
   type: string
386
-X-Container-Meta-name_1:
427
+X-Container-Meta-name_req:
387 428
   description: |
388
-    The custom container metadata item, where
389
-    ``{name}`` is the name of the metadata item.  One ``X-Container-
390
-    Meta- {name}`` response header appears for each metadata item (for
391
-    each ``{name}``).
429
+    The container metadata, where ``name`` is the
430
+    name of metadata item.  You must specify an ``X-Container-Meta-name``
431
+    header for each metadata item (for each ``name``) that
432
+    you want to add or update.
392 433
   in: header
393
-  required: true
434
+  required: false
394 435
   type: string
395 436
 X-Container-Meta-Quota-Bytes:
396 437
   description: |
@@ -398,6 +439,17 @@ X-Container-Meta-Quota-Bytes:
398 439
     Typically these values are set by an administrator. Returns a 413
399 440
     response (request entity too large) when an object PUT operation
400 441
     exceeds this quota value.
442
+    This value does not take effect immediately. see
443
+    `Container Quotas
444
+    <http://docs.openstack.org/developer/swift/api/container_quotas.html>`_
445
+    for more information.
446
+  in: header
447
+  required: false
448
+  type: string
449
+X-Container-Meta-Quota-Bytes_resp:
450
+  description: |
451
+    The maximum size of the container, in bytes. If not set, this header is not
452
+    returned by this operation.
401 453
   in: header
402 454
   required: false
403 455
   type: string
@@ -407,20 +459,45 @@ X-Container-Meta-Quota-Count:
407 459
     Typically these values are set by an administrator. Returns a 413
408 460
     response (request entity too large) when an object PUT operation
409 461
     exceeds this quota value.
462
+    This value does not take effect immediately. see
463
+    `Container Quotas
464
+    <http://docs.openstack.org/developer/swift/api/container_quotas.html>`_
465
+    for more information.
466
+  in: header
467
+  required: false
468
+  type: string
469
+X-Container-Meta-Quota-Count_resp:
470
+  description: |
471
+    The maximum object count of the container. If not set, this header is not
472
+    returned by this operation.
473
+  in: header
474
+  required: false
475
+  type: string
476
+X-Container-Meta-Temp-URL-Key-2_req:
477
+  description: |
478
+    A second secret key value for temporary URLs.
479
+    The second key enables you to rotate keys by having
480
+    two active keys at the same time.
481
+  in: header
482
+  required: false
483
+  type: string
484
+X-Container-Meta-Temp-URL-Key-2_resp:
485
+  description: |
486
+    The second secret key value for temporary URLs. If
487
+    not set, this header is not returned in the response.
410 488
   in: header
411 489
   required: false
412 490
   type: string
413
-X-Container-Meta-Temp-URL-Key:
491
+X-Container-Meta-Temp-URL-Key_req:
414 492
   description: |
415 493
     The secret key value for temporary URLs.
416 494
   in: header
417 495
   required: false
418 496
   type: string
419
-X-Container-Meta-Temp-URL-Key-2:
497
+X-Container-Meta-Temp-URL-Key_resp:
420 498
   description: |
421
-    A second secret key value for temporary URLs. The
422
-    second key enables you to rotate keys by having two active keys at
423
-    the same time.
499
+    The secret key value for temporary URLs. If not
500
+    set, this header is not returned in the response.
424 501
   in: header
425 502
   required: false
426 503
   type: string
@@ -431,7 +508,7 @@ X-Container-Meta-Web-Directory-Type:
431 508
     ``application/directory``. Directory marker objects are 0-byte
432 509
     objects that represent directories to create a simulated
433 510
     hierarchical structure.  For example, if you set ``"X-Container-
434
-    Meta-Web-Directory- Type: text/directory"``, Object Storage treats
511
+    Meta-Web-Directory-Type: text/directory"``, Object Storage treats
435 512
     0-byte objects with a content-type of ``text/directory`` as
436 513
     directories rather than objects.
437 514
   in: header
@@ -446,47 +523,18 @@ X-Container-Object-Count:
446 523
 X-Container-Read:
447 524
   description: |
448 525
     Sets a container access control list (ACL) that grants read access.
449
-    Container ACLs are available on any Object Storage cluster, and are
450
-    enabled by container rather than by cluster.
451
-
452
-    To set the container read ACL:
526
+    The scope of the access is specific to the container. The ACL grants
527
+    the ability to perform GET or HEAD operations on objects in the container
528
+    or to perform a GET or HEAD operation on the container itself.
453 529
 
454
-    .. code-block:: bash
455
-
456
-       $ curl -X {PUT|POST} -i -H "X-Auth-Token: TOKEN" -H \
457
-              "X-Container-Read: ACL" STORAGE_URL/CONTAINER
458
-
459
-    For example:
460
-
461
-    .. code-block:: bash
462
-
463
-       $ curl -X PUT -i \
464
-              -H "X-Auth-Token: 0101010101" \
465
-              -H "X-Container-Read: .r:*" \
466
-              http://swift.example.com/v1/AUTH_bob/read_container
467
-
468
-    In the command, specify the ACL in the ``X-Container-Read`` header,
469
-    as follows:
470
-
471
-    - ``.r:*`` All referrers.
472
-
473
-    - ``.r:example.com,swift.example.com`` Comma-separated list of
474
-      referrers.
475
-
476
-    - ``.rlistings`` Container listing access.
477
-
478
-    - ``AUTH_username`` Access to a user who authenticates through a
479
-      legacy or non-OpenStack-Identity-based authentication system.
480
-
481
-    - ``LDAP_`` Access to all users who authenticate through an LDAP-
482
-      based legacy or non-OpenStack-Identity-based authentication
483
-      system.
530
+    The format and scope of the ACL is dependent on the authorization system
531
+    used by the Object Storage service.
484 532
   in: header
485 533
   required: false
486 534
   type: string
487
-X-Container-Read_1:
535
+X-Container-Read_resp:
488 536
   description: |
489
-    The ACL that grants read access. If not set, this
537
+    The ACL that grants read access. If there is no ACL, this
490 538
     header is not returned by this operation.
491 539
   in: header
492 540
   required: false
@@ -496,10 +544,13 @@ X-Container-Sync-Key:
496 544
     Sets the secret key for container
497 545
     synchronization. If you remove the secret key, synchronization is
498 546
     halted.
547
+    For more information, see `Container to Container Synchronization
548
+    <http://docs.openstack.org/developer/swift/overview_
549
+    container_sync.html>`_
499 550
   in: header
500 551
   required: false
501 552
   type: string
502
-X-Container-Sync-Key_1:
553
+X-Container-Sync-Key_resp:
503 554
   description: |
504 555
     The secret key for container synchronization. If
505 556
     not set, this header is not returned by this operation.
@@ -516,7 +567,7 @@ X-Container-Sync-To:
516 567
   in: header
517 568
   required: false
518 569
   type: string
519
-X-Container-Sync-To_1:
570
+X-Container-Sync-To_resp:
520 571
   description: |
521 572
     The destination for container synchronization. If
522 573
     not set, this header is not returned by this operation.
@@ -525,13 +576,21 @@ X-Container-Sync-To_1:
525 576
   type: string
526 577
 X-Container-Write:
527 578
   description: |
528
-    Sets an ACL that grants write access.
579
+    Sets a container access control list (ACL) that grants write access.
580
+    The scope of the access is specific to the container. The ACL grants
581
+    the ability to perform PUT, POST and DELETE operations on
582
+    objects in the container. It does not grant write access to the container
583
+    metadata.
584
+
585
+    The format of the ACL is dependent on the authorization system
586
+    used by the Object Storage service.
587
+
529 588
   in: header
530 589
   required: false
531 590
   type: string
532
-X-Container-Write_1:
533
-  description: |
534
-    The ACL that grants write access. If not set,
591
+X-Container-Write_resp:
592
+  description:
593
+    The ACL that grants write access. If there is no ACL,
535 594
     this header is not returned by this operation.
536 595
   in: header
537 596
   required: false
@@ -544,6 +603,13 @@ X-Copied-From:
544 603
   in: header
545 604
   required: false
546 605
   type: string
606
+X-Copied-From-Account:
607
+  description: |
608
+    For a copied object, shows the account
609
+    from which the new object was copied.
610
+  in: header
611
+  required: false
612
+  type: string
547 613
 X-Copied-From-Last-Modified:
548 614
   description: |
549 615
     For a copied object, the date and time in `UNIX
@@ -572,7 +638,7 @@ X-Delete-After:
572 638
   description: |
573 639
     The number of seconds after which the system
574 640
     removes the object. Internally, the Object Storage system stores
575
-    this value in the ``X -Delete-At`` metadata item.
641
+    this value in the ``X-Delete-At`` metadata item.
576 642
   in: header
577 643
   required: false
578 644
   type: integer
@@ -585,21 +651,11 @@ X-Delete-At:
585 651
   in: header
586 652
   required: false
587 653
   type: integer
588
-X-Delete-At_1:
589
-  description: |
590
-    If set, the date and time in `UNIX Epoch time
591
-    stamp format <https://en.wikipedia.org/wiki/Unix_time>`_ when the
592
-    system deletes the object.  For example, ``1440619048`` is
593
-    equivalent to ``Mon, Wed, 26 Aug 2015 19:57:28 GMT``.  If not set,
594
-    this operation does not return this header.
595
-  in: header
596
-  required: false
597
-  type: integer
598 654
 X-Detect-Content-Type:
599 655
   description: |
600 656
     If set to ``true``, Object Storage guesses the
601 657
     content type based on the file extension and ignores the value
602
-    sent in the ``Content- Type`` header, if present.
658
+    sent in the ``Content-Type`` header, if present.
603 659
   in: header
604 660
   required: false
605 661
   type: boolean
@@ -611,6 +667,27 @@ X-Fresh-Metadata:
611 667
   in: header
612 668
   required: false
613 669
   type: boolean
670
+X-History-Location:
671
+  description: |
672
+    The URL-encoded UTF-8 representation of the container that stores
673
+    previous versions of objects. If neither this nor ``X-Versions-Location``
674
+    is set, versioning is disabled for this container. ``X-History-Location``
675
+    and ``X-Versions-Location`` cannot both be set at the same time. For more
676
+    information about object versioning, see `Object versioning
677
+    <http://docs.openstack.org/ developer/swift/api/object_versioning.html>`_.
678
+  in: header
679
+  required: false
680
+  type: string
681
+X-History-Location_resp:
682
+  description: |
683
+    If present, this container has versioning enabled and the value
684
+    is the UTF-8 encoded name of another container.
685
+    For more information about object versioning,
686
+    see `Object versioning <http://docs.openstack.org/developer/
687
+    swift/api/object_versioning.html>`_.
688
+  in: header
689
+  required: false
690
+  type: string
614 691
 X-Newest:
615 692
   description: |
616 693
     If set to true , Object Storage queries all
@@ -631,9 +708,9 @@ X-Object-Manifest:
631 708
   in: header
632 709
   required: false
633 710
   type: string
634
-X-Object-Manifest_1:
711
+X-Object-Manifest_resp:
635 712
   description: |
636
-    If set, to this is a dynamic large object
713
+    If present, this is a dynamic large object
637 714
     manifest object. The value is the container and object name prefix
638 715
     of the segment objects in the form ``container/prefix``.
639 716
   in: header
@@ -641,32 +718,65 @@ X-Object-Manifest_1:
641 718
   type: string
642 719
 X-Object-Meta-name:
643 720
   description: |
644
-    The object metadata, where ``{name}`` is the name
645
-    of the metadata item.  You must specify an ``X-Object-Meta-
646
-    {name}`` header for each metadata ``{name}`` item that you want to
647
-    add or update.
721
+    The object metadata, where ``name`` is the name
722
+    of the metadata item.  You must specify an
723
+    ``X-Object-Meta-name`` header for each metadata ``name`` item that
724
+    you want to add or update.
725
+  in: header
726
+  required: false
727
+  type: string
728
+X-Object-Meta-name_resp:
729
+  description: |
730
+    If present, the custom object metadata item, where ``name``
731
+    is the name of the metadata item.  One``X-Object-Meta-name``
732
+    response header appears for each metadata ``name`` item.
648 733
   in: header
649 734
   required: false
650 735
   type: string
651
-X-Object-Meta-name_1:
736
+X-Openstack-Request-Id:
652 737
   description: |
653
-    The custom object metadata item, where ``{name}``
654
-    is the name of the metadata item.  One ``X-Object-Meta- {name}``
655
-    response header appears for each metadata ``{name}`` item.
738
+    A unique transaction ID for this request. Your
739
+    service provider might need this value if you report a problem.
740
+    (same as ``X-Trans-Id``)
656 741
   in: header
657 742
   required: true
658 743
   type: string
744
+X-Remove-Account-name:
745
+  description: |
746
+    Removes the metadata item named ``name``.
747
+    For example, ``X-Remove-Account-Meta-Blue`` removes
748
+    custom metadata.
749
+  in: header
750
+  required: false
751
+  type: string
659 752
 X-Remove-Container-name:
660 753
   description: |
661
-    Removes the metadata item named ``{name}``. For
662
-    example, ``X -Remove-Container-Read`` removes the ``X-Container-
663
-    Read`` metadata item.
754
+    Removes the metadata item named ``name``. For
755
+    example, ``X-Remove-Container-Read`` removes the
756
+    ``X-Container-Read`` metadata item and ``X-Remove-Container-Meta-Blue``
757
+    removes custom metadata.
758
+  in: header
759
+  required: false
760
+  type: string
761
+X-Remove-History-Location:
762
+  description: |
763
+    Set to any value to disable versioning. Note that this disables version
764
+    that was set via ``X-Versions-Location`` as well.
664 765
   in: header
665 766
   required: false
666 767
   type: string
667 768
 X-Remove-Versions-Location:
668 769
   description: |
669
-    Set to any value to disable versioning.
770
+    Set to any value to disable versioning. Note that this disables version
771
+    that was set via ``X-History-Location`` as well.
772
+  in: header
773
+  required: false
774
+  type: string
775
+X-Service-Token:
776
+  description: |
777
+    A service token. See `OpenStack Service Using Composite Tokens
778
+    <http://docs.openstack.org/developer/swift/overview_auth.html#openstack-
779
+    service-using-composite-tokens>`_ for more information.
670 780
   in: header
671 781
   required: false
672 782
   type: string
@@ -677,6 +787,14 @@ X-Static-Large-Object:
677 787
   in: header
678 788
   required: true
679 789
   type: boolean
790
+X-Storage-Policy:
791
+  description: |
792
+    In requests, specifies the name of the storage policy to use for
793
+    the container. In responses, is the storage policy name.
794
+    The storage policy of the container cannot be changed.
795
+  in: header
796
+  required: false
797
+  type: string
680 798
 X-Timestamp:
681 799
   description: |
682 800
     The date and time in `UNIX Epoch time stamp
@@ -696,23 +814,23 @@ X-Trans-Id:
696 814
   type: string
697 815
 X-Trans-Id-Extra:
698 816
   description: |
699
-    Extra transaction information. Use the ``X-Trans-
700
-    Id-Extra`` request header to include extra information to help you
817
+    Extra transaction information. Use the ``X-Trans-Id-Extra``
818
+    request header to include extra information to help you
701 819
     debug any errors that might occur with large object upload and
702
-    other Object Storage transactions.  Object Storage appends the
703
-    first 32 characters of the ``X-Trans-Id- Extra`` request header
820
+    other Object Storage transactions.  The server appends the
821
+    first 32 characters of the ``X-Trans-Id-Extra`` request header
704 822
     value to the transaction ID value in the generated ``X-Trans-Id``
705 823
     response header. You must UTF-8-encode and then URL-encode the
706
-    extra transaction information before you include it in the ``X
707
-    -Trans-Id-Extra`` request header.  For example, you can include
824
+    extra transaction information before you include it in the
825
+    ``X-Trans-Id-Extra`` request header.  For example, you can include
708 826
     extra transaction information when you upload `large objects
709
-    <http://docs.openstack.org/user-
710
-    guide/cli_swift_large_object_creation.html>`_ such as images. When
827
+    <http://docs.openstack.org/developer/swift/api/large_objects.html>`_
828
+    such as images. When
711 829
     you upload each segment and the manifest, include the same value
712 830
     in the ``X-Trans-Id-Extra`` request header. If an error occurs,
713 831
     you can find all requests that are related to the large object
714
-    upload in the Object Storage logs.  You can also use ``X-Trans-Id-
715
-    Extra`` strings to help operators debug requests that fail to
832
+    upload in the Object Storage logs.  You can also use ``X-Trans-Id-Extra``
833
+    strings to help operators debug requests that fail to
716 834
     receive responses. The operator can search for the extra
717 835
     information in the logs.
718 836
   in: header
@@ -721,19 +839,19 @@ X-Trans-Id-Extra:
721 839
 X-Versions-Location:
722 840
   description: |
723 841
     The URL-encoded UTF-8 representation of the container that stores
724
-    previous versions of objects. If not set, versioning is disabled
725
-    for this container. For more information about object versioning,
726
-    see `Object versioning <http://docs.openstack.org/developer/
727
-    swift/api/object_versioning.html>`_.
842
+    previous versions of objects. If neither this nor ``X-History-Location``
843
+    is set, versioning is disabled for this container. ``X-Versions-Location``
844
+    and ``X-History-Location`` cannot both be set at the same time. For more
845
+    information about object versioning, see `Object versioning
846
+    <http://docs.openstack.org/ developer/swift/api/object_versioning.html>`_.
728 847
   in: header
729 848
   required: false
730 849
   type: string
731
-X-Versions-Mode:
850
+X-Versions-Location_resp:
732 851
   description: |
733
-    The versioning mode for this container. The value must be either
734
-    ``stack`` or ``history``. If not set, ``stack`` mode will be used.
735
-    This setting has no impact unless ``X-Versions-Location`` is set
736
-    for the container. For more information about object versioning,
852
+    If present, this container has versioning enabled and the value
853
+    is the UTF-8 encoded name of another container.
854
+    For more information about object versioning,
737 855
     see `Object versioning <http://docs.openstack.org/developer/
738 856
     swift/api/object_versioning.html>`_.
739 857
   in: header
@@ -750,12 +868,13 @@ account:
750 868
   type: string
751 869
 container:
752 870
   description: |
753
-    The unique name for the container.  The container
871
+    The unique (within an account) name for the container.  The container
754 872
     name must be from 1 to 256 characters long and can start with any
755 873
     character and contain any pattern. Character set must be UTF-8.
756 874
     The container name cannot contain a slash (``/``) character
757 875
     because this character delimits the container and object name. For
758
-    example, ``/account/container/object``.
876
+    example, the path ``/v1/account/www/pages`` specifies the ``www``
877
+    container, not the ``www/pages`` container.
759 878
   in: path
760 879
   required: false
761 880
   type: string
@@ -767,6 +886,16 @@ object:
767 886
   type: string
768 887
 
769 888
 # variables in query
889
+bulk-delete:
890
+  description: |
891
+    When the ``bulk-delete`` query parameter is present in the POST
892
+    request, multiple objects or containers can be deleted
893
+    with a single request. See `Bulk Delete
894
+    <http://docs.openstack.org/developer/swift/middleware.html?highlight=
895
+    bulk#bulk-delete>`_ for how this feature is used.
896
+  in: query
897
+  required: false
898
+  type: string
770 899
 delimiter:
771 900
   description: |
772 901
     Delimiter value, which returns the object names
@@ -784,6 +913,16 @@ end_marker:
784 913
   in: query
785 914
   required: false
786 915
   type: string
916
+extract-archive:
917
+  description: |
918
+    When the ``extract-archive`` query parameter is present in the POST
919
+    request, an archive (tar file) is uploaded and extracted to
920
+    create multiple objects. See `Extract Archive
921
+    <http://docs.openstack.org/developer/swift/middleware.html?highlight=
922
+    bulk#extract-archive>`_ for how this feature is used.
923
+  in: query
924
+  required: false
925
+  type: string
787 926
 filename:
788 927
   description: |
789 928
     Overrides the default file name. Object Storage
@@ -823,23 +962,24 @@ marker:
823 962
   in: query
824 963
   required: false
825 964
   type: string
826
-multipart-manifest:
965
+multipart-manifest_copy:
827 966
   description: |
828
-    If ``?multipart-manifest=put``, the object is a
829
-    static large object manifest and the body contains the manifest.
967
+    If you include the ``multipart-manifest=get``
968
+    query parameter and the object is a large object, the object
969
+    contents are not copied. Instead, the manifest is copied to
970
+    the new object.
830 971
   in: query
831 972
   required: false
832 973
   type: string
833
-multipart-manifest_1:
974
+multipart-manifest_delete:
834 975
   description: |
835 976
     If you include the ``multipart-manifest=delete``
836 977
     query parameter and the object is a static large object, the
837 978
     segment objects and manifest object are deleted. If you omit the
838
-    ``multipart- manifest=delete`` query parameter and the object is a
979
+    ``multipart-manifest=delete`` query parameter and the object is a
839 980
     static large object, the manifest object is deleted but the
840
-    segment objects are not deleted.  For a bulk delete, the response
841
-    body looks the same as it does for a normal bulk delete. In
842
-    contrast, a plain object DELETE response has an empty body.
981
+    segment objects are not deleted.  The response body will contain
982
+    the status of the deletion of every processed segment object.
843 983
   in: query
844 984
   required: false
845 985
   type: string
@@ -862,6 +1002,13 @@ multipart-manifest_head:
862 1002
   in: query
863 1003
   required: false
864 1004
   type: string
1005
+multipart-manifest_put:
1006
+  description: |
1007
+    If you include the ``multipart-manifest=put`` query parameter, the object
1008
+    is a static large object manifest and the body contains the manifest.
1009
+  in: query
1010
+  required: false
1011
+  type: string
865 1012
 path:
866 1013
   description: |
867 1014
     For a string value, returns the object names that
@@ -878,11 +1025,9 @@ prefix:
878 1025
   type: string
879 1026
 swiftinfo_expires:
880 1027
   description: |
881
-    Filters the response by the expiration date and
882
-    time in `UNIX Epoch time stamp format
883
-    <https://en.wikipedia.org/wiki/Unix_time>`_.  For example,
884
-    ``1440619048`` is equivalent to ``Mon, Wed, 26 Aug 2015 19:57:28
885
-    GMT``.
1028
+    The time at which ``swiftinfo_sig`` expires. The time is in
1029
+    `UNIX Epoch time stamp format
1030
+    <https://en.wikipedia.org/wiki/Unix_time>`_.
886 1031
   in: query
887 1032
   required: false
888 1033
   type: integer

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

@@ -1 +1 @@
1
-curl -i https://23.253.72.207/v1/$account?format=json -X GET -H "X-Auth-Token: $token"
1
+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 @@
1
-curl -i https://23.253.72.207/v1/$account?format=xml \
2
-     -X GET -H "X-Auth-Token: $token"
1
+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
8 8
 Content-Type: application/json; charset=utf-8
9 9
 Accept-Ranges: bytes
10 10
 X-Trans-Id: tx274a77a8975c4a66aeb24-0052d95365
11
-Date: Fri, 17 Jan 2014 15:59:33 GMT
11
+X-Openstack-Request-Id: tx274a77a8975c4a66aeb24-0052d95365
12
+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
8 8
 Content-Type: application/xml; charset=utf-8
9 9
 Accept-Ranges: bytes
10 10
 X-Trans-Id: tx69f60bc9f7634a01988e6-0052d9544b
11
-Date: Fri, 17 Jan 2014 16:03:23 GMT
11
+X-Openstack-Request-Id: tx69f60bc9f7634a01988e6-0052d9544b
12
+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 @@
2 2
     "swift": {
3 3
         "version": "1.11.0"
4 4
     },
5
+    "slo": {
6
+        "max_manifest_segments": 1000,
7
+        "max_manifest_size": 2097152,
8
+        "min_segment_size": 1
9
+    },
5 10
     "staticweb": {},
6 11
     "tempurl": {}
7 12
 }

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

@@ -7,4 +7,5 @@ X-Timestamp: 1389727543.65372
7 7
 X-Container-Bytes-Used: 26
8 8
 Content-Type: application/json; charset=utf-8
9 9
 X-Trans-Id: tx26377fe5fab74869825d1-0052d6bdff
10
-Date: Wed, 15 Jan 2014 16:57:35 GMT
10
+X-Openstack-Request-Id: tx26377fe5fab74869825d1-0052d6bdff
11
+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
7 7
 X-Container-Bytes-Used: 26
8 8
 Content-Type: application/xml; charset=utf-8
9 9
 X-Trans-Id: txc75ea9a6e66f47d79e0c5-0052d6be76
10
-Date: Wed, 15 Jan 2014 16:59:35 GMT
10
+X-Openstack-Request-Id: txc75ea9a6e66f47d79e0c5-0052d6be76
11
+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
5 5
 ========
6 6
 
7 7
 Lists containers for an account. Creates, updates, shows, and
8
-deletes account metadata.
8
+deletes account metadata. For more information and concepts about
9
+accounts see `Object Storage API overview
10
+<http://docs.openstack.org/developer/swift/api/object_api_v1_overview.html>`_.
9 11
 
10
-Account metadata operations work differently than container and
11
-object metadata operations work. Depending on the contents of your
12
-POST account metadata request, the Object Storage API updates the
13
-metadata in one of these ways:
14
-
15
-**Account metadata operations**
16
-
17
-+----------------------------------------------------------+---------------------------------------------------------------+
18
-| POST request body contains                               | Description                                                   |
19
-+----------------------------------------------------------+---------------------------------------------------------------+
20
-| A metadata key without a value.                          | The API removes the metadata item from the account.           |
21
-|                                                          |                                                               |
22
-| The metadata key already exists for the account.         |                                                               |
23
-+----------------------------------------------------------+---------------------------------------------------------------+
24
-| A metadata key without a value.                          | The API ignores the metadata key.                             |
25
-|                                                          |                                                               |
26
-| The metadata key does not already exist for the account. |                                                               |
27
-+----------------------------------------------------------+---------------------------------------------------------------+
28
-| A metadata key value.                                    | The API updates the metadata key value for the account.       |
29
-|                                                          |                                                               |
30
-| The metadata key already exists for the account.         |                                                               |
31
-+----------------------------------------------------------+---------------------------------------------------------------+
32
-| A metadata key value.                                    | The API adds the metadata key and value pair, or item, to the |
33
-|                                                          | account.                                                      |
34
-| The metadata key does not already exist for the account. |                                                               |
35
-+----------------------------------------------------------+---------------------------------------------------------------+
36
-| One or more account metadata items are omitted.          | The API does not change the existing metadata items.          |
37
-|                                                          |                                                               |
38
-| The metadata items already exist for the account.        |                                                               |
39
-+----------------------------------------------------------+---------------------------------------------------------------+
40
-
41
-
42
-
43
-For these requests, specifying the ``X-Remove-Account-Meta-*``
44
-request header for the key with any value is equivalent to
45
-specifying the ``X-Account-Meta-*`` request header with an empty
46
-value.
47
-
48
-Metadata keys must be treated as case-insensitive at all times.
49
-These keys can contain ASCII 7-bit characters that are not control
50
-(0-31) characters, DEL, or a separator character, according to
51
-`HTTP/1.1 <http://www.w3.org/Protocols/rfc2616/rfc2616.html>`_ .
52
-Also, Object Storage does not support the underscore character,
53
-which it silently converts to a hyphen.
54
-
55
-The metadata values in Object Storage do not follow HTTP/1.1 rules
56
-for character encodings. You must use a UTF-8 encoding to get a
57
-byte array for any string that contains characters that are not in
58
-the 7-bit ASCII 0-127 range. Otherwise, Object Storage returns the
59
-404 response code for ISO-8859-1 characters in the 128-255 range,
60
-which is a direct violation of the HTTP/1.1 `basic rules
61
-<http://www.w3.org/Protocols/rfc2616/rfc2616-sec2.html#sec2.2>`_.
62 12
 
63 13
 
64 14
 Show account details and list containers
@@ -74,23 +24,6 @@ using the SQLite memcmp() function, regardless of text encoding.
74 24
 See `Collating Sequences
75 25
 <http://www.sqlite.org/datatype3.html#collation>`_.
76 26
 
77
-Example requests and responses:
78
-
79
-- Show account details and list containers and ask for a JSON
80
-  response:
81
-
82
-  ::
83
-
84
-     curl -i $publicURL?format=json -X GET -H "X-Auth-Token: $token"
85
-
86
-
87
-- List containers and ask for an XML response:
88
-
89
-  ::
90
-
91
-     curl -i $publicURL?format=xml -X GET -H "X-Auth-Token: $token"
92
-
93
-
94 27
 The response body returns a list of containers. The default
95 28
 response (``text/plain``) returns one container per line.
96 29
 
@@ -106,6 +39,21 @@ is text, JSON, or XML. For a text response, you get a 204 , because
106 39
 there is no content. However, for a JSON or XML response, you get a
107 40
 200 with content indicating an empty array.
108 41
 
42
+Example requests and responses:
43
+
44
+- Show account details and list containers and ask for a JSON
45
+  response:
46
+
47
+  .. literalinclude:: samples/account-containers-list-http-request-json.txt
48
+  .. literalinclude:: samples/account-containers-list-http-response-json.txt
49
+  .. literalinclude:: samples/account-containers-list-response.json
50
+
51
+- Show account details and list containers and ask for an XML response:
52
+
53
+  .. literalinclude:: samples/account-containers-list-http-request-xml.txt
54
+  .. literalinclude:: samples/account-containers-list-http-response-xml.txt
55
+  .. literalinclude:: samples/account-containers-list-response.xml
56
+
109 57
 If the request succeeds, the operation returns one of these status
110 58
 codes:
111 59
 
@@ -135,6 +83,7 @@ Request
135 83
    - prefix: prefix
136 84
    - delimiter: delimiter
137 85
    - X-Auth-Token: X-Auth-Token
86
+   - X-Service-Token: X-Service-Token
138 87
    - X-Newest: X-Newest
139 88
    - Accept: Accept
140 89
    - X-Trans-Id-Extra: X-Trans-Id-Extra
@@ -145,33 +94,27 @@ Response Parameters
145 94
 
146 95
 .. rest_parameters:: parameters.yaml
147 96
 
148
-   - Content-Length: Content-Length
97
+   - Content-Length: Content-Length_listing_resp
149 98
    - X-Account-Meta-name: X-Account-Meta-name
150
-   - X-Account-Object-Count: X-Account-Object-Count
151
-   - X-Account-Meta-Temp-URL-Key-2: X-Account-Meta-Temp-URL-Key-2
99
+   - X-Account-Meta-Temp-URL-Key: X-Account-Meta-Temp-URL-Key_resp
100
+   - X-Account-Meta-Temp-URL-Key-2: X-Account-Meta-Temp-URL-Key-2_resp
152 101
    - X-Timestamp: X-Timestamp
153
-   - X-Account-Meta-Temp-URL-Key: X-Account-Meta-Temp-URL-Key
154 102
    - X-Trans-Id: X-Trans-Id
103
+   - X-Openstack-Request-Id: X-Openstack-Request-Id
155 104
    - Date: Date
156 105
    - X-Account-Bytes-Used: X-Account-Bytes-Used
157 106
    - X-Account-Container-Count: X-Account-Container-Count
158
-   - Content-Type: Content-Type
107
+   - X-Account-Object-Count: X-Account-Object-Count
108
+   - X-Account-Storage-Policy-name-Bytes-Used: X-Account-Storage-Policy-name-Bytes-Used
109
+   - X-Account-Storage-Policy-name-Container-Count: X-Account-Storage-Policy-name-Container-Count
110
+   - X-Account-Storage-Policy-name-Object-Count: X-Account-Storage-Policy-name-Object-Count
111
+   - X-Account-Meta-Quota-Bytes: X-Account-Meta-Quota-Bytes_resp
112
+   - Content-Type: Content-Type_listing_resp
159 113
    - count: count
160 114
    - bytes: bytes
161 115
    - name: name
162 116
 
163 117
 
164
-
165
-Response Example
166
-----------------
167
-
168
-.. literalinclude:: samples/account-containers-list-http-response-xml.txt
169
-   :language: javascript
170
-
171
-
172
-
173
-
174
-
175 118
 Create, update, or delete account metadata
176 119
 ==========================================
177 120
 
@@ -179,21 +122,57 @@ Create, update, or delete account metadata
179 122
 
180 123
 Creates, updates, or deletes account metadata.
181 124
 
182
-To create, update, or delete metadata, use the ``X-Account-
183
-Meta-{name}`` request header, where ``{name}`` is the name of the
125
+To create, update, or delete custom metadata, use the
126
+``X-Account-Meta-{name}`` request header, where ``{name}`` is the name of the
184 127
 metadata item.
185 128
 
186
-Subsequent requests for the same key and value pair overwrite the
187
-existing value.
129
+Account metadata operations work differently than how
130
+object metadata operations work. Depending on the contents of your
131
+POST account metadata request, the Object Storage API updates the
132
+metadata as shown in the following table:
133
+
134
+**Account metadata operations**
135
+
136
++----------------------------------------------------------+---------------------------------------------------------------+
137
+| POST request header contains                             | Result                                                        |
138
++----------------------------------------------------------+---------------------------------------------------------------+
139
+| A metadata key without a value.                          | The API removes the metadata item from the account.           |
140
+|                                                          |                                                               |
141
+| The metadata key already exists for the account.         |                                                               |
142
++----------------------------------------------------------+---------------------------------------------------------------+
143
+| A metadata key without a value.                          | The API ignores the metadata key.                             |
144
+|                                                          |                                                               |
145
+| The metadata key does not already exist for the account. |                                                               |
146
++----------------------------------------------------------+---------------------------------------------------------------+
147
+| A metadata key value.                                    | The API updates the metadata key value for the account.       |
148
+|                                                          |                                                               |
149
+| The metadata key already exists for the account.         |                                                               |
150
++----------------------------------------------------------+---------------------------------------------------------------+
151
+| A metadata key value.                                    | The API adds the metadata key and value pair, or item, to the |
152
+|                                                          | account.                                                      |
153
+| The metadata key does not already exist for the account. |                                                               |
154
++----------------------------------------------------------+---------------------------------------------------------------+
155
+| One or more account metadata items are omitted.          | The API does not change the existing metadata items.          |
156
+|                                                          |                                                               |
157
+| The metadata items already exist for the account.        |                                                               |
158
++----------------------------------------------------------+---------------------------------------------------------------+
159
+
160
+
188 161
 
189 162
 To delete a metadata header, send an empty value for that header,
190 163
 such as for the ``X-Account-Meta-Book`` header. If the tool you use
191 164
 to communicate with Object Storage, such as an older version of
192 165
 cURL, does not support empty headers, send the ``X-Remove-Account-
193
-Meta-{name}`` header with an arbitrary value. For example, ``X
194
--Remove-Account-Meta-Book: x``. The operation ignores the arbitrary
166
+Meta-{name}`` header with an arbitrary value. For example,
167
+``X-Remove-Account-Meta-Book: x``. The operation ignores the arbitrary
195 168
 value.
196 169
 
170
+.. include:: metadata_header_syntax.inc
171
+.. include:: metadata_header_encoding.inc
172
+
173
+Subsequent requests for the same key and value pair overwrite the
174
+existing value.
175
+
197 176
 If the container already has other custom metadata items, a request
198 177
 to create, update, or delete metadata does not affect those items.
199 178
 
@@ -216,6 +195,7 @@ Example requests and responses:
216 195
      Content-Length: 0
217 196
      Content-Type: text/html; charset=UTF-8
218 197
      X-Trans-Id: tx8c2dd6aee35442a4a5646-0052d954fb
198
+     X-Openstack-Request-Id: tx8c2dd6aee35442a4a5646-0052d954fb
219 199
      Date: Fri, 17 Jan 2014 16:06:19 GMT
220 200
 
221 201
 
@@ -234,6 +214,7 @@ Example requests and responses:
234 214
      Content-Length: 0
235 215
      Content-Type: text/html; charset=UTF-8
236 216
      X-Trans-Id: tx1439b96137364ab581156-0052d95532
217
+     X-Openstack-Request-Id: tx1439b96137364ab581156-0052d95532
237 218
      Date: Fri, 17 Jan 2014 16:07:14 GMT
238 219
 
239 220
 
@@ -252,6 +233,7 @@ Example requests and responses:
252 233
      Content-Length: 0
253 234
      Content-Type: text/html; charset=UTF-8
254 235
      X-Trans-Id: tx411cf57701424da99948a-0052d9556f
236
+     X-Openstack-Request-Id: tx411cf57701424da99948a-0052d9556f
255 237
      Date: Fri, 17 Jan 2014 16:08:15 GMT
256 238
 
257 239
 
@@ -270,11 +252,11 @@ Request
270 252
 
271 253
    - account: account
272 254
    - X-Auth-Token: X-Auth-Token
273
-   - X-Account-Meta-Temp-URL-Key: X-Account-Meta-Temp-URL-Key
274
-   - X-Account-Meta-Temp-URL-Key-2: X-Account-Meta-Temp-URL-Key-2
275
-   - X-Account-Meta-name: X-Account-Meta-name
276
-   - Content-Type: Content-Type
277
-   - X-Detect-Content-Type: X-Detect-Content-Type
255
+   - X-Service-Token: X-Service-Token
256
+   - X-Account-Meta-Temp-URL-Key: X-Account-Meta-Temp-URL-Key_req
257
+   - X-Account-Meta-Temp-URL-Key-2: X-Account-Meta-Temp-URL-Key-2_req
258
+   - X-Account-Meta-name: X-Account-Meta-name_req
259
+   - X-Remove-Account-name: X-Remove-Account-name
278 260
    - X-Trans-Id-Extra: X-Trans-Id-Extra
279 261
 
280 262
 
@@ -285,12 +267,10 @@ Response Parameters
285 267
 
286 268
    - Date: Date
287 269
    - X-Timestamp: X-Timestamp
288
-   - Content-Length: Content-Length
289
-   - Content-Type: Content-Type
270
+   - Content-Length: Content-Length_cud_resp
271
+   - Content-Type: Content-Type_cud_resp
290 272
    - X-Trans-Id: X-Trans-Id
291
-
292
-
293
-
273
+   - X-Openstack-Request-Id: X-Openstack-Request-Id
294 274
 
295 275
 
296 276
 Show account metadata
@@ -337,6 +317,7 @@ Show account metadata request:
337 317
    Content-Type: text/plain; charset=utf-8
338 318
    Accept-Ranges: bytes
339 319
    X-Trans-Id: txafb3504870144b8ca40f7-0052d955d4
320
+   X-Openstack-Request-Id: txafb3504870144b8ca40f7-0052d955d4
340 321
    Date: Fri, 17 Jan 2014 16:09:56 GMT
341 322
 
342 323
 
@@ -353,6 +334,7 @@ Request
353 334
 
354 335
    - account: account
355 336
    - X-Auth-Token: X-Auth-Token
337
+   - X-Service-Token: X-Service-Token
356 338
    - X-Newest: X-Newest
357 339
    - X-Trans-Id-Extra: X-Trans-Id-Extra
358 340
 
@@ -362,17 +344,22 @@ Response Parameters
362 344
 
363 345
 .. rest_parameters:: parameters.yaml
364 346
 
365
-   - Content-Length: Content-Length
347
+   - Content-Length: Content-Length_cud_resp
366 348
    - X-Account-Meta-name: X-Account-Meta-name
367
-   - X-Account-Object-Count: X-Account-Object-Count
368
-   - X-Account-Meta-Temp-URL-Key-2: X-Account-Meta-Temp-URL-Key-2
349
+   - X-Account-Meta-Temp-URL-Key: X-Account-Meta-Temp-URL-Key_resp
350
+   - X-Account-Meta-Temp-URL-Key-2: X-Account-Meta-Temp-URL-Key-2_resp
369 351
    - X-Timestamp: X-Timestamp
370
-   - X-Account-Meta-Temp-URL-Key: X-Account-Meta-Temp-URL-Key
371 352
    - X-Trans-Id: X-Trans-Id
353
+   - X-Openstack-Request-Id: X-Openstack-Request-Id
372 354
    - Date: Date
373 355
    - X-Account-Bytes-Used: X-Account-Bytes-Used
356
+   - X-Account-Object-Count: X-Account-Object-Count
374 357
    - X-Account-Container-Count: X-Account-Container-Count
375
-   - Content-Type: Content-Type
358
+   - X-Account-Storage-Policy-name-Bytes-Used: X-Account-Storage-Policy-name-Bytes-Used
359
+   - X-Account-Storage-Policy-name-Container-Count: X-Account-Storage-Policy-name-Container-Count
360
+   - X-Account-Storage-Policy-name-Object-Count: X-Account-Storage-Policy-name-Object-Count
361
+   - X-Account-Meta-Quota-Bytes: X-Account-Meta-Quota-Bytes_resp
362
+   - Content-Type: Content-Type_cud_resp
376 363
 
377 364
 
378 365
 

+ 110
- 65
api-ref/source/storage-container-services.inc View File

@@ -6,7 +6,9 @@ Containers
6 6
 
7 7
 Lists objects in a container. Creates, shows details for, and
8 8
 deletes containers. Creates, updates, shows, and deletes container
9
-metadata.
9
+metadata. For more information and concepts about
10
+containers see `Object Storage API overview
11
+<http://docs.openstack.org/developer/swift/api/object_api_v1_overview.html>`_.
10 12
 
11 13
 
12 14
 Show container details and list objects
@@ -17,8 +19,8 @@ Show container details and list objects
17 19
 Shows details for a container and lists objects, sorted by name, in the container.
18 20
 
19 21
 Specify query parameters in the request to filter the list and
20
-return a subset of object names. Omit query parameters to return
21
-the complete list of object names that are stored in the container,
22
+return a subset of objects. Omit query parameters to return
23
+a list of objects that are stored in the container,
22 24
 up to 10,000 names. The 10,000 maximum value is configurable. To
23 25
 view the value for the cluster, issue a GET ``/info`` request.
24 26
 
@@ -28,23 +30,13 @@ Example requests and responses:
28 30
 
29 31
 - ``No Content (204)``. Success. The response body shows no objects.
30 32
   Either the container has no objects or you are paging through a
31
-  long list of names by using the ``marker``, ``limit``, or
33
+  long list of objects by using the ``marker``, ``limit``, or
32 34
   ``end_marker`` query parameter and you have reached the end of
33 35
   the list.
34 36
 
35 37
 If the container does not exist, the call returns the ``Not Found
36 38
 (404)`` response code.
37 39
 
38
-The operation returns the ``Range Not Satisfiable (416)`` response
39
-code for any ranged GET requests that specify more than:
40
-
41
-- Fifty ranges.
42
-
43
-- Three overlapping ranges.
44
-
45
-- Eight non-increasing ranges.
46
-
47
-
48 40
 Normal response codes: 200
49 41
 Error response codes:416,404,204,
50 42
 
@@ -64,11 +56,13 @@ Request
64 56
    - delimiter: delimiter
65 57
    - path: path
66 58
    - X-Auth-Token: X-Auth-Token
59
+   - X-Service-Token: X-Service-Token
67 60
    - X-Newest: X-Newest
68 61
    - Accept: Accept
69
-   - X-Container-Meta-Temp-URL-Key: X-Container-Meta-Temp-URL-Key
70
-   - X-Container-Meta-Temp-URL-Key-2: X-Container-Meta-Temp-URL-Key-2
62
+   - X-Container-Meta-Temp-URL-Key: X-Container-Meta-Temp-URL-Key_req
63
+   - X-Container-Meta-Temp-URL-Key-2: X-Container-Meta-Temp-URL-Key-2_req
71 64
    - X-Trans-Id-Extra: X-Trans-Id-Extra
65
+   - X-Storage-Policy: X-Storage-Policy
72 66
 
73 67
 
74 68
 Response Parameters
@@ -77,35 +71,45 @@ Response Parameters
77 71
 .. rest_parameters:: parameters.yaml
78 72
 
79 73
    - X-Container-Meta-name: X-Container-Meta-name
80
-   - Content-Length: Content-Length
74
+   - Content-Length: Content-Length_listing_resp
81 75
    - X-Container-Object-Count: X-Container-Object-Count
82
-   - Accept-Ranges: Accept-Ranges
83
-   - X-Container-Meta-Temp-URL-Key: X-Container-Meta-Temp-URL-Key
84 76
    - X-Container-Bytes-Used: X-Container-Bytes-Used
85
-   - X-Container-Meta-Temp-URL-Key-2: X-Container-Meta-Temp-URL-Key-2
77
+   - Accept-Ranges: Accept-Ranges
78
+   - X-Container-Meta-Temp-URL-Key: X-Container-Meta-Temp-URL-Key_resp
79
+   - X-Container-Meta-Temp-URL-Key-2: X-Container-Meta-Temp-URL-Key-2_resp
80
+   - X-Container-Meta-Quota-Count: X-Container-Meta-Quota-Count_resp
81
+   - X-Container-Meta-Quota-Bytes: X-Container-Meta-Quota-Bytes_resp
82
+   - X-Storage-Policy: X-Storage-Policy
83
+   - X-Container-Read: X-Container-Read_resp
84
+   - X-Container-Write: X-Container-Write_resp
85
+   - X-Container-Sync-Key: X-Container-Sync-Key_resp
86
+   - X-Container-Sync-To: X-Container-Sync-To_resp
87
+   - X-Versions-Location: X-Versions-Location_resp
88
+   - X-History-Location: X-History-Location_resp
86 89
    - X-Timestamp: X-Timestamp
87 90
    - X-Trans-Id: X-Trans-Id
91
+   - X-Openstack-Request-Id: X-Openstack-Request-Id
92
+   - Content_Type: Content-Type_listing_resp
88 93
    - Date: Date
89
-   - Content-Type: Content-Type
90 94
    - hash: hash
91 95
    - last_modified: last_modified
96
+   - content_type: content_type
92 97
    - bytes: bytes
93 98
    - name: name
94
-   - content_type: content_type
95
-
96
-
97
-
98
-Response Example
99
-----------------
100
-
101
-.. literalinclude:: samples/objects-list-http-response-xml.txt
102
-   :language: javascript
103 99
 
104 100
 
101
+Response Example format=json
102
+----------------------------
105 103
 
104
+.. literalinclude:: samples/objects-list-http-response-json.txt
105
+.. literalinclude:: samples/objects-list-response.json
106 106
 
107 107
 
108
+Response Example format=xml
109
+---------------------------
108 110
 
111
+.. literalinclude:: samples/objects-list-http-response-xml.txt
112
+.. literalinclude:: samples/objects-list-response.xml
109 113
 
110 114
 Create container
111 115
 ================
@@ -119,6 +123,13 @@ issuing a PUT operation because the operation is idempotent: It
119 123
 creates a container or updates an existing container, as
120 124
 appropriate.
121 125
 
126
+To create, update, or delete a custom metadata item, use the ``X
127
+-Container-Meta-{name}`` header, where ``{name}`` is the name of
128
+the metadata item.
129
+
130
+.. include:: metadata_header_syntax.inc
131
+.. include:: metadata_header_encoding.inc
132
+
122 133
 Example requests and responses:
123 134
 
124 135
 - Create a container with no metadata:
@@ -136,6 +147,7 @@ Example requests and responses:
136 147
      Content-Length: 0
137 148
      Content-Type: text/html; charset=UTF-8
138 149
      X-Trans-Id: tx7f6b7fa09bc2443a94df0-0052d58b56
150
+     X-Openstack-Request-Id: tx7f6b7fa09bc2443a94df0-0052d58b56
139 151
      Date: Tue, 14 Jan 2014 19:09:10 GMT
140 152
 
141 153
 
@@ -154,6 +166,24 @@ Example requests and responses:
154 166
      Content-Length: 0
155 167
      Content-Type: text/html; charset=UTF-8
156 168
      X-Trans-Id: tx06021f10fc8642b2901e7-0052d58f37
169
+     X-Openstack-Request-Id: tx06021f10fc8642b2901e7-0052d58f37
170
+     Date: Tue, 14 Jan 2014 19:25:43 GMT
171
+
172
+- Create a container with an ACL to allow anybody to get an object in the
173
+  marktwain container:
174
+  ::
175
+
176
+     curl -i $publicURL/marktwain -X PUT -H "X-Auth-Token: $token" -H "X-Container-Read: .r:*"
177
+
178
+
179
+
180
+  ::
181
+
182
+     HTTP/1.1 201 Created
183
+     Content-Length: 0
184
+     Content-Type: text/html; charset=UTF-8
185
+     X-Trans-Id: tx06021f10fc8642b2901e7-0052d58f37
186
+     X-Openstack-Request-Id: tx06021f10fc8642b2901e7-0052d58f37
157 187
      Date: Tue, 14 Jan 2014 19:25:43 GMT
158 188
 
159 189
 Error response codes:201,204,
@@ -167,21 +197,23 @@ Request
167 197
    - account: account
168 198
    - container: container
169 199
    - X-Auth-Token: X-Auth-Token
200
+   - X-Service-Token: X-Service-Token
170 201
    - X-Container-Read: X-Container-Read
171 202
    - X-Container-Write: X-Container-Write
172 203
    - X-Container-Sync-To: X-Container-Sync-To
173 204
    - X-Container-Sync-Key: X-Container-Sync-Key
174 205
    - X-Versions-Location: X-Versions-Location
175
-   - X-Versions-Mode: X-Versions-Mode
176
-   - X-Container-Meta-name: X-Container-Meta-name
206
+   - X-History-Location: X-History-Location
207
+   - X-Container-Meta-name: X-Container-Meta-name_req
177 208
    - X-Container-Meta-Access-Control-Allow-Origin: X-Container-Meta-Access-Control-Allow-Origin
178 209
    - X-Container-Meta-Access-Control-Max-Age: X-Container-Meta-Access-Control-Max-Age
179 210
    - X-Container-Meta-Access-Control-Expose-Headers: X-Container-Meta-Access-Control-Expose-Headers