swift 2.35.2__tar.gz → 2.35.4__tar.gz

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (927) hide show
  1. {swift-2.35.2 → swift-2.35.4}/.mailmap +6 -3
  2. {swift-2.35.2 → swift-2.35.4}/.zuul.yaml +14 -7
  3. {swift-2.35.2 → swift-2.35.4}/AUTHORS +2 -3
  4. {swift-2.35.2 → swift-2.35.4}/CHANGELOG +41 -0
  5. {swift-2.35.2/swift.egg-info → swift-2.35.4}/PKG-INFO +1 -1
  6. swift-2.35.4/releasenotes/notes/release-2.35.3-48f117a536316b56.yaml +20 -0
  7. swift-2.35.4/releasenotes/notes/release-2.35.4-3205ae28c1240697.yaml +33 -0
  8. {swift-2.35.2 → swift-2.35.4}/swift/common/db.py +3 -2
  9. {swift-2.35.2 → swift-2.35.4}/swift/common/direct_client.py +2 -2
  10. {swift-2.35.2 → swift-2.35.4}/swift/common/middleware/gatekeeper.py +11 -5
  11. {swift-2.35.2 → swift-2.35.4}/swift/common/middleware/s3api/s3request.py +32 -0
  12. {swift-2.35.2 → swift-2.35.4}/swift/common/swob.py +1 -1
  13. {swift-2.35.2 → swift-2.35.4}/swift/common/utils/__init__.py +1 -24
  14. {swift-2.35.2 → swift-2.35.4}/swift/common/utils/checksum.py +2 -1
  15. swift-2.35.4/swift/common/utils/pickle.py +77 -0
  16. {swift-2.35.2 → swift-2.35.4}/swift/container/backend.py +8 -5
  17. {swift-2.35.2 → swift-2.35.4}/swift/obj/diskfile.py +4 -3
  18. {swift-2.35.2 → swift-2.35.4}/swift/obj/reconstructor.py +2 -2
  19. {swift-2.35.2 → swift-2.35.4}/swift/obj/replicator.py +2 -3
  20. {swift-2.35.2 → swift-2.35.4}/swift/obj/updater.py +16 -7
  21. {swift-2.35.2 → swift-2.35.4/swift.egg-info}/PKG-INFO +1 -1
  22. {swift-2.35.2 → swift-2.35.4}/swift.egg-info/SOURCES.txt +4 -0
  23. swift-2.35.4/swift.egg-info/pbr.json +1 -0
  24. {swift-2.35.2 → swift-2.35.4}/test/unit/cli/test_relinker.py +4 -4
  25. {swift-2.35.2 → swift-2.35.4}/test/unit/common/middleware/s3api/test_obj.py +52 -0
  26. {swift-2.35.2 → swift-2.35.4}/test/unit/common/middleware/s3api/test_s3api.py +20 -0
  27. {swift-2.35.2 → swift-2.35.4}/test/unit/common/middleware/s3api/test_s3request.py +78 -0
  28. {swift-2.35.2 → swift-2.35.4}/test/unit/common/middleware/test_gatekeeper.py +13 -0
  29. {swift-2.35.2 → swift-2.35.4}/test/unit/common/test_db.py +3 -2
  30. {swift-2.35.2 → swift-2.35.4}/test/unit/common/test_swob.py +18 -0
  31. {swift-2.35.2 → swift-2.35.4}/test/unit/common/utils/test_checksum.py +14 -0
  32. swift-2.35.4/test/unit/common/utils/test_pickle.py +113 -0
  33. {swift-2.35.2 → swift-2.35.4}/test/unit/container/test_sharder.py +7 -4
  34. {swift-2.35.2 → swift-2.35.4}/test/unit/obj/test_diskfile.py +13 -12
  35. {swift-2.35.2 → swift-2.35.4}/test/unit/obj/test_server.py +14 -14
  36. {swift-2.35.2 → swift-2.35.4}/test/unit/obj/test_updater.py +64 -13
  37. {swift-2.35.2 → swift-2.35.4}/tools/playbooks/multinode_setup/run.yaml +9 -0
  38. swift-2.35.2/swift.egg-info/pbr.json +0 -1
  39. {swift-2.35.2 → swift-2.35.4}/.alltests +0 -0
  40. {swift-2.35.2 → swift-2.35.4}/.coveragerc +0 -0
  41. {swift-2.35.2 → swift-2.35.4}/.dockerignore +0 -0
  42. {swift-2.35.2 → swift-2.35.4}/.functests +0 -0
  43. {swift-2.35.2 → swift-2.35.4}/.manpages +0 -0
  44. {swift-2.35.2 → swift-2.35.4}/.probetests +0 -0
  45. {swift-2.35.2 → swift-2.35.4}/.stestr.conf +0 -0
  46. {swift-2.35.2 → swift-2.35.4}/.unittests +0 -0
  47. {swift-2.35.2 → swift-2.35.4}/CONTRIBUTING.rst +0 -0
  48. {swift-2.35.2 → swift-2.35.4}/Dockerfile +0 -0
  49. {swift-2.35.2 → swift-2.35.4}/LICENSE +0 -0
  50. {swift-2.35.2 → swift-2.35.4}/MANIFEST.in +0 -0
  51. {swift-2.35.2 → swift-2.35.4}/README.rst +0 -0
  52. {swift-2.35.2 → swift-2.35.4}/REVIEW_GUIDELINES.rst +0 -0
  53. {swift-2.35.2 → swift-2.35.4}/api-ref/source/conf.py +0 -0
  54. {swift-2.35.2 → swift-2.35.4}/api-ref/source/index.rst +0 -0
  55. {swift-2.35.2 → swift-2.35.4}/api-ref/source/metadata_header_encoding.inc +0 -0
  56. {swift-2.35.2 → swift-2.35.4}/api-ref/source/metadata_header_syntax.inc +0 -0
  57. {swift-2.35.2 → swift-2.35.4}/api-ref/source/parameters.yaml +0 -0
  58. {swift-2.35.2 → swift-2.35.4}/api-ref/source/samples/account-containers-list-http-request-json.txt +0 -0
  59. {swift-2.35.2 → swift-2.35.4}/api-ref/source/samples/account-containers-list-http-request-xml.txt +0 -0
  60. {swift-2.35.2 → swift-2.35.4}/api-ref/source/samples/account-containers-list-http-response-json.txt +0 -0
  61. {swift-2.35.2 → swift-2.35.4}/api-ref/source/samples/account-containers-list-http-response-xml.txt +0 -0
  62. {swift-2.35.2 → swift-2.35.4}/api-ref/source/samples/account-containers-list-response.json +0 -0
  63. {swift-2.35.2 → swift-2.35.4}/api-ref/source/samples/account-containers-list-response.xml +0 -0
  64. {swift-2.35.2 → swift-2.35.4}/api-ref/source/samples/capabilities-list-response.json +0 -0
  65. {swift-2.35.2 → swift-2.35.4}/api-ref/source/samples/containers-list-http-request.txt +0 -0
  66. {swift-2.35.2 → swift-2.35.4}/api-ref/source/samples/containers-list-http-response.txt +0 -0
  67. {swift-2.35.2 → swift-2.35.4}/api-ref/source/samples/endpoints-list-response-headers.json +0 -0
  68. {swift-2.35.2 → swift-2.35.4}/api-ref/source/samples/endpoints-list-response.json +0 -0
  69. {swift-2.35.2 → swift-2.35.4}/api-ref/source/samples/goodbyeworld.txt +0 -0
  70. {swift-2.35.2 → swift-2.35.4}/api-ref/source/samples/helloworld.txt +0 -0
  71. {swift-2.35.2 → swift-2.35.4}/api-ref/source/samples/objects-list-http-response-json.txt +0 -0
  72. {swift-2.35.2 → swift-2.35.4}/api-ref/source/samples/objects-list-http-response-xml.txt +0 -0
  73. {swift-2.35.2 → swift-2.35.4}/api-ref/source/samples/objects-list-response.json +0 -0
  74. {swift-2.35.2 → swift-2.35.4}/api-ref/source/samples/objects-list-response.xml +0 -0
  75. {swift-2.35.2 → swift-2.35.4}/api-ref/source/storage-account-services.inc +0 -0
  76. {swift-2.35.2 → swift-2.35.4}/api-ref/source/storage-container-services.inc +0 -0
  77. {swift-2.35.2 → swift-2.35.4}/api-ref/source/storage-object-services.inc +0 -0
  78. {swift-2.35.2 → swift-2.35.4}/api-ref/source/storage_endpoints.inc +0 -0
  79. {swift-2.35.2 → swift-2.35.4}/api-ref/source/storage_info.inc +0 -0
  80. {swift-2.35.2 → swift-2.35.4}/bandit.yaml +0 -0
  81. {swift-2.35.2 → swift-2.35.4}/bindep.txt +0 -0
  82. {swift-2.35.2 → swift-2.35.4}/doc/manpages/account-server.conf.5 +0 -0
  83. {swift-2.35.2 → swift-2.35.4}/doc/manpages/container-reconciler.conf.5 +0 -0
  84. {swift-2.35.2 → swift-2.35.4}/doc/manpages/container-server.conf.5 +0 -0
  85. {swift-2.35.2 → swift-2.35.4}/doc/manpages/container-sync-realms.conf.5 +0 -0
  86. {swift-2.35.2 → swift-2.35.4}/doc/manpages/dispersion.conf.5 +0 -0
  87. {swift-2.35.2 → swift-2.35.4}/doc/manpages/object-expirer.conf.5 +0 -0
  88. {swift-2.35.2 → swift-2.35.4}/doc/manpages/object-server.conf.5 +0 -0
  89. {swift-2.35.2 → swift-2.35.4}/doc/manpages/proxy-server.conf.5 +0 -0
  90. {swift-2.35.2 → swift-2.35.4}/doc/manpages/swift-account-audit.1 +0 -0
  91. {swift-2.35.2 → swift-2.35.4}/doc/manpages/swift-account-auditor.1 +0 -0
  92. {swift-2.35.2 → swift-2.35.4}/doc/manpages/swift-account-info.1 +0 -0
  93. {swift-2.35.2 → swift-2.35.4}/doc/manpages/swift-account-reaper.1 +0 -0
  94. {swift-2.35.2 → swift-2.35.4}/doc/manpages/swift-account-replicator.1 +0 -0
  95. {swift-2.35.2 → swift-2.35.4}/doc/manpages/swift-account-server.1 +0 -0
  96. {swift-2.35.2 → swift-2.35.4}/doc/manpages/swift-config.1 +0 -0
  97. {swift-2.35.2 → swift-2.35.4}/doc/manpages/swift-container-auditor.1 +0 -0
  98. {swift-2.35.2 → swift-2.35.4}/doc/manpages/swift-container-info.1 +0 -0
  99. {swift-2.35.2 → swift-2.35.4}/doc/manpages/swift-container-reconciler.1 +0 -0
  100. {swift-2.35.2 → swift-2.35.4}/doc/manpages/swift-container-replicator.1 +0 -0
  101. {swift-2.35.2 → swift-2.35.4}/doc/manpages/swift-container-server.1 +0 -0
  102. {swift-2.35.2 → swift-2.35.4}/doc/manpages/swift-container-sync.1 +0 -0
  103. {swift-2.35.2 → swift-2.35.4}/doc/manpages/swift-container-updater.1 +0 -0
  104. {swift-2.35.2 → swift-2.35.4}/doc/manpages/swift-dispersion-populate.1 +0 -0
  105. {swift-2.35.2 → swift-2.35.4}/doc/manpages/swift-dispersion-report.1 +0 -0
  106. {swift-2.35.2 → swift-2.35.4}/doc/manpages/swift-drive-audit.1 +0 -0
  107. {swift-2.35.2 → swift-2.35.4}/doc/manpages/swift-form-signature.1 +0 -0
  108. {swift-2.35.2 → swift-2.35.4}/doc/manpages/swift-get-nodes.1 +0 -0
  109. {swift-2.35.2 → swift-2.35.4}/doc/manpages/swift-init.1 +0 -0
  110. {swift-2.35.2 → swift-2.35.4}/doc/manpages/swift-object-auditor.1 +0 -0
  111. {swift-2.35.2 → swift-2.35.4}/doc/manpages/swift-object-expirer.1 +0 -0
  112. {swift-2.35.2 → swift-2.35.4}/doc/manpages/swift-object-info.1 +0 -0
  113. {swift-2.35.2 → swift-2.35.4}/doc/manpages/swift-object-reconstructor.1 +0 -0
  114. {swift-2.35.2 → swift-2.35.4}/doc/manpages/swift-object-relinker.1 +0 -0
  115. {swift-2.35.2 → swift-2.35.4}/doc/manpages/swift-object-replicator.1 +0 -0
  116. {swift-2.35.2 → swift-2.35.4}/doc/manpages/swift-object-server.1 +0 -0
  117. {swift-2.35.2 → swift-2.35.4}/doc/manpages/swift-object-updater.1 +0 -0
  118. {swift-2.35.2 → swift-2.35.4}/doc/manpages/swift-oldies.1 +0 -0
  119. {swift-2.35.2 → swift-2.35.4}/doc/manpages/swift-orphans.1 +0 -0
  120. {swift-2.35.2 → swift-2.35.4}/doc/manpages/swift-proxy-server.1 +0 -0
  121. {swift-2.35.2 → swift-2.35.4}/doc/manpages/swift-recon-cron.1 +0 -0
  122. {swift-2.35.2 → swift-2.35.4}/doc/manpages/swift-recon.1 +0 -0
  123. {swift-2.35.2 → swift-2.35.4}/doc/manpages/swift-reconciler-enqueue.1 +0 -0
  124. {swift-2.35.2 → swift-2.35.4}/doc/manpages/swift-ring-builder-analyzer.1 +0 -0
  125. {swift-2.35.2 → swift-2.35.4}/doc/manpages/swift-ring-builder.1 +0 -0
  126. {swift-2.35.2 → swift-2.35.4}/doc/manpages/swift-ring-composer.1 +0 -0
  127. {swift-2.35.2 → swift-2.35.4}/doc/manpages/swift.conf.5 +0 -0
  128. {swift-2.35.2 → swift-2.35.4}/doc/requirements.txt +0 -0
  129. {swift-2.35.2 → swift-2.35.4}/doc/s3api/conf/ceph-known-failures-keystone.yaml +0 -0
  130. {swift-2.35.2 → swift-2.35.4}/doc/s3api/conf/ceph-known-failures-tempauth.yaml +0 -0
  131. {swift-2.35.2 → swift-2.35.4}/doc/s3api/rnc/access_control_policy.rnc +0 -0
  132. {swift-2.35.2 → swift-2.35.4}/doc/s3api/rnc/bucket_logging_status.rnc +0 -0
  133. {swift-2.35.2 → swift-2.35.4}/doc/s3api/rnc/common.rnc +0 -0
  134. {swift-2.35.2 → swift-2.35.4}/doc/s3api/rnc/complete_multipart_upload.rnc +0 -0
  135. {swift-2.35.2 → swift-2.35.4}/doc/s3api/rnc/complete_multipart_upload_result.rnc +0 -0
  136. {swift-2.35.2 → swift-2.35.4}/doc/s3api/rnc/copy_object_result.rnc +0 -0
  137. {swift-2.35.2 → swift-2.35.4}/doc/s3api/rnc/copy_part_result.rnc +0 -0
  138. {swift-2.35.2 → swift-2.35.4}/doc/s3api/rnc/create_bucket_configuration.rnc +0 -0
  139. {swift-2.35.2 → swift-2.35.4}/doc/s3api/rnc/delete.rnc +0 -0
  140. {swift-2.35.2 → swift-2.35.4}/doc/s3api/rnc/delete_result.rnc +0 -0
  141. {swift-2.35.2 → swift-2.35.4}/doc/s3api/rnc/error.rnc +0 -0
  142. {swift-2.35.2 → swift-2.35.4}/doc/s3api/rnc/initiate_multipart_upload_result.rnc +0 -0
  143. {swift-2.35.2 → swift-2.35.4}/doc/s3api/rnc/lifecycle_configuration.rnc +0 -0
  144. {swift-2.35.2 → swift-2.35.4}/doc/s3api/rnc/list_all_my_buckets_result.rnc +0 -0
  145. {swift-2.35.2 → swift-2.35.4}/doc/s3api/rnc/list_bucket_result.rnc +0 -0
  146. {swift-2.35.2 → swift-2.35.4}/doc/s3api/rnc/list_multipart_uploads_result.rnc +0 -0
  147. {swift-2.35.2 → swift-2.35.4}/doc/s3api/rnc/list_parts_result.rnc +0 -0
  148. {swift-2.35.2 → swift-2.35.4}/doc/s3api/rnc/list_versions_result.rnc +0 -0
  149. {swift-2.35.2 → swift-2.35.4}/doc/s3api/rnc/location_constraint.rnc +0 -0
  150. {swift-2.35.2 → swift-2.35.4}/doc/s3api/rnc/versioning_configuration.rnc +0 -0
  151. {swift-2.35.2 → swift-2.35.4}/doc/saio/bin/remakerings +0 -0
  152. {swift-2.35.2 → swift-2.35.4}/doc/saio/bin/resetswift +0 -0
  153. {swift-2.35.2 → swift-2.35.4}/doc/saio/bin/startmain +0 -0
  154. {swift-2.35.2 → swift-2.35.4}/doc/saio/bin/startrest +0 -0
  155. {swift-2.35.2 → swift-2.35.4}/doc/saio/rsyncd.conf +0 -0
  156. {swift-2.35.2 → swift-2.35.4}/doc/saio/rsyslog.d/10-swift.conf +0 -0
  157. {swift-2.35.2 → swift-2.35.4}/doc/saio/swift/account-server/1.conf +0 -0
  158. {swift-2.35.2 → swift-2.35.4}/doc/saio/swift/account-server/2.conf +0 -0
  159. {swift-2.35.2 → swift-2.35.4}/doc/saio/swift/account-server/3.conf +0 -0
  160. {swift-2.35.2 → swift-2.35.4}/doc/saio/swift/account-server/4.conf +0 -0
  161. {swift-2.35.2 → swift-2.35.4}/doc/saio/swift/container-reconciler/1.conf +0 -0
  162. {swift-2.35.2 → swift-2.35.4}/doc/saio/swift/container-reconciler/2.conf +0 -0
  163. {swift-2.35.2 → swift-2.35.4}/doc/saio/swift/container-reconciler/3.conf +0 -0
  164. {swift-2.35.2 → swift-2.35.4}/doc/saio/swift/container-reconciler/4.conf +0 -0
  165. {swift-2.35.2 → swift-2.35.4}/doc/saio/swift/container-server/1.conf +0 -0
  166. {swift-2.35.2 → swift-2.35.4}/doc/saio/swift/container-server/2.conf +0 -0
  167. {swift-2.35.2 → swift-2.35.4}/doc/saio/swift/container-server/3.conf +0 -0
  168. {swift-2.35.2 → swift-2.35.4}/doc/saio/swift/container-server/4.conf +0 -0
  169. {swift-2.35.2 → swift-2.35.4}/doc/saio/swift/container-sync-realms.conf +0 -0
  170. {swift-2.35.2 → swift-2.35.4}/doc/saio/swift/internal-client.conf +0 -0
  171. {swift-2.35.2 → swift-2.35.4}/doc/saio/swift/object-expirer.conf +0 -0
  172. {swift-2.35.2 → swift-2.35.4}/doc/saio/swift/object-server/1.conf +0 -0
  173. {swift-2.35.2 → swift-2.35.4}/doc/saio/swift/object-server/2.conf +0 -0
  174. {swift-2.35.2 → swift-2.35.4}/doc/saio/swift/object-server/3.conf +0 -0
  175. {swift-2.35.2 → swift-2.35.4}/doc/saio/swift/object-server/4.conf +0 -0
  176. {swift-2.35.2 → swift-2.35.4}/doc/saio/swift/proxy-server.conf +0 -0
  177. {swift-2.35.2 → swift-2.35.4}/doc/saio/swift/swift.conf +0 -0
  178. {swift-2.35.2 → swift-2.35.4}/doc/source/_extra/.htaccess +0 -0
  179. {swift-2.35.2 → swift-2.35.4}/doc/source/account.rst +0 -0
  180. {swift-2.35.2 → swift-2.35.4}/doc/source/admin/figures/objectstorage-accountscontainers.png +0 -0
  181. {swift-2.35.2 → swift-2.35.4}/doc/source/admin/figures/objectstorage-arch.png +0 -0
  182. {swift-2.35.2 → swift-2.35.4}/doc/source/admin/figures/objectstorage-buildingblocks.png +0 -0
  183. {swift-2.35.2 → swift-2.35.4}/doc/source/admin/figures/objectstorage-nodes.png +0 -0
  184. {swift-2.35.2 → swift-2.35.4}/doc/source/admin/figures/objectstorage-partitions.png +0 -0
  185. {swift-2.35.2 → swift-2.35.4}/doc/source/admin/figures/objectstorage-replication.png +0 -0
  186. {swift-2.35.2 → swift-2.35.4}/doc/source/admin/figures/objectstorage-ring.png +0 -0
  187. {swift-2.35.2 → swift-2.35.4}/doc/source/admin/figures/objectstorage-usecase.png +0 -0
  188. {swift-2.35.2 → swift-2.35.4}/doc/source/admin/figures/objectstorage-zones.png +0 -0
  189. {swift-2.35.2 → swift-2.35.4}/doc/source/admin/figures/objectstorage.png +0 -0
  190. {swift-2.35.2 → swift-2.35.4}/doc/source/admin/index.rst +0 -0
  191. {swift-2.35.2 → swift-2.35.4}/doc/source/admin/objectstorage-EC.rst +0 -0
  192. {swift-2.35.2 → swift-2.35.4}/doc/source/admin/objectstorage-account-reaper.rst +0 -0
  193. {swift-2.35.2 → swift-2.35.4}/doc/source/admin/objectstorage-arch.rst +0 -0
  194. {swift-2.35.2 → swift-2.35.4}/doc/source/admin/objectstorage-auditors.rst +0 -0
  195. {swift-2.35.2 → swift-2.35.4}/doc/source/admin/objectstorage-characteristics.rst +0 -0
  196. {swift-2.35.2 → swift-2.35.4}/doc/source/admin/objectstorage-components.rst +0 -0
  197. {swift-2.35.2 → swift-2.35.4}/doc/source/admin/objectstorage-features.rst +0 -0
  198. {swift-2.35.2 → swift-2.35.4}/doc/source/admin/objectstorage-intro.rst +0 -0
  199. {swift-2.35.2 → swift-2.35.4}/doc/source/admin/objectstorage-large-objects.rst +0 -0
  200. {swift-2.35.2 → swift-2.35.4}/doc/source/admin/objectstorage-monitoring.rst +0 -0
  201. {swift-2.35.2 → swift-2.35.4}/doc/source/admin/objectstorage-replication.rst +0 -0
  202. {swift-2.35.2 → swift-2.35.4}/doc/source/admin/objectstorage-ringbuilder.rst +0 -0
  203. {swift-2.35.2 → swift-2.35.4}/doc/source/admin/objectstorage-tenant-specific-image-storage.rst +0 -0
  204. {swift-2.35.2 → swift-2.35.4}/doc/source/admin/objectstorage-troubleshoot.rst +0 -0
  205. {swift-2.35.2 → swift-2.35.4}/doc/source/admin_guide.rst +0 -0
  206. {swift-2.35.2 → swift-2.35.4}/doc/source/apache_deployment_guide.rst +0 -0
  207. {swift-2.35.2 → swift-2.35.4}/doc/source/api/authentication.rst +0 -0
  208. {swift-2.35.2 → swift-2.35.4}/doc/source/api/bulk-delete.rst +0 -0
  209. {swift-2.35.2 → swift-2.35.4}/doc/source/api/container_quotas.rst +0 -0
  210. {swift-2.35.2 → swift-2.35.4}/doc/source/api/discoverability.rst +0 -0
  211. {swift-2.35.2 → swift-2.35.4}/doc/source/api/form_post_middleware.rst +0 -0
  212. {swift-2.35.2 → swift-2.35.4}/doc/source/api/large_objects.rst +0 -0
  213. {swift-2.35.2 → swift-2.35.4}/doc/source/api/object-expiration.rst +0 -0
  214. {swift-2.35.2 → swift-2.35.4}/doc/source/api/object_api_v1_overview.rst +0 -0
  215. {swift-2.35.2 → swift-2.35.4}/doc/source/api/object_versioning.rst +0 -0
  216. {swift-2.35.2 → swift-2.35.4}/doc/source/api/pagination.rst +0 -0
  217. {swift-2.35.2 → swift-2.35.4}/doc/source/api/pseudo-hierarchical-folders-directories.rst +0 -0
  218. {swift-2.35.2 → swift-2.35.4}/doc/source/api/serialized-response-formats.rst +0 -0
  219. {swift-2.35.2 → swift-2.35.4}/doc/source/api/static-website.rst +0 -0
  220. {swift-2.35.2 → swift-2.35.4}/doc/source/api/temporary_url_middleware.rst +0 -0
  221. {swift-2.35.2 → swift-2.35.4}/doc/source/api/use_content-encoding_metadata.rst +0 -0
  222. {swift-2.35.2 → swift-2.35.4}/doc/source/api/use_the_content-disposition_metadata.rst +0 -0
  223. {swift-2.35.2 → swift-2.35.4}/doc/source/associated_projects.rst +0 -0
  224. {swift-2.35.2 → swift-2.35.4}/doc/source/audit_watchers.rst +0 -0
  225. {swift-2.35.2 → swift-2.35.4}/doc/source/conf.py +0 -0
  226. {swift-2.35.2 → swift-2.35.4}/doc/source/config/account_server_config.rst +0 -0
  227. {swift-2.35.2 → swift-2.35.4}/doc/source/config/container_server_config.rst +0 -0
  228. {swift-2.35.2 → swift-2.35.4}/doc/source/config/global_memcache_config.rst +0 -0
  229. {swift-2.35.2 → swift-2.35.4}/doc/source/config/index.rst +0 -0
  230. {swift-2.35.2 → swift-2.35.4}/doc/source/config/object_server_config.rst +0 -0
  231. {swift-2.35.2 → swift-2.35.4}/doc/source/config/proxy_server_config.rst +0 -0
  232. {swift-2.35.2 → swift-2.35.4}/doc/source/config/swift_common_config.rst +0 -0
  233. {swift-2.35.2 → swift-2.35.4}/doc/source/container.rst +0 -0
  234. {swift-2.35.2 → swift-2.35.4}/doc/source/contributor/contributing.rst +0 -0
  235. {swift-2.35.2 → swift-2.35.4}/doc/source/contributor/review_guidelines.rst +0 -0
  236. {swift-2.35.2 → swift-2.35.4}/doc/source/cors.rst +0 -0
  237. {swift-2.35.2 → swift-2.35.4}/doc/source/crossdomain.rst +0 -0
  238. {swift-2.35.2 → swift-2.35.4}/doc/source/db.rst +0 -0
  239. {swift-2.35.2 → swift-2.35.4}/doc/source/deployment_guide.rst +0 -0
  240. {swift-2.35.2 → swift-2.35.4}/doc/source/development_auth.rst +0 -0
  241. {swift-2.35.2 → swift-2.35.4}/doc/source/development_guidelines.rst +0 -0
  242. {swift-2.35.2 → swift-2.35.4}/doc/source/development_middleware.rst +0 -0
  243. {swift-2.35.2 → swift-2.35.4}/doc/source/development_ondisk_backends.rst +0 -0
  244. {swift-2.35.2 → swift-2.35.4}/doc/source/development_saio.rst +0 -0
  245. {swift-2.35.2 → swift-2.35.4}/doc/source/development_watchers.rst +0 -0
  246. {swift-2.35.2 → swift-2.35.4}/doc/source/first_contribution_swift.rst +0 -0
  247. {swift-2.35.2 → swift-2.35.4}/doc/source/getting_started.rst +0 -0
  248. {swift-2.35.2 → swift-2.35.4}/doc/source/images/ec_overview.png +0 -0
  249. {swift-2.35.2 → swift-2.35.4}/doc/source/images/reload_process_tree_1.svg +0 -0
  250. {swift-2.35.2 → swift-2.35.4}/doc/source/images/reload_process_tree_2.svg +0 -0
  251. {swift-2.35.2 → swift-2.35.4}/doc/source/images/reload_process_tree_3.svg +0 -0
  252. {swift-2.35.2 → swift-2.35.4}/doc/source/images/reload_process_tree_4.svg +0 -0
  253. {swift-2.35.2 → swift-2.35.4}/doc/source/images/reload_process_tree_5.svg +0 -0
  254. {swift-2.35.2 → swift-2.35.4}/doc/source/images/reload_process_tree_6.svg +0 -0
  255. {swift-2.35.2 → swift-2.35.4}/doc/source/images/sharded_GET.svg +0 -0
  256. {swift-2.35.2 → swift-2.35.4}/doc/source/images/sharding_GET.svg +0 -0
  257. {swift-2.35.2 → swift-2.35.4}/doc/source/images/sharding_cleave1_load.svg +0 -0
  258. {swift-2.35.2 → swift-2.35.4}/doc/source/images/sharding_cleave2_load.svg +0 -0
  259. {swift-2.35.2 → swift-2.35.4}/doc/source/images/sharding_cleave_basic.svg +0 -0
  260. {swift-2.35.2 → swift-2.35.4}/doc/source/images/sharding_db_states.svg +0 -0
  261. {swift-2.35.2 → swift-2.35.4}/doc/source/images/sharding_scan_basic.svg +0 -0
  262. {swift-2.35.2 → swift-2.35.4}/doc/source/images/sharding_scan_load.svg +0 -0
  263. {swift-2.35.2 → swift-2.35.4}/doc/source/images/sharding_sharded_load.svg +0 -0
  264. {swift-2.35.2 → swift-2.35.4}/doc/source/images/sharding_unsharded.svg +0 -0
  265. {swift-2.35.2 → swift-2.35.4}/doc/source/images/sharding_unsharded_load.svg +0 -0
  266. {swift-2.35.2 → swift-2.35.4}/doc/source/index.rst +0 -0
  267. {swift-2.35.2 → swift-2.35.4}/doc/source/install/controller-common_prerequisites.txt +0 -0
  268. {swift-2.35.2 → swift-2.35.4}/doc/source/install/controller-include.txt +0 -0
  269. {swift-2.35.2 → swift-2.35.4}/doc/source/install/controller-install-debian.rst +0 -0
  270. {swift-2.35.2 → swift-2.35.4}/doc/source/install/controller-install-obs.rst +0 -0
  271. {swift-2.35.2 → swift-2.35.4}/doc/source/install/controller-install-rdo.rst +0 -0
  272. {swift-2.35.2 → swift-2.35.4}/doc/source/install/controller-install-ubuntu.rst +0 -0
  273. {swift-2.35.2 → swift-2.35.4}/doc/source/install/controller-install.rst +0 -0
  274. {swift-2.35.2 → swift-2.35.4}/doc/source/install/edit_hosts_file.txt +0 -0
  275. {swift-2.35.2 → swift-2.35.4}/doc/source/install/environment-networking.rst +0 -0
  276. {swift-2.35.2 → swift-2.35.4}/doc/source/install/finalize-installation-obs.rst +0 -0
  277. {swift-2.35.2 → swift-2.35.4}/doc/source/install/finalize-installation-rdo.rst +0 -0
  278. {swift-2.35.2 → swift-2.35.4}/doc/source/install/finalize-installation-ubuntu-debian.rst +0 -0
  279. {swift-2.35.2 → swift-2.35.4}/doc/source/install/finalize-installation.rst +0 -0
  280. {swift-2.35.2 → swift-2.35.4}/doc/source/install/get_started.rst +0 -0
  281. {swift-2.35.2 → swift-2.35.4}/doc/source/install/index.rst +0 -0
  282. {swift-2.35.2 → swift-2.35.4}/doc/source/install/initial-rings.rst +0 -0
  283. {swift-2.35.2 → swift-2.35.4}/doc/source/install/next-steps.rst +0 -0
  284. {swift-2.35.2 → swift-2.35.4}/doc/source/install/storage-include1.txt +0 -0
  285. {swift-2.35.2 → swift-2.35.4}/doc/source/install/storage-include2.txt +0 -0
  286. {swift-2.35.2 → swift-2.35.4}/doc/source/install/storage-include3.txt +0 -0
  287. {swift-2.35.2 → swift-2.35.4}/doc/source/install/storage-install-obs.rst +0 -0
  288. {swift-2.35.2 → swift-2.35.4}/doc/source/install/storage-install-rdo.rst +0 -0
  289. {swift-2.35.2 → swift-2.35.4}/doc/source/install/storage-install-ubuntu-debian.rst +0 -0
  290. {swift-2.35.2 → swift-2.35.4}/doc/source/install/storage-install.rst +0 -0
  291. {swift-2.35.2 → swift-2.35.4}/doc/source/install/verify.rst +0 -0
  292. {swift-2.35.2 → swift-2.35.4}/doc/source/logs.rst +0 -0
  293. {swift-2.35.2 → swift-2.35.4}/doc/source/metrics/account_auditor.rst +0 -0
  294. {swift-2.35.2 → swift-2.35.4}/doc/source/metrics/account_reaper.rst +0 -0
  295. {swift-2.35.2 → swift-2.35.4}/doc/source/metrics/account_replicator.rst +0 -0
  296. {swift-2.35.2 → swift-2.35.4}/doc/source/metrics/account_server.rst +0 -0
  297. {swift-2.35.2 → swift-2.35.4}/doc/source/metrics/all.rst +0 -0
  298. {swift-2.35.2 → swift-2.35.4}/doc/source/metrics/container_auditor.rst +0 -0
  299. {swift-2.35.2 → swift-2.35.4}/doc/source/metrics/container_replicator.rst +0 -0
  300. {swift-2.35.2 → swift-2.35.4}/doc/source/metrics/container_server.rst +0 -0
  301. {swift-2.35.2 → swift-2.35.4}/doc/source/metrics/container_sync.rst +0 -0
  302. {swift-2.35.2 → swift-2.35.4}/doc/source/metrics/container_updater.rst +0 -0
  303. {swift-2.35.2 → swift-2.35.4}/doc/source/metrics/object_auditor.rst +0 -0
  304. {swift-2.35.2 → swift-2.35.4}/doc/source/metrics/object_expirer.rst +0 -0
  305. {swift-2.35.2 → swift-2.35.4}/doc/source/metrics/object_reconstructor.rst +0 -0
  306. {swift-2.35.2 → swift-2.35.4}/doc/source/metrics/object_replicator.rst +0 -0
  307. {swift-2.35.2 → swift-2.35.4}/doc/source/metrics/object_server.rst +0 -0
  308. {swift-2.35.2 → swift-2.35.4}/doc/source/metrics/object_updater.rst +0 -0
  309. {swift-2.35.2 → swift-2.35.4}/doc/source/metrics/proxy_server.rst +0 -0
  310. {swift-2.35.2 → swift-2.35.4}/doc/source/middleware.rst +0 -0
  311. {swift-2.35.2 → swift-2.35.4}/doc/source/misc.rst +0 -0
  312. {swift-2.35.2 → swift-2.35.4}/doc/source/object.rst +0 -0
  313. {swift-2.35.2 → swift-2.35.4}/doc/source/ops_runbook/diagnose.rst +0 -0
  314. {swift-2.35.2 → swift-2.35.4}/doc/source/ops_runbook/index.rst +0 -0
  315. {swift-2.35.2 → swift-2.35.4}/doc/source/ops_runbook/maintenance.rst +0 -0
  316. {swift-2.35.2 → swift-2.35.4}/doc/source/ops_runbook/procedures.rst +0 -0
  317. {swift-2.35.2 → swift-2.35.4}/doc/source/ops_runbook/troubleshooting.rst +0 -0
  318. {swift-2.35.2 → swift-2.35.4}/doc/source/overview_acl.rst +0 -0
  319. {swift-2.35.2 → swift-2.35.4}/doc/source/overview_architecture.rst +0 -0
  320. {swift-2.35.2 → swift-2.35.4}/doc/source/overview_auth.rst +0 -0
  321. {swift-2.35.2 → swift-2.35.4}/doc/source/overview_backing_store.rst +0 -0
  322. {swift-2.35.2 → swift-2.35.4}/doc/source/overview_container_sharding.rst +0 -0
  323. {swift-2.35.2 → swift-2.35.4}/doc/source/overview_container_sync.rst +0 -0
  324. {swift-2.35.2 → swift-2.35.4}/doc/source/overview_encryption.rst +0 -0
  325. {swift-2.35.2 → swift-2.35.4}/doc/source/overview_erasure_code.rst +0 -0
  326. {swift-2.35.2 → swift-2.35.4}/doc/source/overview_expiring_objects.rst +0 -0
  327. {swift-2.35.2 → swift-2.35.4}/doc/source/overview_global_cluster.rst +0 -0
  328. {swift-2.35.2 → swift-2.35.4}/doc/source/overview_large_objects.rst +0 -0
  329. {swift-2.35.2 → swift-2.35.4}/doc/source/overview_policies.rst +0 -0
  330. {swift-2.35.2 → swift-2.35.4}/doc/source/overview_reaper.rst +0 -0
  331. {swift-2.35.2 → swift-2.35.4}/doc/source/overview_replication.rst +0 -0
  332. {swift-2.35.2 → swift-2.35.4}/doc/source/overview_ring.rst +0 -0
  333. {swift-2.35.2 → swift-2.35.4}/doc/source/overview_wsgi_management.rst +0 -0
  334. {swift-2.35.2 → swift-2.35.4}/doc/source/policies_saio.rst +0 -0
  335. {swift-2.35.2 → swift-2.35.4}/doc/source/proxy.rst +0 -0
  336. {swift-2.35.2 → swift-2.35.4}/doc/source/ratelimit.rst +0 -0
  337. {swift-2.35.2 → swift-2.35.4}/doc/source/replication_network.rst +0 -0
  338. {swift-2.35.2 → swift-2.35.4}/doc/source/ring.rst +0 -0
  339. {swift-2.35.2 → swift-2.35.4}/doc/source/ring_background.rst +0 -0
  340. {swift-2.35.2 → swift-2.35.4}/doc/source/ring_partpower.rst +0 -0
  341. {swift-2.35.2 → swift-2.35.4}/doc/source/s3_compat.rst +0 -0
  342. {swift-2.35.2 → swift-2.35.4}/doc/source/test-cors.html +0 -0
  343. {swift-2.35.2 → swift-2.35.4}/docker/dockerhub_description.md +0 -0
  344. {swift-2.35.2 → swift-2.35.4}/docker/install_scripts/00_swift_needs.sh +0 -0
  345. {swift-2.35.2 → swift-2.35.4}/docker/install_scripts/10_apk_install_prereqs.sh +0 -0
  346. {swift-2.35.2 → swift-2.35.4}/docker/install_scripts/21_apk_install_py3.sh +0 -0
  347. {swift-2.35.2 → swift-2.35.4}/docker/install_scripts/50_swift_install.sh +0 -0
  348. {swift-2.35.2 → swift-2.35.4}/docker/install_scripts/60_pip_uninstall_dev.sh +0 -0
  349. {swift-2.35.2 → swift-2.35.4}/docker/install_scripts/99_apk_uninstall_dev.sh +0 -0
  350. {swift-2.35.2 → swift-2.35.4}/docker/install_scripts/python_test_dirs +0 -0
  351. {swift-2.35.2 → swift-2.35.4}/docker/rootfs/etc/cont-init.d/01_swift_logs +0 -0
  352. {swift-2.35.2 → swift-2.35.4}/docker/rootfs/etc/cont-init.d/02_build_remakerings +0 -0
  353. {swift-2.35.2 → swift-2.35.4}/docker/rootfs/etc/fix-attrs.d/logging +0 -0
  354. {swift-2.35.2 → swift-2.35.4}/docker/rootfs/etc/fix-attrs.d/srv_node +0 -0
  355. {swift-2.35.2 → swift-2.35.4}/docker/rootfs/etc/fix-attrs.d/swift +0 -0
  356. {swift-2.35.2 → swift-2.35.4}/docker/rootfs/etc/fix-attrs.d/tmp +0 -0
  357. {swift-2.35.2 → swift-2.35.4}/docker/rootfs/etc/profile +0 -0
  358. {swift-2.35.2 → swift-2.35.4}/docker/rootfs/etc/rsyncd.conf +0 -0
  359. {swift-2.35.2 → swift-2.35.4}/docker/rootfs/etc/rsyslog.conf +0 -0
  360. {swift-2.35.2 → swift-2.35.4}/docker/rootfs/etc/rsyslog.d/00-swift.conf +0 -0
  361. {swift-2.35.2 → swift-2.35.4}/docker/rootfs/etc/rsyslog.d/50-default.conf +0 -0
  362. {swift-2.35.2 → swift-2.35.4}/docker/rootfs/etc/services.d/memcached/run +0 -0
  363. {swift-2.35.2 → swift-2.35.4}/docker/rootfs/etc/services.d/swift-account/run +0 -0
  364. {swift-2.35.2 → swift-2.35.4}/docker/rootfs/etc/services.d/swift-container/run +0 -0
  365. {swift-2.35.2 → swift-2.35.4}/docker/rootfs/etc/services.d/swift-object/run +0 -0
  366. {swift-2.35.2 → swift-2.35.4}/docker/rootfs/etc/services.d/swift-proxy/run +0 -0
  367. {swift-2.35.2 → swift-2.35.4}/docker/rootfs/etc/socklog.rules/swift_account_server +0 -0
  368. {swift-2.35.2 → swift-2.35.4}/docker/rootfs/etc/socklog.rules/swift_all +0 -0
  369. {swift-2.35.2 → swift-2.35.4}/docker/rootfs/etc/socklog.rules/swift_container_server +0 -0
  370. {swift-2.35.2 → swift-2.35.4}/docker/rootfs/etc/socklog.rules/swift_object_server +0 -0
  371. {swift-2.35.2 → swift-2.35.4}/docker/rootfs/etc/socklog.rules/swift_proxy_server +0 -0
  372. {swift-2.35.2 → swift-2.35.4}/docker/rootfs/etc/swift/account-server.conf +0 -0
  373. {swift-2.35.2 → swift-2.35.4}/docker/rootfs/etc/swift/container-server.conf +0 -0
  374. {swift-2.35.2 → swift-2.35.4}/docker/rootfs/etc/swift/object-server.conf +0 -0
  375. {swift-2.35.2 → swift-2.35.4}/docker/rootfs/etc/swift/proxy-server.conf +0 -0
  376. {swift-2.35.2 → swift-2.35.4}/docker/rootfs/etc/swift/swift.conf +0 -0
  377. {swift-2.35.2 → swift-2.35.4}/docker/rootfs/etc/swift_build/build_devices +0 -0
  378. {swift-2.35.2 → swift-2.35.4}/docker/rootfs/etc/swift_build/build_remakerings +0 -0
  379. {swift-2.35.2 → swift-2.35.4}/docker/rootfs/etc/swift_build/prepare_rings +0 -0
  380. {swift-2.35.2 → swift-2.35.4}/docker/s6-gpg-pub-key +0 -0
  381. {swift-2.35.2 → swift-2.35.4}/etc/account-server.conf-sample +0 -0
  382. {swift-2.35.2 → swift-2.35.4}/etc/backend-ratelimit.conf-sample +0 -0
  383. {swift-2.35.2 → swift-2.35.4}/etc/container-reconciler.conf-sample +0 -0
  384. {swift-2.35.2 → swift-2.35.4}/etc/container-server.conf-sample +0 -0
  385. {swift-2.35.2 → swift-2.35.4}/etc/container-sync-realms.conf-sample +0 -0
  386. {swift-2.35.2 → swift-2.35.4}/etc/dispersion.conf-sample +0 -0
  387. {swift-2.35.2 → swift-2.35.4}/etc/drive-audit.conf-sample +0 -0
  388. {swift-2.35.2 → swift-2.35.4}/etc/internal-client.conf-sample +0 -0
  389. {swift-2.35.2 → swift-2.35.4}/etc/keymaster.conf-sample +0 -0
  390. {swift-2.35.2 → swift-2.35.4}/etc/memcache.conf-sample +0 -0
  391. {swift-2.35.2 → swift-2.35.4}/etc/mime.types-sample +0 -0
  392. {swift-2.35.2 → swift-2.35.4}/etc/object-expirer.conf-sample +0 -0
  393. {swift-2.35.2 → swift-2.35.4}/etc/object-server.conf-sample +0 -0
  394. {swift-2.35.2 → swift-2.35.4}/etc/proxy-server.conf-sample +0 -0
  395. {swift-2.35.2 → swift-2.35.4}/etc/rsyncd.conf-sample +0 -0
  396. {swift-2.35.2 → swift-2.35.4}/etc/swift-rsyslog.conf-sample +0 -0
  397. {swift-2.35.2 → swift-2.35.4}/etc/swift.conf-sample +0 -0
  398. {swift-2.35.2 → swift-2.35.4}/examples/apache2/account-server.template +0 -0
  399. {swift-2.35.2 → swift-2.35.4}/examples/apache2/container-server.template +0 -0
  400. {swift-2.35.2 → swift-2.35.4}/examples/apache2/object-server.template +0 -0
  401. {swift-2.35.2 → swift-2.35.4}/examples/apache2/proxy-server.template +0 -0
  402. {swift-2.35.2 → swift-2.35.4}/examples/wsgi/account-server.wsgi.template +0 -0
  403. {swift-2.35.2 → swift-2.35.4}/examples/wsgi/container-server.wsgi.template +0 -0
  404. {swift-2.35.2 → swift-2.35.4}/examples/wsgi/object-server.wsgi.template +0 -0
  405. {swift-2.35.2 → swift-2.35.4}/examples/wsgi/proxy-server.wsgi.template +0 -0
  406. {swift-2.35.2 → swift-2.35.4}/lower-constraints.txt +0 -0
  407. {swift-2.35.2 → swift-2.35.4}/py3-constraints.txt +0 -0
  408. {swift-2.35.2 → swift-2.35.4}/releasenotes/notes/2_10_0_release-666a76f4975657a5.yaml +0 -0
  409. {swift-2.35.2 → swift-2.35.4}/releasenotes/notes/2_11_0_release-ac1d256e455d347e.yaml +0 -0
  410. {swift-2.35.2 → swift-2.35.4}/releasenotes/notes/2_12_0_release-06af226abc7b91ef.yaml +0 -0
  411. {swift-2.35.2 → swift-2.35.4}/releasenotes/notes/2_13_0_release-875e1fb1ef59f015.yaml +0 -0
  412. {swift-2.35.2 → swift-2.35.4}/releasenotes/notes/2_14_0_release-7c3ef515ebded888.yaml +0 -0
  413. {swift-2.35.2 → swift-2.35.4}/releasenotes/notes/2_15_0_release-0a05a011fb85a9c9.yaml +0 -0
  414. {swift-2.35.2 → swift-2.35.4}/releasenotes/notes/2_15_1_release-be25e67bfc5e886a.yaml +0 -0
  415. {swift-2.35.2 → swift-2.35.4}/releasenotes/notes/2_15_2_release-6996eccabba558b4.yaml +0 -0
  416. {swift-2.35.2 → swift-2.35.4}/releasenotes/notes/2_16_0_release-d48cb9b2629df8ab.yaml +0 -0
  417. {swift-2.35.2 → swift-2.35.4}/releasenotes/notes/2_17_0_release-bd35f18c41c5ef18.yaml +0 -0
  418. {swift-2.35.2 → swift-2.35.4}/releasenotes/notes/2_17_1_release-dd6e6879cbb94f85.yaml +0 -0
  419. {swift-2.35.2 → swift-2.35.4}/releasenotes/notes/2_18_0_release-3acf63cfe2475c65.yaml +0 -0
  420. {swift-2.35.2 → swift-2.35.4}/releasenotes/notes/2_19_0_release-3e6ee3e6a1fcc6bb.yaml +0 -0
  421. {swift-2.35.2 → swift-2.35.4}/releasenotes/notes/2_19_1_release-5072dd72557f5708.yaml +0 -0
  422. {swift-2.35.2 → swift-2.35.4}/releasenotes/notes/2_20_0_release-7b090a5f4bd916e4.yaml +0 -0
  423. {swift-2.35.2 → swift-2.35.4}/releasenotes/notes/2_21_0_release-d8ae33ef18b7be3a.yaml +0 -0
  424. {swift-2.35.2 → swift-2.35.4}/releasenotes/notes/2_22_0_release-f60d29508b3c1283.yaml +0 -0
  425. {swift-2.35.2 → swift-2.35.4}/releasenotes/notes/2_23_0_release-2a2d11c1934f0b61.yaml +0 -0
  426. {swift-2.35.2 → swift-2.35.4}/releasenotes/notes/2_24_0_release-1ca244cc959922fc.yaml +0 -0
  427. {swift-2.35.2 → swift-2.35.4}/releasenotes/notes/2_25_0_release-09410c808881bf21.yaml +0 -0
  428. {swift-2.35.2 → swift-2.35.4}/releasenotes/notes/2_26_0_release-6548eadcba544f72.yaml +0 -0
  429. {swift-2.35.2 → swift-2.35.4}/releasenotes/notes/2_27_0_release-a9ae967d6d271342.yaml +0 -0
  430. {swift-2.35.2 → swift-2.35.4}/releasenotes/notes/2_28_0_release-f2515e07fb61cd01.yaml +0 -0
  431. {swift-2.35.2 → swift-2.35.4}/releasenotes/notes/2_29_0_release-af71f7efd73109b0.yaml +0 -0
  432. {swift-2.35.2 → swift-2.35.4}/releasenotes/notes/2_29_1_release-a2962252523d9396.yaml +0 -0
  433. {swift-2.35.2 → swift-2.35.4}/releasenotes/notes/2_30_0_release-642778c3010848db.yaml +0 -0
  434. {swift-2.35.2 → swift-2.35.4}/releasenotes/notes/2_31_0_release-77e6b20dfba3b32c.yaml +0 -0
  435. {swift-2.35.2 → swift-2.35.4}/releasenotes/notes/2_31_1_release-20ccd07e32b91c1f.yaml +0 -0
  436. {swift-2.35.2 → swift-2.35.4}/releasenotes/notes/2_32_0_release-39c8fb77a0a3e72d.yaml +0 -0
  437. {swift-2.35.2 → swift-2.35.4}/releasenotes/notes/3_33_0_release-d208917f5012cedd.yaml +0 -0
  438. {swift-2.35.2 → swift-2.35.4}/releasenotes/notes/release-2.34.0-2136ae35f56f8b5a.yaml +0 -0
  439. {swift-2.35.2 → swift-2.35.4}/releasenotes/notes/release-2.35.0-bb2736e6cbc4a520.yaml +0 -0
  440. {swift-2.35.2 → swift-2.35.4}/releasenotes/notes/release-2.35.1-58d9d52dfe46ee4d.yaml +0 -0
  441. {swift-2.35.2 → swift-2.35.4}/releasenotes/notes/release-2.35.2-45d782fba98d426f.yaml +0 -0
  442. {swift-2.35.2 → swift-2.35.4}/releasenotes/source/2023.1.rst +0 -0
  443. {swift-2.35.2 → swift-2.35.4}/releasenotes/source/2023.2.rst +0 -0
  444. {swift-2.35.2 → swift-2.35.4}/releasenotes/source/2024.1.rst +0 -0
  445. {swift-2.35.2 → swift-2.35.4}/releasenotes/source/2024.2.rst +0 -0
  446. {swift-2.35.2 → swift-2.35.4}/releasenotes/source/conf.py +0 -0
  447. {swift-2.35.2 → swift-2.35.4}/releasenotes/source/current.rst +0 -0
  448. {swift-2.35.2 → swift-2.35.4}/releasenotes/source/index.rst +0 -0
  449. {swift-2.35.2 → swift-2.35.4}/releasenotes/source/locale/en_GB/LC_MESSAGES/releasenotes.po +0 -0
  450. {swift-2.35.2 → swift-2.35.4}/releasenotes/source/locale/ja/LC_MESSAGES/releasenotes.po +0 -0
  451. {swift-2.35.2 → swift-2.35.4}/releasenotes/source/newton.rst +0 -0
  452. {swift-2.35.2 → swift-2.35.4}/releasenotes/source/ocata.rst +0 -0
  453. {swift-2.35.2 → swift-2.35.4}/releasenotes/source/pike.rst +0 -0
  454. {swift-2.35.2 → swift-2.35.4}/releasenotes/source/queens.rst +0 -0
  455. {swift-2.35.2 → swift-2.35.4}/releasenotes/source/rocky.rst +0 -0
  456. {swift-2.35.2 → swift-2.35.4}/releasenotes/source/stein.rst +0 -0
  457. {swift-2.35.2 → swift-2.35.4}/releasenotes/source/train.rst +0 -0
  458. {swift-2.35.2 → swift-2.35.4}/releasenotes/source/ussuri.rst +0 -0
  459. {swift-2.35.2 → swift-2.35.4}/releasenotes/source/victoria.rst +0 -0
  460. {swift-2.35.2 → swift-2.35.4}/releasenotes/source/wallaby.rst +0 -0
  461. {swift-2.35.2 → swift-2.35.4}/releasenotes/source/xena.rst +0 -0
  462. {swift-2.35.2 → swift-2.35.4}/releasenotes/source/yoga.rst +0 -0
  463. {swift-2.35.2 → swift-2.35.4}/releasenotes/source/zed.rst +0 -0
  464. {swift-2.35.2 → swift-2.35.4}/requirements.txt +0 -0
  465. {swift-2.35.2 → swift-2.35.4}/roles/additional-keystone-users/tasks/main.yaml +0 -0
  466. {swift-2.35.2 → swift-2.35.4}/roles/additional-tempauth-users/tasks/main.yaml +0 -0
  467. {swift-2.35.2 → swift-2.35.4}/roles/dsvm-additional-middlewares/tasks/main.yaml +0 -0
  468. {swift-2.35.2 → swift-2.35.4}/setup.cfg +0 -0
  469. {swift-2.35.2 → swift-2.35.4}/setup.py +0 -0
  470. {swift-2.35.2 → swift-2.35.4}/swift/__init__.py +0 -0
  471. {swift-2.35.2 → swift-2.35.4}/swift/account/__init__.py +0 -0
  472. {swift-2.35.2 → swift-2.35.4}/swift/account/auditor.py +0 -0
  473. {swift-2.35.2 → swift-2.35.4}/swift/account/backend.py +0 -0
  474. {swift-2.35.2 → swift-2.35.4}/swift/account/reaper.py +0 -0
  475. {swift-2.35.2 → swift-2.35.4}/swift/account/replicator.py +0 -0
  476. {swift-2.35.2 → swift-2.35.4}/swift/account/server.py +0 -0
  477. {swift-2.35.2 → swift-2.35.4}/swift/account/utils.py +0 -0
  478. {swift-2.35.2 → swift-2.35.4}/swift/cli/__init__.py +0 -0
  479. {swift-2.35.2 → swift-2.35.4}/swift/cli/account_audit.py +0 -0
  480. {swift-2.35.2 → swift-2.35.4}/swift/cli/config.py +0 -0
  481. {swift-2.35.2 → swift-2.35.4}/swift/cli/container_deleter.py +0 -0
  482. {swift-2.35.2 → swift-2.35.4}/swift/cli/dispersion_populate.py +0 -0
  483. {swift-2.35.2 → swift-2.35.4}/swift/cli/dispersion_report.py +0 -0
  484. {swift-2.35.2 → swift-2.35.4}/swift/cli/drive_audit.py +0 -0
  485. {swift-2.35.2 → swift-2.35.4}/swift/cli/form_signature.py +0 -0
  486. {swift-2.35.2 → swift-2.35.4}/swift/cli/get_nodes.py +0 -0
  487. {swift-2.35.2 → swift-2.35.4}/swift/cli/info.py +0 -0
  488. {swift-2.35.2 → swift-2.35.4}/swift/cli/manage_shard_ranges.py +0 -0
  489. {swift-2.35.2 → swift-2.35.4}/swift/cli/oldies.py +0 -0
  490. {swift-2.35.2 → swift-2.35.4}/swift/cli/orphans.py +0 -0
  491. {swift-2.35.2 → swift-2.35.4}/swift/cli/recon.py +0 -0
  492. {swift-2.35.2 → swift-2.35.4}/swift/cli/recon_cron.py +0 -0
  493. {swift-2.35.2 → swift-2.35.4}/swift/cli/reconciler_enqueue.py +0 -0
  494. {swift-2.35.2 → swift-2.35.4}/swift/cli/relinker.py +0 -0
  495. {swift-2.35.2 → swift-2.35.4}/swift/cli/reload.py +0 -0
  496. {swift-2.35.2 → swift-2.35.4}/swift/cli/ring_builder_analyzer.py +0 -0
  497. {swift-2.35.2 → swift-2.35.4}/swift/cli/ringbuilder.py +0 -0
  498. {swift-2.35.2 → swift-2.35.4}/swift/cli/ringcomposer.py +0 -0
  499. {swift-2.35.2 → swift-2.35.4}/swift/cli/shard-info.py +0 -0
  500. {swift-2.35.2 → swift-2.35.4}/swift/common/__init__.py +0 -0
  501. {swift-2.35.2 → swift-2.35.4}/swift/common/base_storage_server.py +0 -0
  502. {swift-2.35.2 → swift-2.35.4}/swift/common/bufferedhttp.py +0 -0
  503. {swift-2.35.2 → swift-2.35.4}/swift/common/constraints.py +0 -0
  504. {swift-2.35.2 → swift-2.35.4}/swift/common/container_sync_realms.py +0 -0
  505. {swift-2.35.2 → swift-2.35.4}/swift/common/daemon.py +0 -0
  506. {swift-2.35.2 → swift-2.35.4}/swift/common/db_auditor.py +0 -0
  507. {swift-2.35.2 → swift-2.35.4}/swift/common/db_replicator.py +0 -0
  508. {swift-2.35.2 → swift-2.35.4}/swift/common/digest.py +0 -0
  509. {swift-2.35.2 → swift-2.35.4}/swift/common/error_limiter.py +0 -0
  510. {swift-2.35.2 → swift-2.35.4}/swift/common/exceptions.py +0 -0
  511. {swift-2.35.2 → swift-2.35.4}/swift/common/header_key_dict.py +0 -0
  512. {swift-2.35.2 → swift-2.35.4}/swift/common/http.py +0 -0
  513. {swift-2.35.2 → swift-2.35.4}/swift/common/http_protocol.py +0 -0
  514. {swift-2.35.2 → swift-2.35.4}/swift/common/internal_client.py +0 -0
  515. {swift-2.35.2 → swift-2.35.4}/swift/common/linkat.py +0 -0
  516. {swift-2.35.2 → swift-2.35.4}/swift/common/manager.py +0 -0
  517. {swift-2.35.2 → swift-2.35.4}/swift/common/memcached.py +0 -0
  518. {swift-2.35.2 → swift-2.35.4}/swift/common/middleware/__init__.py +0 -0
  519. {swift-2.35.2 → swift-2.35.4}/swift/common/middleware/account_quotas.py +0 -0
  520. {swift-2.35.2 → swift-2.35.4}/swift/common/middleware/acl.py +0 -0
  521. {swift-2.35.2 → swift-2.35.4}/swift/common/middleware/backend_ratelimit.py +0 -0
  522. {swift-2.35.2 → swift-2.35.4}/swift/common/middleware/bulk.py +0 -0
  523. {swift-2.35.2 → swift-2.35.4}/swift/common/middleware/catch_errors.py +0 -0
  524. {swift-2.35.2 → swift-2.35.4}/swift/common/middleware/cname_lookup.py +0 -0
  525. {swift-2.35.2 → swift-2.35.4}/swift/common/middleware/container_quotas.py +0 -0
  526. {swift-2.35.2 → swift-2.35.4}/swift/common/middleware/container_sync.py +0 -0
  527. {swift-2.35.2 → swift-2.35.4}/swift/common/middleware/copy.py +0 -0
  528. {swift-2.35.2 → swift-2.35.4}/swift/common/middleware/crossdomain.py +0 -0
  529. {swift-2.35.2 → swift-2.35.4}/swift/common/middleware/crypto/__init__.py +0 -0
  530. {swift-2.35.2 → swift-2.35.4}/swift/common/middleware/crypto/crypto_utils.py +0 -0
  531. {swift-2.35.2 → swift-2.35.4}/swift/common/middleware/crypto/decrypter.py +0 -0
  532. {swift-2.35.2 → swift-2.35.4}/swift/common/middleware/crypto/encrypter.py +0 -0
  533. {swift-2.35.2 → swift-2.35.4}/swift/common/middleware/crypto/keymaster.py +0 -0
  534. {swift-2.35.2 → swift-2.35.4}/swift/common/middleware/crypto/kmip_keymaster.py +0 -0
  535. {swift-2.35.2 → swift-2.35.4}/swift/common/middleware/crypto/kms_keymaster.py +0 -0
  536. {swift-2.35.2 → swift-2.35.4}/swift/common/middleware/dlo.py +0 -0
  537. {swift-2.35.2 → swift-2.35.4}/swift/common/middleware/domain_remap.py +0 -0
  538. {swift-2.35.2 → swift-2.35.4}/swift/common/middleware/etag_quoter.py +0 -0
  539. {swift-2.35.2 → swift-2.35.4}/swift/common/middleware/formpost.py +0 -0
  540. {swift-2.35.2 → swift-2.35.4}/swift/common/middleware/healthcheck.py +0 -0
  541. {swift-2.35.2 → swift-2.35.4}/swift/common/middleware/keystoneauth.py +0 -0
  542. {swift-2.35.2 → swift-2.35.4}/swift/common/middleware/list_endpoints.py +0 -0
  543. {swift-2.35.2 → swift-2.35.4}/swift/common/middleware/listing_formats.py +0 -0
  544. {swift-2.35.2 → swift-2.35.4}/swift/common/middleware/memcache.py +0 -0
  545. {swift-2.35.2 → swift-2.35.4}/swift/common/middleware/name_check.py +0 -0
  546. {swift-2.35.2 → swift-2.35.4}/swift/common/middleware/proxy_logging.py +0 -0
  547. {swift-2.35.2 → swift-2.35.4}/swift/common/middleware/ratelimit.py +0 -0
  548. {swift-2.35.2 → swift-2.35.4}/swift/common/middleware/read_only.py +0 -0
  549. {swift-2.35.2 → swift-2.35.4}/swift/common/middleware/recon.py +0 -0
  550. {swift-2.35.2 → swift-2.35.4}/swift/common/middleware/s3api/__init__.py +0 -0
  551. {swift-2.35.2 → swift-2.35.4}/swift/common/middleware/s3api/acl_handlers.py +0 -0
  552. {swift-2.35.2 → swift-2.35.4}/swift/common/middleware/s3api/acl_utils.py +0 -0
  553. {swift-2.35.2 → swift-2.35.4}/swift/common/middleware/s3api/controllers/__init__.py +0 -0
  554. {swift-2.35.2 → swift-2.35.4}/swift/common/middleware/s3api/controllers/acl.py +0 -0
  555. {swift-2.35.2 → swift-2.35.4}/swift/common/middleware/s3api/controllers/base.py +0 -0
  556. {swift-2.35.2 → swift-2.35.4}/swift/common/middleware/s3api/controllers/bucket.py +0 -0
  557. {swift-2.35.2 → swift-2.35.4}/swift/common/middleware/s3api/controllers/location.py +0 -0
  558. {swift-2.35.2 → swift-2.35.4}/swift/common/middleware/s3api/controllers/logging.py +0 -0
  559. {swift-2.35.2 → swift-2.35.4}/swift/common/middleware/s3api/controllers/multi_delete.py +0 -0
  560. {swift-2.35.2 → swift-2.35.4}/swift/common/middleware/s3api/controllers/multi_upload.py +0 -0
  561. {swift-2.35.2 → swift-2.35.4}/swift/common/middleware/s3api/controllers/obj.py +0 -0
  562. {swift-2.35.2 → swift-2.35.4}/swift/common/middleware/s3api/controllers/object_lock.py +0 -0
  563. {swift-2.35.2 → swift-2.35.4}/swift/common/middleware/s3api/controllers/s3_acl.py +0 -0
  564. {swift-2.35.2 → swift-2.35.4}/swift/common/middleware/s3api/controllers/service.py +0 -0
  565. {swift-2.35.2 → swift-2.35.4}/swift/common/middleware/s3api/controllers/tagging.py +0 -0
  566. {swift-2.35.2 → swift-2.35.4}/swift/common/middleware/s3api/controllers/versioning.py +0 -0
  567. {swift-2.35.2 → swift-2.35.4}/swift/common/middleware/s3api/etree.py +0 -0
  568. {swift-2.35.2 → swift-2.35.4}/swift/common/middleware/s3api/exception.py +0 -0
  569. {swift-2.35.2 → swift-2.35.4}/swift/common/middleware/s3api/s3api.py +0 -0
  570. {swift-2.35.2 → swift-2.35.4}/swift/common/middleware/s3api/s3response.py +0 -0
  571. {swift-2.35.2 → swift-2.35.4}/swift/common/middleware/s3api/s3token.py +0 -0
  572. {swift-2.35.2 → swift-2.35.4}/swift/common/middleware/s3api/schema/access_control_policy.rng +0 -0
  573. {swift-2.35.2 → swift-2.35.4}/swift/common/middleware/s3api/schema/bucket_logging_status.rng +0 -0
  574. {swift-2.35.2 → swift-2.35.4}/swift/common/middleware/s3api/schema/common.rng +0 -0
  575. {swift-2.35.2 → swift-2.35.4}/swift/common/middleware/s3api/schema/complete_multipart_upload.rng +0 -0
  576. {swift-2.35.2 → swift-2.35.4}/swift/common/middleware/s3api/schema/complete_multipart_upload_result.rng +0 -0
  577. {swift-2.35.2 → swift-2.35.4}/swift/common/middleware/s3api/schema/copy_object_result.rng +0 -0
  578. {swift-2.35.2 → swift-2.35.4}/swift/common/middleware/s3api/schema/copy_part_result.rng +0 -0
  579. {swift-2.35.2 → swift-2.35.4}/swift/common/middleware/s3api/schema/create_bucket_configuration.rng +0 -0
  580. {swift-2.35.2 → swift-2.35.4}/swift/common/middleware/s3api/schema/delete.rng +0 -0
  581. {swift-2.35.2 → swift-2.35.4}/swift/common/middleware/s3api/schema/delete_result.rng +0 -0
  582. {swift-2.35.2 → swift-2.35.4}/swift/common/middleware/s3api/schema/error.rng +0 -0
  583. {swift-2.35.2 → swift-2.35.4}/swift/common/middleware/s3api/schema/initiate_multipart_upload_result.rng +0 -0
  584. {swift-2.35.2 → swift-2.35.4}/swift/common/middleware/s3api/schema/lifecycle_configuration.rng +0 -0
  585. {swift-2.35.2 → swift-2.35.4}/swift/common/middleware/s3api/schema/list_all_my_buckets_result.rng +0 -0
  586. {swift-2.35.2 → swift-2.35.4}/swift/common/middleware/s3api/schema/list_bucket_result.rng +0 -0
  587. {swift-2.35.2 → swift-2.35.4}/swift/common/middleware/s3api/schema/list_multipart_uploads_result.rng +0 -0
  588. {swift-2.35.2 → swift-2.35.4}/swift/common/middleware/s3api/schema/list_parts_result.rng +0 -0
  589. {swift-2.35.2 → swift-2.35.4}/swift/common/middleware/s3api/schema/list_versions_result.rng +0 -0
  590. {swift-2.35.2 → swift-2.35.4}/swift/common/middleware/s3api/schema/location_constraint.rng +0 -0
  591. {swift-2.35.2 → swift-2.35.4}/swift/common/middleware/s3api/schema/versioning_configuration.rng +0 -0
  592. {swift-2.35.2 → swift-2.35.4}/swift/common/middleware/s3api/subresource.py +0 -0
  593. {swift-2.35.2 → swift-2.35.4}/swift/common/middleware/s3api/utils.py +0 -0
  594. {swift-2.35.2 → swift-2.35.4}/swift/common/middleware/slo.py +0 -0
  595. {swift-2.35.2 → swift-2.35.4}/swift/common/middleware/staticweb.py +0 -0
  596. {swift-2.35.2 → swift-2.35.4}/swift/common/middleware/symlink.py +0 -0
  597. {swift-2.35.2 → swift-2.35.4}/swift/common/middleware/tempauth.py +0 -0
  598. {swift-2.35.2 → swift-2.35.4}/swift/common/middleware/tempurl.py +0 -0
  599. {swift-2.35.2 → swift-2.35.4}/swift/common/middleware/versioned_writes/__init__.py +0 -0
  600. {swift-2.35.2 → swift-2.35.4}/swift/common/middleware/versioned_writes/legacy.py +0 -0
  601. {swift-2.35.2 → swift-2.35.4}/swift/common/middleware/versioned_writes/object_versioning.py +0 -0
  602. {swift-2.35.2 → swift-2.35.4}/swift/common/middleware/x_profile/__init__.py +0 -0
  603. {swift-2.35.2 → swift-2.35.4}/swift/common/middleware/x_profile/exceptions.py +0 -0
  604. {swift-2.35.2 → swift-2.35.4}/swift/common/middleware/x_profile/html_viewer.py +0 -0
  605. {swift-2.35.2 → swift-2.35.4}/swift/common/middleware/x_profile/profile_model.py +0 -0
  606. {swift-2.35.2 → swift-2.35.4}/swift/common/middleware/xprofile.py +0 -0
  607. {swift-2.35.2 → swift-2.35.4}/swift/common/recon.py +0 -0
  608. {swift-2.35.2 → swift-2.35.4}/swift/common/registry.py +0 -0
  609. {swift-2.35.2 → swift-2.35.4}/swift/common/request_helpers.py +0 -0
  610. {swift-2.35.2 → swift-2.35.4}/swift/common/ring/__init__.py +0 -0
  611. {swift-2.35.2 → swift-2.35.4}/swift/common/ring/builder.py +0 -0
  612. {swift-2.35.2 → swift-2.35.4}/swift/common/ring/composite_builder.py +0 -0
  613. {swift-2.35.2 → swift-2.35.4}/swift/common/ring/ring.py +0 -0
  614. {swift-2.35.2 → swift-2.35.4}/swift/common/ring/utils.py +0 -0
  615. {swift-2.35.2 → swift-2.35.4}/swift/common/splice.py +0 -0
  616. {swift-2.35.2 → swift-2.35.4}/swift/common/statsd_client.py +0 -0
  617. {swift-2.35.2 → swift-2.35.4}/swift/common/storage_policy.py +0 -0
  618. {swift-2.35.2 → swift-2.35.4}/swift/common/utils/base.py +0 -0
  619. {swift-2.35.2 → swift-2.35.4}/swift/common/utils/config.py +0 -0
  620. {swift-2.35.2 → swift-2.35.4}/swift/common/utils/ipaddrs.py +0 -0
  621. {swift-2.35.2 → swift-2.35.4}/swift/common/utils/libc.py +0 -0
  622. {swift-2.35.2 → swift-2.35.4}/swift/common/utils/logs.py +0 -0
  623. {swift-2.35.2 → swift-2.35.4}/swift/common/utils/timestamp.py +0 -0
  624. {swift-2.35.2 → swift-2.35.4}/swift/common/wsgi.py +0 -0
  625. {swift-2.35.2 → swift-2.35.4}/swift/container/__init__.py +0 -0
  626. {swift-2.35.2 → swift-2.35.4}/swift/container/auditor.py +0 -0
  627. {swift-2.35.2 → swift-2.35.4}/swift/container/reconciler.py +0 -0
  628. {swift-2.35.2 → swift-2.35.4}/swift/container/replicator.py +0 -0
  629. {swift-2.35.2 → swift-2.35.4}/swift/container/server.py +0 -0
  630. {swift-2.35.2 → swift-2.35.4}/swift/container/sharder.py +0 -0
  631. {swift-2.35.2 → swift-2.35.4}/swift/container/sync.py +0 -0
  632. {swift-2.35.2 → swift-2.35.4}/swift/container/sync_store.py +0 -0
  633. {swift-2.35.2 → swift-2.35.4}/swift/container/updater.py +0 -0
  634. {swift-2.35.2 → swift-2.35.4}/swift/obj/__init__.py +0 -0
  635. {swift-2.35.2 → swift-2.35.4}/swift/obj/auditor.py +0 -0
  636. {swift-2.35.2 → swift-2.35.4}/swift/obj/expirer.py +0 -0
  637. {swift-2.35.2 → swift-2.35.4}/swift/obj/mem_diskfile.py +0 -0
  638. {swift-2.35.2 → swift-2.35.4}/swift/obj/mem_server.py +0 -0
  639. {swift-2.35.2 → swift-2.35.4}/swift/obj/server.py +0 -0
  640. {swift-2.35.2 → swift-2.35.4}/swift/obj/ssync_receiver.py +0 -0
  641. {swift-2.35.2 → swift-2.35.4}/swift/obj/ssync_sender.py +0 -0
  642. {swift-2.35.2 → swift-2.35.4}/swift/obj/watchers/__init__.py +0 -0
  643. {swift-2.35.2 → swift-2.35.4}/swift/obj/watchers/dark_data.py +0 -0
  644. {swift-2.35.2 → swift-2.35.4}/swift/proxy/__init__.py +0 -0
  645. {swift-2.35.2 → swift-2.35.4}/swift/proxy/controllers/__init__.py +0 -0
  646. {swift-2.35.2 → swift-2.35.4}/swift/proxy/controllers/account.py +0 -0
  647. {swift-2.35.2 → swift-2.35.4}/swift/proxy/controllers/base.py +0 -0
  648. {swift-2.35.2 → swift-2.35.4}/swift/proxy/controllers/container.py +0 -0
  649. {swift-2.35.2 → swift-2.35.4}/swift/proxy/controllers/info.py +0 -0
  650. {swift-2.35.2 → swift-2.35.4}/swift/proxy/controllers/obj.py +0 -0
  651. {swift-2.35.2 → swift-2.35.4}/swift/proxy/server.py +0 -0
  652. {swift-2.35.2 → swift-2.35.4}/swift.egg-info/dependency_links.txt +0 -0
  653. {swift-2.35.2 → swift-2.35.4}/swift.egg-info/entry_points.txt +0 -0
  654. {swift-2.35.2 → swift-2.35.4}/swift.egg-info/not-zip-safe +0 -0
  655. {swift-2.35.2 → swift-2.35.4}/swift.egg-info/requires.txt +0 -0
  656. {swift-2.35.2 → swift-2.35.4}/swift.egg-info/top_level.txt +0 -0
  657. {swift-2.35.2 → swift-2.35.4}/test/__init__.py +0 -0
  658. {swift-2.35.2 → swift-2.35.4}/test/cors/README.rst +0 -0
  659. {swift-2.35.2 → swift-2.35.4}/test/cors/harness.js +0 -0
  660. {swift-2.35.2 → swift-2.35.4}/test/cors/index.html +0 -0
  661. {swift-2.35.2 → swift-2.35.4}/test/cors/main.py +0 -0
  662. {swift-2.35.2 → swift-2.35.4}/test/cors/test-account.js +0 -0
  663. {swift-2.35.2 → swift-2.35.4}/test/cors/test-container.js +0 -0
  664. {swift-2.35.2 → swift-2.35.4}/test/cors/test-info.js +0 -0
  665. {swift-2.35.2 → swift-2.35.4}/test/cors/test-large-objects.js +0 -0
  666. {swift-2.35.2 → swift-2.35.4}/test/cors/test-object.js +0 -0
  667. {swift-2.35.2 → swift-2.35.4}/test/cors/test-s3-obj.js +0 -0
  668. {swift-2.35.2 → swift-2.35.4}/test/cors/test-symlink.js +0 -0
  669. {swift-2.35.2 → swift-2.35.4}/test/cors/vendor/aws-sdk-2.829.0.min.js +0 -0
  670. {swift-2.35.2 → swift-2.35.4}/test/debug_logger.py +0 -0
  671. {swift-2.35.2 → swift-2.35.4}/test/functional/__init__.py +0 -0
  672. {swift-2.35.2 → swift-2.35.4}/test/functional/mock_swift_key_manager.py +0 -0
  673. {swift-2.35.2 → swift-2.35.4}/test/functional/s3api/__init__.py +0 -0
  674. {swift-2.35.2 → swift-2.35.4}/test/functional/s3api/s3_test_client.py +0 -0
  675. {swift-2.35.2 → swift-2.35.4}/test/functional/s3api/test_acl.py +0 -0
  676. {swift-2.35.2 → swift-2.35.4}/test/functional/s3api/test_bucket.py +0 -0
  677. {swift-2.35.2 → swift-2.35.4}/test/functional/s3api/test_multi_delete.py +0 -0
  678. {swift-2.35.2 → swift-2.35.4}/test/functional/s3api/test_multi_upload.py +0 -0
  679. {swift-2.35.2 → swift-2.35.4}/test/functional/s3api/test_object.py +0 -0
  680. {swift-2.35.2 → swift-2.35.4}/test/functional/s3api/test_presigned.py +0 -0
  681. {swift-2.35.2 → swift-2.35.4}/test/functional/s3api/test_service.py +0 -0
  682. {swift-2.35.2 → swift-2.35.4}/test/functional/s3api/test_versioning.py +0 -0
  683. {swift-2.35.2 → swift-2.35.4}/test/functional/s3api/test_xxe_injection.py +0 -0
  684. {swift-2.35.2 → swift-2.35.4}/test/functional/s3api/utils.py +0 -0
  685. {swift-2.35.2 → swift-2.35.4}/test/functional/swift_test_client.py +0 -0
  686. {swift-2.35.2 → swift-2.35.4}/test/functional/test_access_control.py +0 -0
  687. {swift-2.35.2 → swift-2.35.4}/test/functional/test_account.py +0 -0
  688. {swift-2.35.2 → swift-2.35.4}/test/functional/test_container.py +0 -0
  689. {swift-2.35.2 → swift-2.35.4}/test/functional/test_dlo.py +0 -0
  690. {swift-2.35.2 → swift-2.35.4}/test/functional/test_domain_remap.py +0 -0
  691. {swift-2.35.2 → swift-2.35.4}/test/functional/test_object.py +0 -0
  692. {swift-2.35.2 → swift-2.35.4}/test/functional/test_object_versioning.py +0 -0
  693. {swift-2.35.2 → swift-2.35.4}/test/functional/test_protocol.py +0 -0
  694. {swift-2.35.2 → swift-2.35.4}/test/functional/test_slo.py +0 -0
  695. {swift-2.35.2 → swift-2.35.4}/test/functional/test_staticweb.py +0 -0
  696. {swift-2.35.2 → swift-2.35.4}/test/functional/test_symlink.py +0 -0
  697. {swift-2.35.2 → swift-2.35.4}/test/functional/test_tempurl.py +0 -0
  698. {swift-2.35.2 → swift-2.35.4}/test/functional/test_versioned_writes.py +0 -0
  699. {swift-2.35.2 → swift-2.35.4}/test/functional/tests.py +0 -0
  700. {swift-2.35.2 → swift-2.35.4}/test/probe/__init__.py +0 -0
  701. {swift-2.35.2 → swift-2.35.4}/test/probe/brain.py +0 -0
  702. {swift-2.35.2 → swift-2.35.4}/test/probe/common.py +0 -0
  703. {swift-2.35.2 → swift-2.35.4}/test/probe/test_account_failures.py +0 -0
  704. {swift-2.35.2 → swift-2.35.4}/test/probe/test_account_get_fake_responses_match.py +0 -0
  705. {swift-2.35.2 → swift-2.35.4}/test/probe/test_account_reaper.py +0 -0
  706. {swift-2.35.2 → swift-2.35.4}/test/probe/test_container_failures.py +0 -0
  707. {swift-2.35.2 → swift-2.35.4}/test/probe/test_container_merge_policy_index.py +0 -0
  708. {swift-2.35.2 → swift-2.35.4}/test/probe/test_container_sync.py +0 -0
  709. {swift-2.35.2 → swift-2.35.4}/test/probe/test_dark_data.py +0 -0
  710. {swift-2.35.2 → swift-2.35.4}/test/probe/test_db_replicator.py +0 -0
  711. {swift-2.35.2 → swift-2.35.4}/test/probe/test_empty_device_handoff.py +0 -0
  712. {swift-2.35.2 → swift-2.35.4}/test/probe/test_mpu.py +0 -0
  713. {swift-2.35.2 → swift-2.35.4}/test/probe/test_object_async_update.py +0 -0
  714. {swift-2.35.2 → swift-2.35.4}/test/probe/test_object_conditional_requests.py +0 -0
  715. {swift-2.35.2 → swift-2.35.4}/test/probe/test_object_expirer.py +0 -0
  716. {swift-2.35.2 → swift-2.35.4}/test/probe/test_object_failures.py +0 -0
  717. {swift-2.35.2 → swift-2.35.4}/test/probe/test_object_handoff.py +0 -0
  718. {swift-2.35.2 → swift-2.35.4}/test/probe/test_object_metadata_replication.py +0 -0
  719. {swift-2.35.2 → swift-2.35.4}/test/probe/test_object_partpower_increase.py +0 -0
  720. {swift-2.35.2 → swift-2.35.4}/test/probe/test_object_versioning.py +0 -0
  721. {swift-2.35.2 → swift-2.35.4}/test/probe/test_orphan_container.py +0 -0
  722. {swift-2.35.2 → swift-2.35.4}/test/probe/test_reconstructor_rebuild.py +0 -0
  723. {swift-2.35.2 → swift-2.35.4}/test/probe/test_reconstructor_revert.py +0 -0
  724. {swift-2.35.2 → swift-2.35.4}/test/probe/test_replication_servers_working.py +0 -0
  725. {swift-2.35.2 → swift-2.35.4}/test/probe/test_reserved_name.py +0 -0
  726. {swift-2.35.2 → swift-2.35.4}/test/probe/test_sharder.py +0 -0
  727. {swift-2.35.2 → swift-2.35.4}/test/probe/test_signals.py +0 -0
  728. {swift-2.35.2 → swift-2.35.4}/test/s3api/__init__.py +0 -0
  729. {swift-2.35.2 → swift-2.35.4}/test/s3api/test_input_errors.py +0 -0
  730. {swift-2.35.2 → swift-2.35.4}/test/s3api/test_mpu.py +0 -0
  731. {swift-2.35.2 → swift-2.35.4}/test/s3api/test_object_checksums.py +0 -0
  732. {swift-2.35.2 → swift-2.35.4}/test/s3api/test_object_lock.py +0 -0
  733. {swift-2.35.2 → swift-2.35.4}/test/s3api/test_request_target_style.py +0 -0
  734. {swift-2.35.2 → swift-2.35.4}/test/s3api/test_service.py +0 -0
  735. {swift-2.35.2 → swift-2.35.4}/test/s3api/test_versioning.py +0 -0
  736. {swift-2.35.2 → swift-2.35.4}/test/sample.conf +0 -0
  737. {swift-2.35.2 → swift-2.35.4}/test/unit/__init__.py +0 -0
  738. {swift-2.35.2 → swift-2.35.4}/test/unit/account/__init__.py +0 -0
  739. {swift-2.35.2 → swift-2.35.4}/test/unit/account/test_auditor.py +0 -0
  740. {swift-2.35.2 → swift-2.35.4}/test/unit/account/test_backend.py +0 -0
  741. {swift-2.35.2 → swift-2.35.4}/test/unit/account/test_reaper.py +0 -0
  742. {swift-2.35.2 → swift-2.35.4}/test/unit/account/test_replicator.py +0 -0
  743. {swift-2.35.2 → swift-2.35.4}/test/unit/account/test_server.py +0 -0
  744. {swift-2.35.2 → swift-2.35.4}/test/unit/account/test_utils.py +0 -0
  745. {swift-2.35.2 → swift-2.35.4}/test/unit/cli/__init__.py +0 -0
  746. {swift-2.35.2 → swift-2.35.4}/test/unit/cli/test_container_deleter.py +0 -0
  747. {swift-2.35.2 → swift-2.35.4}/test/unit/cli/test_default_output.stub +0 -0
  748. {swift-2.35.2 → swift-2.35.4}/test/unit/cli/test_default_output_id_assigned.stub +0 -0
  749. {swift-2.35.2 → swift-2.35.4}/test/unit/cli/test_default_sorted_output.stub +0 -0
  750. {swift-2.35.2 → swift-2.35.4}/test/unit/cli/test_dispersion_report.py +0 -0
  751. {swift-2.35.2 → swift-2.35.4}/test/unit/cli/test_form_signature.py +0 -0
  752. {swift-2.35.2 → swift-2.35.4}/test/unit/cli/test_info.py +0 -0
  753. {swift-2.35.2 → swift-2.35.4}/test/unit/cli/test_ipv6_output.stub +0 -0
  754. {swift-2.35.2 → swift-2.35.4}/test/unit/cli/test_manage_shard_ranges.py +0 -0
  755. {swift-2.35.2 → swift-2.35.4}/test/unit/cli/test_recon.py +0 -0
  756. {swift-2.35.2 → swift-2.35.4}/test/unit/cli/test_recon_cron.py +0 -0
  757. {swift-2.35.2 → swift-2.35.4}/test/unit/cli/test_reload.py +0 -0
  758. {swift-2.35.2 → swift-2.35.4}/test/unit/cli/test_ring_builder_analyzer.py +0 -0
  759. {swift-2.35.2 → swift-2.35.4}/test/unit/cli/test_ringbuilder.py +0 -0
  760. {swift-2.35.2 → swift-2.35.4}/test/unit/cli/test_ringcomposer.py +0 -0
  761. {swift-2.35.2 → swift-2.35.4}/test/unit/common/__init__.py +0 -0
  762. {swift-2.35.2 → swift-2.35.4}/test/unit/common/corrupted_example.db +0 -0
  763. {swift-2.35.2 → swift-2.35.4}/test/unit/common/malformed_example.db +0 -0
  764. {swift-2.35.2 → swift-2.35.4}/test/unit/common/malformed_schema_example.db +0 -0
  765. {swift-2.35.2 → swift-2.35.4}/test/unit/common/middleware/__init__.py +0 -0
  766. {swift-2.35.2 → swift-2.35.4}/test/unit/common/middleware/crypto/__init__.py +0 -0
  767. {swift-2.35.2 → swift-2.35.4}/test/unit/common/middleware/crypto/crypto_helpers.py +0 -0
  768. {swift-2.35.2 → swift-2.35.4}/test/unit/common/middleware/crypto/test_crypto.py +0 -0
  769. {swift-2.35.2 → swift-2.35.4}/test/unit/common/middleware/crypto/test_crypto_utils.py +0 -0
  770. {swift-2.35.2 → swift-2.35.4}/test/unit/common/middleware/crypto/test_decrypter.py +0 -0
  771. {swift-2.35.2 → swift-2.35.4}/test/unit/common/middleware/crypto/test_encrypter.py +0 -0
  772. {swift-2.35.2 → swift-2.35.4}/test/unit/common/middleware/crypto/test_encryption.py +0 -0
  773. {swift-2.35.2 → swift-2.35.4}/test/unit/common/middleware/crypto/test_keymaster.py +0 -0
  774. {swift-2.35.2 → swift-2.35.4}/test/unit/common/middleware/crypto/test_kmip_keymaster.py +0 -0
  775. {swift-2.35.2 → swift-2.35.4}/test/unit/common/middleware/crypto/test_kms_keymaster.py +0 -0
  776. {swift-2.35.2 → swift-2.35.4}/test/unit/common/middleware/helpers.py +0 -0
  777. {swift-2.35.2 → swift-2.35.4}/test/unit/common/middleware/s3api/__init__.py +0 -0
  778. {swift-2.35.2 → swift-2.35.4}/test/unit/common/middleware/s3api/exceptions.py +0 -0
  779. {swift-2.35.2 → swift-2.35.4}/test/unit/common/middleware/s3api/helpers.py +0 -0
  780. {swift-2.35.2 → swift-2.35.4}/test/unit/common/middleware/s3api/test_acl.py +0 -0
  781. {swift-2.35.2 → swift-2.35.4}/test/unit/common/middleware/s3api/test_acl_handlers.py +0 -0
  782. {swift-2.35.2 → swift-2.35.4}/test/unit/common/middleware/s3api/test_acl_utils.py +0 -0
  783. {swift-2.35.2 → swift-2.35.4}/test/unit/common/middleware/s3api/test_bucket.py +0 -0
  784. {swift-2.35.2 → swift-2.35.4}/test/unit/common/middleware/s3api/test_cfg.py +0 -0
  785. {swift-2.35.2 → swift-2.35.4}/test/unit/common/middleware/s3api/test_etree.py +0 -0
  786. {swift-2.35.2 → swift-2.35.4}/test/unit/common/middleware/s3api/test_location.py +0 -0
  787. {swift-2.35.2 → swift-2.35.4}/test/unit/common/middleware/s3api/test_logging.py +0 -0
  788. {swift-2.35.2 → swift-2.35.4}/test/unit/common/middleware/s3api/test_multi_delete.py +0 -0
  789. {swift-2.35.2 → swift-2.35.4}/test/unit/common/middleware/s3api/test_multi_get.py +0 -0
  790. {swift-2.35.2 → swift-2.35.4}/test/unit/common/middleware/s3api/test_multi_upload.py +0 -0
  791. {swift-2.35.2 → swift-2.35.4}/test/unit/common/middleware/s3api/test_object_lock.py +0 -0
  792. {swift-2.35.2 → swift-2.35.4}/test/unit/common/middleware/s3api/test_s3_acl.py +0 -0
  793. {swift-2.35.2 → swift-2.35.4}/test/unit/common/middleware/s3api/test_s3response.py +0 -0
  794. {swift-2.35.2 → swift-2.35.4}/test/unit/common/middleware/s3api/test_s3token.py +0 -0
  795. {swift-2.35.2 → swift-2.35.4}/test/unit/common/middleware/s3api/test_service.py +0 -0
  796. {swift-2.35.2 → swift-2.35.4}/test/unit/common/middleware/s3api/test_subresource.py +0 -0
  797. {swift-2.35.2 → swift-2.35.4}/test/unit/common/middleware/s3api/test_utils.py +0 -0
  798. {swift-2.35.2 → swift-2.35.4}/test/unit/common/middleware/s3api/test_versioning.py +0 -0
  799. {swift-2.35.2 → swift-2.35.4}/test/unit/common/middleware/test_account_quotas.py +0 -0
  800. {swift-2.35.2 → swift-2.35.4}/test/unit/common/middleware/test_acl.py +0 -0
  801. {swift-2.35.2 → swift-2.35.4}/test/unit/common/middleware/test_backend_ratelimit.py +0 -0
  802. {swift-2.35.2 → swift-2.35.4}/test/unit/common/middleware/test_bulk.py +0 -0
  803. {swift-2.35.2 → swift-2.35.4}/test/unit/common/middleware/test_catch_errors.py +0 -0
  804. {swift-2.35.2 → swift-2.35.4}/test/unit/common/middleware/test_cname_lookup.py +0 -0
  805. {swift-2.35.2 → swift-2.35.4}/test/unit/common/middleware/test_container_sync.py +0 -0
  806. {swift-2.35.2 → swift-2.35.4}/test/unit/common/middleware/test_copy.py +0 -0
  807. {swift-2.35.2 → swift-2.35.4}/test/unit/common/middleware/test_crossdomain.py +0 -0
  808. {swift-2.35.2 → swift-2.35.4}/test/unit/common/middleware/test_dlo.py +0 -0
  809. {swift-2.35.2 → swift-2.35.4}/test/unit/common/middleware/test_domain_remap.py +0 -0
  810. {swift-2.35.2 → swift-2.35.4}/test/unit/common/middleware/test_etag_quoter.py +0 -0
  811. {swift-2.35.2 → swift-2.35.4}/test/unit/common/middleware/test_formpost.py +0 -0
  812. {swift-2.35.2 → swift-2.35.4}/test/unit/common/middleware/test_healthcheck.py +0 -0
  813. {swift-2.35.2 → swift-2.35.4}/test/unit/common/middleware/test_helpers.py +0 -0
  814. {swift-2.35.2 → swift-2.35.4}/test/unit/common/middleware/test_keystoneauth.py +0 -0
  815. {swift-2.35.2 → swift-2.35.4}/test/unit/common/middleware/test_list_endpoints.py +0 -0
  816. {swift-2.35.2 → swift-2.35.4}/test/unit/common/middleware/test_listing_formats.py +0 -0
  817. {swift-2.35.2 → swift-2.35.4}/test/unit/common/middleware/test_memcache.py +0 -0
  818. {swift-2.35.2 → swift-2.35.4}/test/unit/common/middleware/test_name_check.py +0 -0
  819. {swift-2.35.2 → swift-2.35.4}/test/unit/common/middleware/test_object_versioning.py +0 -0
  820. {swift-2.35.2 → swift-2.35.4}/test/unit/common/middleware/test_proxy_logging.py +0 -0
  821. {swift-2.35.2 → swift-2.35.4}/test/unit/common/middleware/test_quotas.py +0 -0
  822. {swift-2.35.2 → swift-2.35.4}/test/unit/common/middleware/test_ratelimit.py +0 -0
  823. {swift-2.35.2 → swift-2.35.4}/test/unit/common/middleware/test_read_only.py +0 -0
  824. {swift-2.35.2 → swift-2.35.4}/test/unit/common/middleware/test_recon.py +0 -0
  825. {swift-2.35.2 → swift-2.35.4}/test/unit/common/middleware/test_slo.py +0 -0
  826. {swift-2.35.2 → swift-2.35.4}/test/unit/common/middleware/test_staticweb.py +0 -0
  827. {swift-2.35.2 → swift-2.35.4}/test/unit/common/middleware/test_subrequest_logging.py +0 -0
  828. {swift-2.35.2 → swift-2.35.4}/test/unit/common/middleware/test_symlink.py +0 -0
  829. {swift-2.35.2 → swift-2.35.4}/test/unit/common/middleware/test_tempauth.py +0 -0
  830. {swift-2.35.2 → swift-2.35.4}/test/unit/common/middleware/test_tempurl.py +0 -0
  831. {swift-2.35.2 → swift-2.35.4}/test/unit/common/middleware/test_versioned_writes.py +0 -0
  832. {swift-2.35.2 → swift-2.35.4}/test/unit/common/middleware/test_xprofile.py +0 -0
  833. {swift-2.35.2 → swift-2.35.4}/test/unit/common/missing_container_info.db +0 -0
  834. {swift-2.35.2 → swift-2.35.4}/test/unit/common/ring/__init__.py +0 -0
  835. {swift-2.35.2 → swift-2.35.4}/test/unit/common/ring/test_builder.py +0 -0
  836. {swift-2.35.2 → swift-2.35.4}/test/unit/common/ring/test_composite_builder.py +0 -0
  837. {swift-2.35.2 → swift-2.35.4}/test/unit/common/ring/test_ring.py +0 -0
  838. {swift-2.35.2 → swift-2.35.4}/test/unit/common/ring/test_utils.py +0 -0
  839. {swift-2.35.2 → swift-2.35.4}/test/unit/common/test_base_storage_server.py +0 -0
  840. {swift-2.35.2 → swift-2.35.4}/test/unit/common/test_bufferedhttp.py +0 -0
  841. {swift-2.35.2 → swift-2.35.4}/test/unit/common/test_constraints.py +0 -0
  842. {swift-2.35.2 → swift-2.35.4}/test/unit/common/test_container_sync_realms.py +0 -0
  843. {swift-2.35.2 → swift-2.35.4}/test/unit/common/test_daemon.py +0 -0
  844. {swift-2.35.2 → swift-2.35.4}/test/unit/common/test_db_auditor.py +0 -0
  845. {swift-2.35.2 → swift-2.35.4}/test/unit/common/test_db_replicator.py +0 -0
  846. {swift-2.35.2 → swift-2.35.4}/test/unit/common/test_digest.py +0 -0
  847. {swift-2.35.2 → swift-2.35.4}/test/unit/common/test_direct_client.py +0 -0
  848. {swift-2.35.2 → swift-2.35.4}/test/unit/common/test_error_limiter.py +0 -0
  849. {swift-2.35.2 → swift-2.35.4}/test/unit/common/test_exceptions.py +0 -0
  850. {swift-2.35.2 → swift-2.35.4}/test/unit/common/test_header_key_dict.py +0 -0
  851. {swift-2.35.2 → swift-2.35.4}/test/unit/common/test_http_protocol.py +0 -0
  852. {swift-2.35.2 → swift-2.35.4}/test/unit/common/test_internal_client.py +0 -0
  853. {swift-2.35.2 → swift-2.35.4}/test/unit/common/test_linkat.py +0 -0
  854. {swift-2.35.2 → swift-2.35.4}/test/unit/common/test_manager.py +0 -0
  855. {swift-2.35.2 → swift-2.35.4}/test/unit/common/test_memcached.py +0 -0
  856. {swift-2.35.2 → swift-2.35.4}/test/unit/common/test_recon.py +0 -0
  857. {swift-2.35.2 → swift-2.35.4}/test/unit/common/test_registry.py +0 -0
  858. {swift-2.35.2 → swift-2.35.4}/test/unit/common/test_request_helpers.py +0 -0
  859. {swift-2.35.2 → swift-2.35.4}/test/unit/common/test_splice.py +0 -0
  860. {swift-2.35.2 → swift-2.35.4}/test/unit/common/test_statsd_client.py +0 -0
  861. {swift-2.35.2 → swift-2.35.4}/test/unit/common/test_storage_policy.py +0 -0
  862. {swift-2.35.2 → swift-2.35.4}/test/unit/common/test_utils.py +0 -0
  863. {swift-2.35.2 → swift-2.35.4}/test/unit/common/test_wsgi.py +0 -0
  864. {swift-2.35.2 → swift-2.35.4}/test/unit/common/utils/__init__.py +0 -0
  865. {swift-2.35.2 → swift-2.35.4}/test/unit/common/utils/test_config.py +0 -0
  866. {swift-2.35.2 → swift-2.35.4}/test/unit/common/utils/test_ipaddrs.py +0 -0
  867. {swift-2.35.2 → swift-2.35.4}/test/unit/common/utils/test_libc.py +0 -0
  868. {swift-2.35.2 → swift-2.35.4}/test/unit/common/utils/test_logs.py +0 -0
  869. {swift-2.35.2 → swift-2.35.4}/test/unit/common/utils/test_timestamp.py +0 -0
  870. {swift-2.35.2 → swift-2.35.4}/test/unit/container/__init__.py +0 -0
  871. {swift-2.35.2 → swift-2.35.4}/test/unit/container/test_auditor.py +0 -0
  872. {swift-2.35.2 → swift-2.35.4}/test/unit/container/test_backend.py +0 -0
  873. {swift-2.35.2 → swift-2.35.4}/test/unit/container/test_reconciler.py +0 -0
  874. {swift-2.35.2 → swift-2.35.4}/test/unit/container/test_replicator.py +0 -0
  875. {swift-2.35.2 → swift-2.35.4}/test/unit/container/test_server.py +0 -0
  876. {swift-2.35.2 → swift-2.35.4}/test/unit/container/test_sync.py +0 -0
  877. {swift-2.35.2 → swift-2.35.4}/test/unit/container/test_sync_store.py +0 -0
  878. {swift-2.35.2 → swift-2.35.4}/test/unit/container/test_updater.py +0 -0
  879. {swift-2.35.2 → swift-2.35.4}/test/unit/helpers.py +0 -0
  880. {swift-2.35.2 → swift-2.35.4}/test/unit/obj/__init__.py +0 -0
  881. {swift-2.35.2 → swift-2.35.4}/test/unit/obj/common.py +0 -0
  882. {swift-2.35.2 → swift-2.35.4}/test/unit/obj/test_auditor.py +0 -0
  883. {swift-2.35.2 → swift-2.35.4}/test/unit/obj/test_expirer.py +0 -0
  884. {swift-2.35.2 → swift-2.35.4}/test/unit/obj/test_reconstructor.py +0 -0
  885. {swift-2.35.2 → swift-2.35.4}/test/unit/obj/test_replicator.py +0 -0
  886. {swift-2.35.2 → swift-2.35.4}/test/unit/obj/test_ssync.py +0 -0
  887. {swift-2.35.2 → swift-2.35.4}/test/unit/obj/test_ssync_receiver.py +0 -0
  888. {swift-2.35.2 → swift-2.35.4}/test/unit/obj/test_ssync_sender.py +0 -0
  889. {swift-2.35.2 → swift-2.35.4}/test/unit/proxy/__init__.py +0 -0
  890. {swift-2.35.2 → swift-2.35.4}/test/unit/proxy/controllers/__init__.py +0 -0
  891. {swift-2.35.2 → swift-2.35.4}/test/unit/proxy/controllers/test_account.py +0 -0
  892. {swift-2.35.2 → swift-2.35.4}/test/unit/proxy/controllers/test_base.py +0 -0
  893. {swift-2.35.2 → swift-2.35.4}/test/unit/proxy/controllers/test_container.py +0 -0
  894. {swift-2.35.2 → swift-2.35.4}/test/unit/proxy/controllers/test_info.py +0 -0
  895. {swift-2.35.2 → swift-2.35.4}/test/unit/proxy/controllers/test_obj.py +0 -0
  896. {swift-2.35.2 → swift-2.35.4}/test/unit/proxy/test_mem_server.py +0 -0
  897. {swift-2.35.2 → swift-2.35.4}/test/unit/proxy/test_server.py +0 -0
  898. {swift-2.35.2 → swift-2.35.4}/test/unit/proxy/test_sysmeta.py +0 -0
  899. {swift-2.35.2 → swift-2.35.4}/test-requirements.txt +0 -0
  900. {swift-2.35.2 → swift-2.35.4}/tools/playbooks/ceph-s3tests/ceph-s3.conf +0 -0
  901. {swift-2.35.2 → swift-2.35.4}/tools/playbooks/ceph-s3tests/post.yaml +0 -0
  902. {swift-2.35.2 → swift-2.35.4}/tools/playbooks/ceph-s3tests/run.yaml +0 -0
  903. {swift-2.35.2 → swift-2.35.4}/tools/playbooks/common/cover-post.yaml +0 -0
  904. {swift-2.35.2 → swift-2.35.4}/tools/playbooks/common/install_dependencies.yaml +0 -0
  905. {swift-2.35.2 → swift-2.35.4}/tools/playbooks/common/restart_swift.yaml +0 -0
  906. {swift-2.35.2 → swift-2.35.4}/tools/playbooks/cors/install_selenium.yaml +0 -0
  907. {swift-2.35.2 → swift-2.35.4}/tools/playbooks/cors/post.yaml +0 -0
  908. {swift-2.35.2 → swift-2.35.4}/tools/playbooks/cors/run.yaml +0 -0
  909. {swift-2.35.2 → swift-2.35.4}/tools/playbooks/dsvm/post.yaml +0 -0
  910. {swift-2.35.2 → swift-2.35.4}/tools/playbooks/dsvm/pre.yaml +0 -0
  911. {swift-2.35.2 → swift-2.35.4}/tools/playbooks/dsvm/run.yaml +0 -0
  912. {swift-2.35.2 → swift-2.35.4}/tools/playbooks/multinode_setup/common_config.yaml +0 -0
  913. {swift-2.35.2 → swift-2.35.4}/tools/playbooks/multinode_setup/configure_loopback.yaml +0 -0
  914. {swift-2.35.2 → swift-2.35.4}/tools/playbooks/multinode_setup/make_rings.yaml +0 -0
  915. {swift-2.35.2 → swift-2.35.4}/tools/playbooks/multinode_setup/pre.yaml +0 -0
  916. {swift-2.35.2 → swift-2.35.4}/tools/playbooks/multinode_setup/templates/make_multinode_rings.j2 +0 -0
  917. {swift-2.35.2 → swift-2.35.4}/tools/playbooks/multinode_setup/templates/rc.local.j2 +0 -0
  918. {swift-2.35.2 → swift-2.35.4}/tools/playbooks/multinode_setup/templates/test.conf.j2 +0 -0
  919. {swift-2.35.2 → swift-2.35.4}/tools/playbooks/probetests/post.yaml +0 -0
  920. {swift-2.35.2 → swift-2.35.4}/tools/playbooks/probetests/run.yaml +0 -0
  921. {swift-2.35.2 → swift-2.35.4}/tools/playbooks/s3api-tests/run.yaml +0 -0
  922. {swift-2.35.2 → swift-2.35.4}/tools/playbooks/saio_single_node_setup/add_s3api.yaml +0 -0
  923. {swift-2.35.2 → swift-2.35.4}/tools/playbooks/saio_single_node_setup/make_rings.yaml +0 -0
  924. {swift-2.35.2 → swift-2.35.4}/tools/playbooks/saio_single_node_setup/setup_saio.yaml +0 -0
  925. {swift-2.35.2 → swift-2.35.4}/tools/playbooks/saio_single_node_setup/templates/rc.local.j2 +0 -0
  926. {swift-2.35.2 → swift-2.35.4}/tools/test-setup.sh +0 -0
  927. {swift-2.35.2 → swift-2.35.4}/tox.ini +0 -0
@@ -23,7 +23,8 @@ Chmouel Boudjnah <chmouel@enovance.com> <chmouel@chmouel.com>
23
23
  Gaurav B. Gangalwar <gaurav@gluster.com> gaurav@gluster.com <>
24
24
  Joe Arnold <joe@swiftstack.com> <joe@cloudscaling.com>
25
25
  Kapil Thangavelu <kapil.foss@gmail.com> kapil.foss@gmail.com <>
26
- Samuel Merritt <sam@swiftstack.com> <spam@andcheese.org>
26
+ Samuel Merritt <smerritt@nvidia.com> <spam@andcheese.org>
27
+ Samuel Merritt <smerritt@nvidia.com> <sam@swiftstack.com>
27
28
  Morita Kazutaka <morita.kazutaka@gmail.com>
28
29
  Zhongyue Luo <zhongyue.nah@intel.com> <lzyeval@gmail.com>
29
30
  Russ Nelson <russ@crynwr.com> <nelson@nelson-laptop>
@@ -52,8 +53,9 @@ Tom Fifield <tom@openstack.org> Tom Fifield <fifieldt@unimelb.edu.au>
52
53
  Sascha Peilicke <saschpe@gmx.de> Sascha Peilicke <saschpe@suse.de>
53
54
  Zhenguo Niu <zhenguo@unitedstack.com> <Niu.ZGlinux@gmail.com>
54
55
  Peter Portante <peter.portante@redhat.com> <peter.a.portante@gmail.com>
55
- Christian Schwede <cschwede@redhat.com> <info@cschwede.de>
56
- Christian Schwede <cschwede@redhat.com> <christian.schwede@enovance.com>
56
+ Christian Schwede <cschwede@mailbox.org> <info@cschwede.de>
57
+ Christian Schwede <cschwede@mailbox.org> <cschwede@redhat.com>
58
+ Christian Schwede <cschwede@mailbox.org> <christian.schwede@enovance.com>
57
59
  Constantine Peresypkin <constantine.peresypk@rackspace.com> <constantine@litestack.com>
58
60
  Madhuri Kumari <madhuri.rai07@gmail.com> madhuri <madhuri@madhuri-VirtualBox.(none)>
59
61
  Morgan Fainberg <morgan.fainberg@gmail.com> <m@metacloud.com>
@@ -146,3 +148,4 @@ Chris Smart <distroguy@gmail.com> <chris.smart@humanservices.gov.au>
146
148
  Ashwin Nair <nairashwin952013@gmail.com> <ashnair@nvidia.com>
147
149
  Chinemerem Chigbo <chinemeremchigbo@Outlook.com> Chinemerem
148
150
  Chinemerem Chigbo <chinemeremchigbo@Outlook.com> <cchigbo@nvidia.com>
151
+ Tim Burke <tim.burke@gmail.com> <tburke@nvidia.com>
@@ -349,6 +349,11 @@
349
349
  - tools/playbooks/cors/install_selenium.yaml
350
350
  run: tools/playbooks/cors/run.yaml
351
351
  post-run: tools/playbooks/cors/post.yaml
352
+ # TODO: OpenSSL 3.5.7 seems to have broken ansible's get_url, used to
353
+ # fetch selenium's firefox driver. For more info, see
354
+ # https://github.com/openssl/openssl/issues/31807
355
+ # Make this voting again once it starts passing again.
356
+ voting: false
352
357
 
353
358
  - nodeset:
354
359
  name: swift-five-nodes-centos-9
@@ -463,7 +468,7 @@
463
468
  name: swift-multinode-rolling-upgrade-dalmatian
464
469
  parent: swift-multinode-rolling-upgrade
465
470
  vars:
466
- previous_swift_version: origin/stable/2024.2
471
+ previous_swift_version: 2024.2-eol
467
472
  tox_envlist: func-py3
468
473
 
469
474
  - job:
@@ -575,6 +580,10 @@
575
580
  description: This is integrated object-storage job testing on Ubuntu jammy(22.04)
576
581
  parent: tempest-integrated-object-storage
577
582
  nodeset: openstack-single-node-jammy
583
+ vars:
584
+ devstack_localrc:
585
+ TEMPEST_VENV_UPPER_CONSTRAINTS: '/opt/stack/requirements/upper-constraints.txt'
586
+ TEMPEST_BRANCH: '46.3.0'
578
587
 
579
588
  - project-template:
580
589
  name: swift-jobs-arm64
@@ -688,10 +697,9 @@
688
697
  irrelevant-files: *tempest-irrelevant-files
689
698
  - openstacksdk-functional-devstack:
690
699
  irrelevant-files: *tempest-irrelevant-files
691
- - grenade:
692
- irrelevant-files: *tempest-irrelevant-files
693
- - grenade-skip-level:
700
+ - grenade-skip-level-always:
694
701
  irrelevant-files: *tempest-irrelevant-files
702
+ voting: false
695
703
  gate:
696
704
  jobs:
697
705
  # For gate jobs, err towards running more jobs (so, generally avoid
@@ -730,10 +738,9 @@
730
738
  irrelevant-files: *tempest-irrelevant-files
731
739
  - openstacksdk-functional-devstack:
732
740
  irrelevant-files: *tempest-irrelevant-files
733
- - grenade:
734
- irrelevant-files: *tempest-irrelevant-files
735
- - grenade-skip-level:
741
+ - grenade-skip-level-always:
736
742
  irrelevant-files: *tempest-irrelevant-files
743
+ voting: false
737
744
  experimental:
738
745
  jobs:
739
746
  - swift-tox-py37
@@ -31,7 +31,7 @@ Greg Lange (greglange@gmail.com)
31
31
  Janie Richling (jrichli@us.ibm.com)
32
32
  Michael Barton (mike@weirdlooking.com)
33
33
  Mahati Chamarthy (mahati.chamarthy@gmail.com)
34
- Samuel Merritt (sam@swiftstack.com)
34
+ Samuel Merritt (smerritt@nvidia.com)
35
35
  Romain Le Disez (romain.ledisez@ovh.net)
36
36
 
37
37
  Contributors
@@ -107,7 +107,7 @@ Chris Smart (distroguy@gmail.com)
107
107
  Chris Wedgwood (cw@f00f.org)
108
108
  Christian Berendt (berendt@b1-systems.de)
109
109
  Christian Hugo (hugo.christian@web.de)
110
- Christian Schwede (cschwede@redhat.com)
110
+ Christian Schwede (cschwede@mailbox.org)
111
111
  Christopher Bartz (bartz@dkrz.de)
112
112
  Christopher MacGown (chris@pistoncloud.com)
113
113
  Chuck Short (chuck.short@canonical.com)
@@ -390,7 +390,6 @@ Russ Nelson (russ@crynwr.com)
390
390
  Russell Bryant (rbryant@redhat.com)
391
391
  Sachin Patil (psachin@redhat.com)
392
392
  Sam Morrison (sorrison@gmail.com)
393
- Samuel Merritt (sam@swiftstack.com)
394
393
  Sarafraj Singh (Sarafraj.Singh@intel.com)
395
394
  Sarvesh Ranjan (saranjan@cisco.com)
396
395
  Sascha Peilicke (saschpe@gmx.de)
@@ -1,3 +1,44 @@
1
+ swift (2.35.4, epoxy stable backports)
2
+
3
+ * Fixed `Accept` header parsing to avoid excessive backtracking. Previously,
4
+ an unauthenticated user could send a malicious `Accept` header that would
5
+ keep a proxy-server process pegged at 100% CPU for several seconds.
6
+ Repeated requests would exhaust all available workers, leading to a
7
+ complete denial of service. Refer to CVE-2026-71190 for more information.
8
+
9
+ * Require that more `x-amz-*` headers be included in the set of signed
10
+ headers if present in an S3 API request. Previously an attacker could include
11
+ an unsigned `x-amz-copy-source` header with a valid presigned PUT to
12
+ copy arbitrary data accessible by the signer provided that the container
13
+ and object name were known. This required the default `s3_acl = False`
14
+ configuration. Refer to CVE-2026-71191 for more information.
15
+
16
+ * Limit native Swift control headers from S3 API requests. Previously these
17
+ could allow an attacker to copy arbitrary data to a bucket they control
18
+ provided they know the account, container, and object name to copy. This
19
+ required the non-default `s3_acl = True` configuration. Refer to
20
+ CVE-2026-71192 for more information.
21
+
22
+ * Prevent a crash when `AF_ALG` socket creation is denied by policy (such
23
+ as may be the case with recent versions of Docker).
24
+
25
+ swift (2.35.3, epoxy stable backports)
26
+
27
+ * Block client-supplied container-update headers. Previously, these could
28
+ be used to perform server-side request forgery (SSRF) attacks. Refer to
29
+ CVE-2026-50221 for more information.
30
+
31
+ * Restrict the types of data that may be sent between object servers and
32
+ replicators. Previously, if an object server were compromised, it could
33
+ use REPLICATE responses to attempt to compromise other nodes through
34
+ their replicators.
35
+
36
+ * Fixed an infinite loop in s3api when attempting to read from a truncated
37
+ aws-chunked input. This could be used as a Denial-of-Service vector
38
+ as the proxy-server process stopped handling other requests. Refer to
39
+ CVE-2026-49017 for more information.
40
+
41
+
1
42
  swift (2.35.2, epoxy stable backports)
2
43
 
3
44
  * The s3token middleware now passes service auth tokens to Keystone
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: swift
3
- Version: 2.35.2
3
+ Version: 2.35.4
4
4
  Summary: OpenStack Object Storage
5
5
  Home-page: https://docs.openstack.org/swift/latest/
6
6
  Author: OpenStack
@@ -0,0 +1,20 @@
1
+ ---
2
+ security:
3
+ - |
4
+ Block client-supplied container-update headers. Previously, these could
5
+ be used to perform server-side request forgery (SSRF) attacks. Refer to
6
+ `CVE-2026-50221 <https://www.cve.org/CVERecord?id=CVE-2026-50221>`__ for
7
+ more information.
8
+
9
+ - |
10
+ Restrict the types of data that may be sent between object servers and
11
+ replicators. Previously, if an object server were compromised, it could
12
+ use REPLICATE responses to attempt to compromise other nodes through
13
+ their replicators.
14
+
15
+ - |
16
+ Fixed an infinite loop when attempting to read from a truncated
17
+ aws-chunked input. This could be used as a Denial-of-Service vector
18
+ as the proxy-server process stopped handling other requests. Refer to
19
+ `CVE-2026-49017 <https://www.cve.org/CVERecord?id=CVE-2026-49017>`__ for
20
+ more information.
@@ -0,0 +1,33 @@
1
+ ---
2
+ security:
3
+ - |
4
+ Fixed ``Accept`` header parsing to avoid excessive backtracking. Previously,
5
+ an unauthenticated user could send a malicious ``Accept`` header that would
6
+ keep a proxy-server process pegged at 100% CPU for several seconds.
7
+ Repeated requests would exhaust all available workers, leading to a
8
+ complete denial of service. Refer to
9
+ `CVE-2026-71190 <https://www.cve.org/CVERecord?id=CVE-2026-71190>`__
10
+ for more information.
11
+
12
+ - |
13
+ Require that more ``x-amz-*`` headers be included in the set of signed
14
+ headers if present in an S3 API request. Previously an attacker could include
15
+ an unsigned ``x-amz-copy-source`` header with a valid presigned PUT to
16
+ copy arbitrary data accessible by the signer provided that the container
17
+ and object name were known. This required the default ``s3_acl = False``
18
+ configuration. Refer to
19
+ `CVE-2026-71191 <https://www.cve.org/CVERecord?id=CVE-2026-71191>`__
20
+ for more information.
21
+
22
+ - |
23
+ Limit native Swift control headers from S3 API requests. Previously these
24
+ could allow an attacker to copy arbitrary data to a bucket they control
25
+ provided they know the account, container, and object name to copy. This
26
+ required the non-default ``s3_acl = True`` configuration. Refer to
27
+ `CVE-2026-71192 <https://www.cve.org/CVERecord?id=CVE-2026-71192>`__
28
+ for more information.
29
+
30
+ fixes:
31
+ - |
32
+ Prevent a crash when ``AF_ALG`` socket creation is denied by policy (such
33
+ as may be the case with recent versions of Docker).
@@ -31,6 +31,7 @@ import sqlite3
31
31
 
32
32
  from swift.common.constraints import MAX_META_COUNT, MAX_META_OVERALL_SIZE, \
33
33
  check_utf8
34
+ from swift.common.utils.pickle import unpickle
34
35
  from swift.common.utils import Timestamp, renamer, \
35
36
  mkdirs, lock_parent_directory, fallocate, md5
36
37
  from swift.common.exceptions import LockTimeout
@@ -832,8 +833,8 @@ class DatabaseBroker(object):
832
833
  for entry in fp.read().split(b':'):
833
834
  if entry:
834
835
  try:
835
- data = pickle.loads(base64.b64decode(entry),
836
- encoding='utf8') # nosec: B301
836
+ data = unpickle(base64.b64decode(entry),
837
+ encoding='utf8')
837
838
  self._commit_puts_load(item_list, data)
838
839
  except Exception:
839
840
  self.logger.exception(
@@ -23,7 +23,6 @@ import os
23
23
  import socket
24
24
 
25
25
  from eventlet import sleep, Timeout
26
- import pickle # nosec: B403
27
26
  from http.client import HTTPException
28
27
 
29
28
  from swift.common.bufferedhttp import http_connect, http_connect_raw
@@ -31,6 +30,7 @@ from swift.common.exceptions import ClientException
31
30
  from swift.common.request_helpers import USE_REPLICATION_NETWORK_HEADER, \
32
31
  get_ip_port
33
32
  from swift.common.swob import normalize_etag
33
+ from swift.common.utils.pickle import unpickle
34
34
  from swift.common.utils import Timestamp, FileLikeIter, quote
35
35
  from swift.common.http import HTTP_NO_CONTENT, HTTP_INSUFFICIENT_STORAGE, \
36
36
  is_success, is_server_error
@@ -656,7 +656,7 @@ def direct_get_suffix_hashes(node, part, suffixes, conn_timeout=5,
656
656
  host={'ip': node['replication_ip'],
657
657
  'port': node['replication_port']}
658
658
  )
659
- return pickle.loads(resp.read()) # nosec: B301
659
+ return unpickle(resp.read())
660
660
 
661
661
 
662
662
  def retry(func, *args, **kwargs):
@@ -48,11 +48,17 @@ import re
48
48
  # If adding to this list, note that these are regex patterns,
49
49
  # so use a trailing $ to constrain to an exact header match
50
50
  # rather than prefix match.
51
- inbound_exclusions = [get_sys_meta_prefix('account'),
52
- get_sys_meta_prefix('container'),
53
- get_sys_meta_prefix('object'),
54
- OBJECT_TRANSIENT_SYSMETA_PREFIX,
55
- 'x-backend']
51
+ inbound_exclusions = [
52
+ get_sys_meta_prefix('account'),
53
+ get_sys_meta_prefix('container'),
54
+ get_sys_meta_prefix('object'),
55
+ OBJECT_TRANSIENT_SYSMETA_PREFIX,
56
+ 'x-backend',
57
+ # Block any update headers that predate x-backend headers
58
+ 'x-account-(host|device|partition)$',
59
+ 'x-container-(host|device|partition|root-db-state)$',
60
+ 'x-delete-at-(host|device|partition|container)$',
61
+ ]
56
62
 
57
63
 
58
64
  #: A list of python regular expressions that will be used to
@@ -94,6 +94,24 @@ SIGV4_CHUNK_MIN_SIZE = 8192
94
94
  SERVICE = 's3' # useful for mocking out in tests
95
95
 
96
96
 
97
+ SIGV4_MUST_BE_SIGNED_AMZ_PREFIXES = (
98
+ 'x-amz-copy',
99
+ 'x-amz-acl',
100
+ 'x-amz-grant',
101
+ 'x-amz-meta',
102
+ )
103
+
104
+
105
+ DISALLOWED_CLIENT_HEADERS = frozenset((
106
+ 'x-copy-from',
107
+ 'x-copy-from-account',
108
+ 'x-symlink-target',
109
+ 'x-symlink-target-account',
110
+ 'x-object-manifest',
111
+ 'x-static-large-object',
112
+ ))
113
+
114
+
97
115
  CHECKSUMS_BY_HEADER = {
98
116
  'x-amz-checksum-crc32': checksum.crc32,
99
117
  'x-amz-checksum-crc32c': checksum.crc32c,
@@ -430,6 +448,8 @@ class StreamingInput:
430
448
  self._to_read -= len(buf)
431
449
  if readline and buf[-1:] == b'\n':
432
450
  break
451
+ if not buf and not self._completed_payload:
452
+ raise S3InputIncomplete
433
453
  return b''.join(bufs)
434
454
 
435
455
  def _read_trailers(self):
@@ -922,6 +942,14 @@ class SigV4Mixin(object):
922
942
  (k.lower().strip(), ' '.join(_header_strip(v or '').split()))
923
943
  for (k, v) in self.headers.items())
924
944
 
945
+ for key in headers_lower_dict:
946
+ key = swob.wsgi_to_str(key)
947
+ if (key not in self._signed_headers
948
+ and key.startswith(SIGV4_MUST_BE_SIGNED_AMZ_PREFIXES)):
949
+ raise AccessDenied(
950
+ 'There were headers present in the request which were '
951
+ 'not signed', headers_not_signed=key)
952
+
925
953
  if 'host' in headers_lower_dict and re.match(
926
954
  'Boto/2.[0-9].[0-2]',
927
955
  headers_lower_dict.get('user-agent', '')):
@@ -1103,6 +1131,10 @@ class S3Request(swob.Request):
1103
1131
  # by full URL when absolute path given. See swift.swob for more detail.
1104
1132
  self.environ['swift.leave_relative_location'] = True
1105
1133
 
1134
+ for header in list(self.headers):
1135
+ if header.lower() in DISALLOWED_CLIENT_HEADERS:
1136
+ self.headers.pop(header, None)
1137
+
1106
1138
  def validate_part_number(self, parts_count=None, check_max=True):
1107
1139
  """
1108
1140
  Get the partNumber param, if it exists, and check it is valid.
@@ -697,7 +697,7 @@ class Accept(object):
697
697
 
698
698
  # RFC 2616 section 2.2
699
699
  token = r'[^()<>@,;:\"/\[\]?={}\x00-\x20\x7f]+' # nosec B105
700
- qdtext = r'[^"]'
700
+ qdtext = r'[^"\\]'
701
701
  quoted_pair = r'(?:\\.)'
702
702
  quoted_string = r'"(?:' + qdtext + r'|' + quoted_pair + r')*"'
703
703
  extension = (r'(?:\s*;\s*(?:' + token + r")\s*=\s*" + r'(?:' + token +
@@ -42,7 +42,7 @@ from optparse import OptionParser
42
42
  import traceback
43
43
  import warnings
44
44
 
45
- from tempfile import gettempdir, mkstemp, NamedTemporaryFile
45
+ from tempfile import gettempdir, NamedTemporaryFile
46
46
  import glob
47
47
  import itertools
48
48
  import stat
@@ -64,7 +64,6 @@ from eventlet.green import socket
64
64
  import eventlet.hubs
65
65
  import eventlet.queue
66
66
 
67
- import pickle # nosec: B403
68
67
  from configparser import (ConfigParser, NoSectionError,
69
68
  NoOptionError)
70
69
  from urllib.parse import unquote, urlparse
@@ -1501,28 +1500,6 @@ def cache_from_env(env, allow_none=False):
1501
1500
  return item_from_env(env, 'swift.cache', allow_none)
1502
1501
 
1503
1502
 
1504
- def write_pickle(obj, dest, tmp=None, pickle_protocol=0):
1505
- """
1506
- Ensure that a pickle file gets written to disk. The file
1507
- is first written to a tmp location, ensure it is synced to disk, then
1508
- perform a move to its final location
1509
-
1510
- :param obj: python object to be pickled
1511
- :param dest: path of final destination file
1512
- :param tmp: path to tmp to use, defaults to None
1513
- :param pickle_protocol: protocol to pickle the obj with, defaults to 0
1514
- """
1515
- if tmp is None:
1516
- tmp = os.path.dirname(dest)
1517
- mkdirs(tmp)
1518
- fd, tmppath = mkstemp(dir=tmp, suffix='.tmp')
1519
- with os.fdopen(fd, 'wb') as fo:
1520
- pickle.dump(obj, fo, pickle_protocol)
1521
- fo.flush()
1522
- os.fsync(fd)
1523
- renamer(tmppath, dest)
1524
-
1525
-
1526
1503
  def search_tree(root, glob_match, ext='', exts=None, dir_ext=None):
1527
1504
  """Look in root, for any files/dirs matching glob, recursively traversing
1528
1505
  any found directories looking for files ending with ext
@@ -106,7 +106,8 @@ except OSError as e:
106
106
  if e.errno == errno.ENOENT:
107
107
  # could create socket, but crc32c is unknown
108
108
  _sock.close()
109
- elif e.errno != errno.EAFNOSUPPORT:
109
+ elif e.errno not in (errno.EAFNOSUPPORT, errno.EPERM, errno.EACCES):
110
+ # EPERM/EACCES: sandboxes such as Docker >= 29 deny AF_ALG
110
111
  raise
111
112
  crc32c_kern = None
112
113
  else:
@@ -0,0 +1,77 @@
1
+ # Copyright (c) 2010-2026 OpenStack Foundation
2
+ #
3
+ # Licensed under the Apache License, Version 2.0 (the "License");
4
+ # you may not use this file except in compliance with the License.
5
+ # You may obtain a copy of the License at
6
+ #
7
+ # http://www.apache.org/licenses/LICENSE-2.0
8
+ #
9
+ # Unless required by applicable law or agreed to in writing, software
10
+ # distributed under the License is distributed on an "AS IS" BASIS,
11
+ # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
12
+ # implied.
13
+ # See the License for the specific language governing permissions and
14
+ # limitations under the License.
15
+
16
+ import _codecs
17
+ import copyreg
18
+ import io
19
+ import os
20
+ import pickle # nosec: B403
21
+ from tempfile import mkstemp
22
+
23
+ from swift.common import header_key_dict
24
+ from swift.common.utils import mkdirs, renamer
25
+
26
+
27
+ def write_pickle(obj, dest, tmp=None, pickle_protocol=0):
28
+ """
29
+ Ensure that a pickle file gets written to disk. The file
30
+ is first written to a tmp location, ensure it is synced to disk, then
31
+ perform a move to its final location
32
+
33
+ :param obj: python object to be pickled
34
+ :param dest: path of final destination file
35
+ :param tmp: path to tmp to use, defaults to None
36
+ :param pickle_protocol: protocol to pickle the obj with, defaults to 0
37
+ """
38
+ if tmp is None:
39
+ tmp = os.path.dirname(dest)
40
+ mkdirs(tmp)
41
+ fd, tmppath = mkstemp(dir=tmp, suffix='.tmp')
42
+ with os.fdopen(fd, 'wb') as fo:
43
+ pickle.dump(obj, fo, pickle_protocol)
44
+ fo.flush()
45
+ os.fsync(fd)
46
+ renamer(tmppath, dest)
47
+
48
+
49
+ _ALLOWED_GLOBALS = {
50
+ ('_codecs', 'encode'): _codecs.encode,
51
+ # Needed for HeaderKeyDict
52
+ ('copy_reg', '_reconstructor'): copyreg._reconstructor,
53
+ ('copyreg', '_reconstructor'): copyreg._reconstructor,
54
+ ('swift.common.header_key_dict', 'HeaderKeyDict'):
55
+ header_key_dict.HeaderKeyDict,
56
+ ('builtins', 'dict'): dict,
57
+ ('__builtin__', 'dict'): dict,
58
+ ('builtins', 'bytes'): bytes,
59
+ ('__builtin__', 'bytes'): bytes,
60
+ }
61
+
62
+
63
+ class RestrictedUnpickler(pickle.Unpickler):
64
+ def find_class(self, module, name):
65
+ try:
66
+ return _ALLOWED_GLOBALS[(module, name)]
67
+ except KeyError:
68
+ # Forbid any other loading
69
+ raise pickle.UnpicklingError(
70
+ f"global '{module}.{name}' is forbidden")
71
+
72
+
73
+ def unpickle(source, encoding='ASCII'):
74
+ """Helper function analogous to pickle.loads()."""
75
+ if isinstance(source, bytes):
76
+ source = io.BytesIO(source)
77
+ return RestrictedUnpickler(source, encoding=encoding).load()
@@ -746,7 +746,8 @@ class ContainerBroker(DatabaseBroker):
746
746
  Mark an object deleted.
747
747
 
748
748
  :param name: object name to be deleted
749
- :param timestamp: timestamp when the object was marked as deleted
749
+ :param timestamp: string representation of the timestamp when the
750
+ object was marked as deleted
750
751
  :param storage_policy_index: the storage policy index for the object
751
752
  """
752
753
  self.put_object(name, timestamp, 0, 'application/deleted', 'noetag',
@@ -766,16 +767,18 @@ class ContainerBroker(DatabaseBroker):
766
767
  Creates an object in the DB with its metadata.
767
768
 
768
769
  :param name: object name to be created
769
- :param timestamp: timestamp of when the object was created
770
+ :param timestamp: string representation of the timestamp when the
771
+ object was created
770
772
  :param size: object size
771
773
  :param content_type: object content-type
772
774
  :param etag: object etag
773
775
  :param deleted: if True, marks the object as deleted and sets the
774
776
  deleted_at timestamp to timestamp
775
777
  :param storage_policy_index: the storage policy index for the object
776
- :param ctype_timestamp: timestamp of when content_type was last
777
- updated
778
- :param meta_timestamp: timestamp of when metadata was last updated
778
+ :param ctype_timestamp: string representation of the timestamp when
779
+ content_type was last updated, or None
780
+ :param meta_timestamp: string representation of the timestamp when
781
+ metadata was last updated, or None
779
782
  """
780
783
  record = {'name': name, 'created_at': timestamp, 'size': size,
781
784
  'content_type': content_type, 'etag': etag,
@@ -57,9 +57,10 @@ from pyeclib.ec_iface import ECDriverError, ECInvalidFragmentMetadata, \
57
57
 
58
58
  from swift.common.constraints import check_drive
59
59
  from swift.common.request_helpers import is_sys_meta
60
+ from swift.common.utils.pickle import unpickle, write_pickle
60
61
  from swift.common.utils import mkdirs, Timestamp, \
61
62
  storage_directory, hash_path, renamer, fallocate, fsync, fdatasync, \
62
- fsync_dir, drop_buffer_cache, lock_path, write_pickle, \
63
+ fsync_dir, drop_buffer_cache, lock_path, \
63
64
  config_true_value, listdir, split_path, remove_file, \
64
65
  get_md5_socket, F_SETPIPE_SZ, decode_timestamps, encode_timestamps, \
65
66
  MD5_OF_EMPTY_STRING, link_fd_to_path, \
@@ -237,7 +238,7 @@ def read_metadata(fd, add_missing_checksum=False):
237
238
  # strings are utf-8 encoded when written, but have not always been
238
239
  # (see https://bugs.launchpad.net/swift/+bug/1678018) so encode them again
239
240
  # when read
240
- metadata = pickle.loads(metadata, encoding='bytes') # nosec: B301
241
+ metadata = unpickle(metadata, encoding='bytes')
241
242
  return _decode_metadata(metadata, metadata_written_by_py3)
242
243
 
243
244
 
@@ -360,7 +361,7 @@ def read_hashes(partition_dir):
360
361
  pass
361
362
  else:
362
363
  try:
363
- hashes = pickle.loads(pickled_hashes) # nosec: B301
364
+ hashes = unpickle(pickled_hashes)
364
365
  except Exception:
365
366
  # pickle.loads() can raise a wide variety of exceptions when
366
367
  # given invalid input depending on the way in which the
@@ -21,7 +21,6 @@ from os.path import join
21
21
  import random
22
22
  import time
23
23
  from collections import defaultdict
24
- import pickle # nosec: B403
25
24
  import shutil
26
25
 
27
26
  from eventlet import (GreenPile, GreenPool, Timeout, sleep, tpool, spawn)
@@ -34,6 +33,7 @@ from swift.common.utils import (
34
33
  load_recon_cache, parse_override_options, distribute_evenly,
35
34
  remove_directory, config_request_node_count_value,
36
35
  non_negative_int, get_prefixed_logger)
36
+ from swift.common.utils.pickle import unpickle
37
37
  from swift.common.header_key_dict import HeaderKeyDict
38
38
  from swift.common.bufferedhttp import http_connect
39
39
  from swift.common.daemon import Daemon, run_daemon
@@ -934,7 +934,7 @@ class ObjectReconstructor(Daemon):
934
934
  "Invalid response %(resp)s from %(full_path)s",
935
935
  {'resp': resp.status, 'full_path': full_path})
936
936
  else:
937
- remote_suffixes = pickle.loads(resp.read()) # nosec: B301
937
+ remote_suffixes = unpickle(resp.read())
938
938
  except (Exception, Timeout):
939
939
  # all exceptions are logged here so that our caller can
940
940
  # safely catch our exception and continue to the next node
@@ -22,7 +22,6 @@ import random
22
22
  import shutil
23
23
  import time
24
24
  import itertools
25
- import pickle # nosec: B403
26
25
 
27
26
  import eventlet
28
27
  from eventlet import GreenPool, queue, tpool, Timeout, sleep
@@ -36,6 +35,7 @@ from swift.common.utils import whataremyips, unlink_older_than, \
36
35
  config_auto_int_value, storage_directory, load_recon_cache, EUCLEAN, \
37
36
  parse_override_options, distribute_evenly, listdir, node_to_string, \
38
37
  get_prefixed_logger
38
+ from swift.common.utils.pickle import unpickle
39
39
  from swift.common.bufferedhttp import http_connect
40
40
  from swift.common.daemon import Daemon, run_daemon
41
41
  from swift.common.http import HTTP_OK, HTTP_INSUFFICIENT_STORAGE
@@ -709,8 +709,7 @@ class ObjectReplicator(Daemon):
709
709
  failure_devs_info.add((node['replication_ip'],
710
710
  node['device']))
711
711
  continue
712
- remote_hash = pickle.loads(
713
- resp.read()) # nosec: B301
712
+ remote_hash = unpickle(resp.read())
714
713
  finally:
715
714
  conn.close()
716
715
  del resp
@@ -14,7 +14,6 @@
14
14
  # limitations under the License.
15
15
  import queue
16
16
 
17
- import pickle # nosec: B403
18
17
  import errno
19
18
  import os
20
19
  import signal
@@ -31,7 +30,8 @@ from swift.common.bufferedhttp import http_connect
31
30
  from swift.common.constraints import check_drive
32
31
  from swift.common.exceptions import ConnectionTimeout
33
32
  from swift.common.ring import Ring
34
- from swift.common.utils import get_logger, renamer, write_pickle, \
33
+ from swift.common.utils.pickle import unpickle, write_pickle
34
+ from swift.common.utils import get_logger, renamer, \
35
35
  dump_recon_cache, config_true_value, RateLimitedIterator, split_path, \
36
36
  eventlet_monkey_patch, get_redirect_data, ContextPool, hash_path, \
37
37
  non_negative_float, config_positive_int_value, non_negative_int, \
@@ -645,13 +645,22 @@ class ObjectUpdater(Daemon):
645
645
  )
646
646
 
647
647
  def _load_update(self, device, update_path):
648
+ pickle_data = None
648
649
  try:
649
- return pickle.load(open(update_path, 'rb')) # nosec: B301
650
+ with open(update_path, 'rb') as fp:
651
+ pickle_data = fp.read()
652
+ return unpickle(pickle_data)
650
653
  except Exception as e:
651
654
  if getattr(e, 'errno', None) == errno.ENOENT:
652
- return
653
- self.logger.exception(
654
- 'ERROR Pickle problem, quarantining %s', update_path)
655
+ return None
656
+ if pickle_data is None:
657
+ self.logger.exception(
658
+ 'ERROR Pickle problem reading, quarantining %s',
659
+ update_path)
660
+ else:
661
+ self.logger.exception(
662
+ 'ERROR Pickle problem unpickling, quarantining %s',
663
+ update_path)
655
664
  self.stats.quarantines += 1
656
665
  self.logger.increment('quarantines')
657
666
  target_path = os.path.join(device, 'quarantined', 'objects',
@@ -664,7 +673,7 @@ class ObjectUpdater(Daemon):
664
673
  os.rmdir(os.path.dirname(update_path))
665
674
  except OSError:
666
675
  pass
667
- return
676
+ return None
668
677
 
669
678
  def _iter_async_pendings(self, device):
670
679
  """