[release-announce] swift 2.24.0 (ussuri)

no-reply at openstack.org no-reply at openstack.org
Mon Feb 3 11:14:23 UTC 2020


We are gleeful to announce the release of:

swift 2.24.0: OpenStack Object Storage

This release is part of the ussuri release series.

The source is available from:

    https://opendev.org/openstack/swift

Download the package from:

    https://tarballs.openstack.org/swift/

Please report issues through:

    https://bugs.launchpad.net/swift/+bugs

For more details, please see below.

2.24.0
^^^^^^


New Features
************

* Added a new object versioning mode, with APIs for querying and
  accessing old versions. For more information, see the documentation.

* Added support for S3 versioning using the above new mode.

* Added a new middleware to allow accounts and containers to opt-in
  to RFC-compliant ETags. For more information, see the documentation.
  Clients should be aware of the fact that ETags may be quoted for RFC
  compliance; this may become the default behavior in some future
  release.

* Proxy, account, container, and object servers now support
  "seamless reloads" via "SIGUSR1". This is similar to the existing
  graceful restarts but keeps the server socket open the whole time,
  reducing service downtime.

* New buckets created via the S3 API will now store multi-part
  upload data in the same storage policy as other data rather than the
  cluster's default storage policy.

* Device region and zone can now be changed via "swift-ring-
  builder". Note that this may cause a lot of data movement on the
  next rebalance as the builder tries to reach full dispersion.

* Added support for Python 3.8.


Deprecation Notes
*****************

* Per-service "auto_create_account_prefix" settings are now
  deprecated and may be ignored in a future release; if you need to
  use this, please set it in the "[swift-constraints]" section of
  "/etc/swift/swift.conf".


Bug Fixes
*********

* The container sharder can now handle containers with special
  characters in their names.

* Internal client no longer logs object DELETEs as status 499.

* Objects with an "X-Delete-At" value in the far future no longer
  cause backend server errors.

* The bulk extract middleware once again allows clients to specify
  metadata (including expiration timestamps) for all objects in the
  archive.

* Container sync now synchronizes static symlinks in a way similar
  to static large objects.

* "swift_source" is set for more sub-requests in the proxy-server.
  See the documentation.

* Errors encountered while validating static symlink targets no
  longer cause "BadResponseLength" errors in the proxy-server.

* On Python 3, the KMS keymaster now works with secrets stored in
  Barbican with a "text/plain" payload-content-type.

* On Python 3, the formpost middleware now works with unicode file
  names.

* On Python 3, certain S3 API headers are now lower case as they
  would be coming from AWS.

* Several utility scripts now work better on Python 3:

  * "swift-account-audit"

  * "swift-dispersion-populate"

  * "swift-drive-recon"

  * "swift-recon"

Changes in swift 2.23.0..2.24.0
-------------------------------

5cd854b78 Authors/changelog for swift 2.24.0
e3ee6ce31 py38: cgi lost some names
6097660f0 s3api: Implement object versioning API
ebaf154fc Add a note to the part power increase documentation
bd063b678 s3api: use native strings in s3api.auth_details access_key
a84e358dc SSYNC: log body of errors in SSYNC subrequests
27fd97cef Middleware that allows a user to have quoted Etags
51c9b1308 Add unittest2 back to lower-constraints.txt
2759d5d51 New Object Versioning mode
26ff2eb1c container-sync: Sync static links similar to how we sync SLOs
2be4716bc More multi-char-delimiter func test coverage
cd78ee983 Bump up ceph tests timeout
dad8fb7c3 packaging: Build universal wheels
7bba3ad04 Store normalized x-delete-at on PUT/POST
ff0753fe1 Allow bulk to fwd some headers at tar extraction
57ca3570e Allow Timestamp comparisons against out-of-range values
090146451 Clean up container-sync docs
9483630ae py3: Fix formpost unicode filename issues
5b26b749b Drop use of unittest2
614019079 Make FakeSwift query param order agnostic
47eb78897 Fix  the duplicated words issue like "the the "
b1178b4a9 Allow reconciler to handle reserved names
4601548da Deprecate per-service auto_create_account_prefix
0f13db30b Import directly from the inside of the ring module
3f8890701 sharding: Better-handle newlines in container names
286082222 Use less responses from handoffs
55ab08a5f account-server: Add test for leading delimiter
e8b654f31 Have slo tell the object-server that it wants whole manifests
40edf07ab sharding: Let swift-manage-shard-ranges accept a relative path
a06c0a475 sharder: quote() more Swift paths when logging
d246bf20e sharding: Tolerate blank limits when listing
54312b0b7 py3: Clean up some needlessly-noisy tracebacks
c94f625fe Forward-port stable-release changelog entries
226e2c120 Fix type on py3
1f7b97ec0 Add normalize_etag() helper function
b65d8b10c Early-return on non-Swift get_info requests
6b33cf99f WSGI server workers must drop_privledges
05e4bb30b Update list of experimental upgrade tests
8c0fd3f13 py3: Make seamless reloads work
da4e07164 Set swift_source more in s3api middleware
51b7b110a Set swift_source more in versioned_writes
c35ab2e1d Set swift_source in account_quotas middleware
f33c061ae s3api: Better handle 498/429 responses
698717d88 Allow internal clients to use reserved namespace
a2aaf5985 Fix BadResponseLength error when creating symlink
e11c58ef8 Turn off dns_compliant_bucket_names for ceph tests
b5c9dc1c9 py3: Fix s3api header casing
249a302d0 Remove a bunch of known-failures that moved from boto to boto3
e5dad445b Switch py2 DSVM jobs to only run swift under py2
29019985e Start README.rst with a better title
cfb3ae601 Update known-failures and config for up-rev'ed ceph/s3tests
d6db7360e Imported Translations from Zanata
da5b94914 Add py38 unit test job
3de330ead print deleted flag in account and container info cli
1107f2417 Seamlessly reload servers with SIGUSR1
2f1111a43 proxy: stop sending chunks to objects with a Queue
7f6b09dc9 Add delete_account in InternalClient
30d99f514 Get rid of _delete_db
7cb92810a Fix bug internal client's delete_object logs 499
c512574e1 Make our py2 func tests more explicitly py2
a505d02b3 Tweak Swift AIO docs, update CentOS and Fedora
281ffab2a pin lower-constraints to run against python 2.7
0c1b485ad exclude utf8 tests under py3
dd235b6ac use request_helpers import namespace for tests
b75d59393 Refactor timestamp iter in db backend tests
e7cd8df5e Add option for debug query logging
739c37041 Imported Translations from Zanata
2ac50079c docs: Fix then/than grammar
86952dd3e tests: Stop invoking python just to get the real source directory
d270596b6 Consistently use io.BytesIO
8efaa3556 py38: Provide readinto() interface for RingReader
3bd565387 Use `==` to compare against the empty string, not `is`
2edcd0b7b py3: Fix swift-recon
4c66596e6 py3: fix swift-dispersion-populate
3e90ddb37 swift-account-audit: clean up some error formatting
2f4fe56ca py3: fix swift-account-audit
e58840c57 swift-account-audit: work with encryption
85d3658d6 Fix kms_keymaster under Python 3
405a2b2a5 py3: Fix swift-drive-audit
78a4070c9 Fix misleading error msg if swift.conf unreadable
d667affb6 Create segment container w/ same policy as primary
98f978109 Add commands to ring-builder to change region / zone
bb5fa0ea2 tests: bust md5 of object not footers
3f7ffbc2c Start building py3 docker images
cb76e00e9 Imported Translations from Zanata
527a57ffc Update master for stable/train
0217b12b6 PDF Documentation Build tox target
f1b44b199 s3api: paginate listings when aborting MPUs
6853616ae ring: Track more properties of the ring
814a76689 Follow up punch_hole patch


Diffstat (except docs and test files)
-------------------------------------

.zuul.yaml                                         |  134 +-
AUTHORS                                            |    3 +
CHANGELOG                                          |  209 ++
README.rst                                         |   15 +-
REVIEW_GUIDELINES.rst                              |    4 +-
bin/swift-account-audit                            |   17 +-
bin/swift-dispersion-populate                      |    6 +-
bin/swift-drive-audit                              |   17 +-
etc/account-server.conf-sample                     |    5 +-
etc/container-server.conf-sample                   |    8 +-
etc/drive-audit.conf-sample                        |    4 +
etc/object-expirer.conf-sample                     |    1 -
etc/object-server.conf-sample                      |    3 -
etc/proxy-server.conf-sample                       |   37 +-
etc/swift.conf-sample                              |    5 +
.../notes/2_24_0_release-1ca244cc959922fc.yaml     |   92 +
releasenotes/source/index.rst                      |    2 +
.../locale/ko_KR/LC_MESSAGES/releasenotes.po       |   75 -
releasenotes/source/train.rst                      |    6 +
setup.cfg                                          |    4 +
swift/account/backend.py                           |   24 +-
swift/account/reaper.py                            |    5 +-
swift/account/server.py                            |   62 +-
swift/account/utils.py                             |    9 +-
swift/cli/info.py                                  |    2 +
swift/cli/manage_shard_ranges.py                   |    5 +-
swift/cli/recon.py                                 |    2 +
swift/cli/ringbuilder.py                           |  167 +-
swift/common/constraints.py                        |   23 +-
swift/common/daemon.py                             |    3 +-
swift/common/db.py                                 |   42 +-
swift/common/db_replicator.py                      |    7 +-
swift/common/direct_client.py                      |   10 +-
swift/common/header_key_dict.py                    |   37 +-
swift/common/http.py                               |    1 +
swift/common/internal_client.py                    |   58 +-
swift/common/manager.py                            |   20 +
swift/common/middleware/account_quotas.py          |    3 +-
swift/common/middleware/acl.py                     |    2 +-
swift/common/middleware/bulk.py                    |   20 +-
swift/common/middleware/container_sync.py          |   37 +-
swift/common/middleware/copy.py                    |   12 +
swift/common/middleware/crypto/encrypter.py        |    7 +-
swift/common/middleware/crypto/keymaster.py        |    4 +
swift/common/middleware/crypto/kms_keymaster.py    |    5 +-
swift/common/middleware/dlo.py                     |    8 +-
swift/common/middleware/etag_quoter.py             |  127 +
swift/common/middleware/formpost.py                |   10 +-
swift/common/middleware/gatekeeper.py              |    7 +
swift/common/middleware/listing_formats.py         |   64 +-
swift/common/middleware/proxy_logging.py           |    2 +-
swift/common/middleware/s3api/acl_handlers.py      |   12 +-
.../common/middleware/s3api/controllers/bucket.py  |  314 +-
.../middleware/s3api/controllers/multi_delete.py   |   39 +-
.../middleware/s3api/controllers/multi_upload.py   |   50 +-
swift/common/middleware/s3api/controllers/obj.py   |   77 +-
.../middleware/s3api/controllers/versioning.py     |   42 +-
swift/common/middleware/s3api/s3request.py         |  101 +-
swift/common/middleware/s3api/s3response.py        |   57 +-
swift/common/middleware/s3api/utils.py             |    4 +-
swift/common/middleware/slo.py                     |   17 +-
swift/common/middleware/staticweb.py               |   18 +-
swift/common/middleware/symlink.py                 |   40 +-
.../common/middleware/versioned_writes/__init__.py |   51 +
.../legacy.py}                                     |   29 +-
.../versioned_writes/object_versioning.py          | 1467 +++++++++
swift/common/middleware/x_profile/html_viewer.py   |    8 +-
swift/common/request_helpers.py                    |  104 +-
swift/common/ring/builder.py                       |   48 +-
swift/common/ring/ring.py                          |  134 +-
swift/common/swob.py                               |   51 +-
swift/common/utils.py                              |   99 +-
swift/common/wsgi.py                               |  222 +-
swift/container/backend.py                         |   43 +-
swift/container/server.py                          |   84 +-
swift/container/sharder.py                         |  132 +-
swift/container/sync.py                            |   22 +-
swift/locale/de/LC_MESSAGES/swift.po               |  278 +-
swift/locale/en_GB/LC_MESSAGES/swift.po            |   92 +-
swift/locale/es/LC_MESSAGES/swift.po               |   77 +-
swift/locale/fr/LC_MESSAGES/swift.po               |   75 +-
swift/locale/it/LC_MESSAGES/swift.po               |   77 +-
swift/locale/ja/LC_MESSAGES/swift.po               |   77 +-
swift/locale/ko_KR/LC_MESSAGES/swift.po            |  178 +-
swift/locale/pt_BR/LC_MESSAGES/swift.po            |   72 +-
swift/locale/ru/LC_MESSAGES/swift.po               |   74 +-
swift/locale/tr_TR/LC_MESSAGES/swift.po            |   71 +-
swift/locale/zh_CN/LC_MESSAGES/swift.po            |   71 +-
swift/locale/zh_TW/LC_MESSAGES/swift.po            |   71 +-
swift/obj/diskfile.py                              |    2 +-
swift/obj/expirer.py                               |   16 +-
swift/obj/reconstructor.py                         |    2 +-
swift/obj/server.py                                |   79 +-
swift/obj/ssync_receiver.py                        |    4 +-
swift/obj/updater.py                               |    1 +
swift/proxy/controllers/base.py                    |   55 +-
swift/proxy/controllers/container.py               |    2 +-
swift/proxy/controllers/obj.py                     |  427 ++-
swift/proxy/server.py                              |   23 +-
test/functional/__init__.py                        |   16 +-
test/functional/s3api/__init__.py                  |    4 +-
test/functional/s3api/s3_test_client.py            |   12 +-
test/functional/s3api/test_acl.py                  |    4 +-
test/functional/s3api/test_bucket.py               |    4 +-
test/functional/s3api/test_multi_delete.py         |    4 +-
test/functional/s3api/test_multi_upload.py         |  141 +-
test/functional/s3api/test_object.py               |   28 +-
test/functional/s3api/test_service.py              |    4 +-
test/functional/s3api/test_versioning.py           |  166 +
test/functional/swift_test_client.py               |   26 +-
test/functional/test_account.py                    |    8 +-
test/functional/test_container.py                  |    8 +-
test/functional/test_domain_remap.py               |    2 +-
test/functional/test_object.py                     |   82 +-
test/functional/test_object_versioning.py          | 2669 ++++++++++++++++
test/functional/test_staticweb.py                  |    2 +-
test/functional/test_symlink.py                    |    4 +-
test/functional/test_versioned_writes.py           |    4 +-
test/probe/brain.py                                |  162 +-
test/probe/common.py                               |   41 +-
test/probe/test_account_reaper.py                  |   23 +-
test/probe/test_container_failures.py              |    3 +
test/probe/test_container_merge_policy_index.py    |  132 +-
test/probe/test_container_sync.py                  |  326 ++
test/probe/test_object_versioning.py               |  233 ++
test/probe/test_reconstructor_rebuild.py           |    8 +-
test/probe/test_replication_servers_working.py     |   33 +-
test/probe/test_reserved_name.py                   |  131 +
test/probe/test_sharder.py                         |  359 ++-
test/probe/test_signals.py                         |  344 ++-
test/s3api/__init__.py                             |   89 +-
test/s3api/test_service.py                         |    5 +-
test/s3api/test_versioning.py                      |  758 +++++
test/unit/__init__.py                              |   13 +-
test/unit/account/test_auditor.py                  |    2 +-
test/unit/account/test_backend.py                  |  125 +-
test/unit/account/test_reaper.py                   |   16 +-
test/unit/account/test_server.py                   |  522 +++-
test/unit/account/test_utils.py                    |   84 +-
test/unit/cli/test_info.py                         |   59 +-
test/unit/cli/test_ringbuilder.py                  |  348 ++-
.../common/middleware/crypto/test_kms_keymaster.py |   11 +-
test/unit/common/middleware/helpers.py             |   43 +-
test/unit/common/middleware/s3api/__init__.py      |   18 +-
test/unit/common/middleware/s3api/helpers.py       |  100 +-
test/unit/common/middleware/s3api/test_acl.py      |    2 +-
test/unit/common/middleware/s3api/test_bucket.py   |  546 +++-
.../common/middleware/s3api/test_multi_delete.py   |  138 +-
.../common/middleware/s3api/test_multi_upload.py   |   85 +-
test/unit/common/middleware/s3api/test_obj.py      |  385 ++-
test/unit/common/middleware/s3api/test_s3api.py    |   27 +
.../unit/common/middleware/s3api/test_s3request.py |    4 +-
.../common/middleware/s3api/test_s3response.py     |   18 +
.../common/middleware/s3api/test_versioning.py     |  172 +-
test/unit/common/middleware/test_bulk.py           |   41 +-
test/unit/common/middleware/test_container_sync.py |    3 +
test/unit/common/middleware/test_etag_quoter.py    |  215 ++
test/unit/common/middleware/test_formpost.py       |  126 +-
test/unit/common/middleware/test_gatekeeper.py     |   33 +
.../unit/common/middleware/test_listing_formats.py |  264 +-
.../common/middleware/test_object_versioning.py    | 3214 ++++++++++++++++++++
test/unit/common/middleware/test_proxy_logging.py  |    6 +-
test/unit/common/middleware/test_slo.py            |  100 +-
test/unit/common/middleware/test_symlink.py        |   34 +
.../common/middleware/test_versioned_writes.py     |  102 +-
test/unit/common/middleware/test_xprofile.py       |    2 +-
test/unit/common/ring/test_ring.py                 |   17 +-
test/unit/common/test_constraints.py               |   24 +-
test/unit/common/test_db.py                        |  131 +-
test/unit/common/test_direct_client.py             |  122 +-
test/unit/common/test_internal_client.py           |   78 +-
test/unit/common/test_request_helpers.py           |  279 +-
test/unit/common/test_swob.py                      |  454 +--
test/unit/common/test_utils.py                     |  141 +-
test/unit/common/test_wsgi.py                      |  107 +-
test/unit/container/test_backend.py                |  609 ++--
test/unit/container/test_reconciler.py             |   17 +-
test/unit/container/test_replicator.py             |   87 +-
test/unit/container/test_server.py                 |  335 +-
test/unit/container/test_sharder.py                |  473 ++-
test/unit/container/test_updater.py                |   91 +-
test/unit/helpers.py                               |    3 +-
test/unit/obj/test_expirer.py                      |   14 +
test/unit/obj/test_server.py                       |  235 +-
test/unit/obj/test_ssync_receiver.py               |   43 +-
test/unit/obj/test_ssync_sender.py                 |   15 +-
test/unit/obj/test_updater.py                      |   18 +-
test/unit/proxy/controllers/test_base.py           |   63 +
test/unit/proxy/controllers/test_container.py      |    9 +-
test/unit/proxy/controllers/test_obj.py            |   29 +-
test/unit/proxy/test_server.py                     |  136 +-
tox.ini                                            |   27 +-
224 files changed, 20021 insertions(+), 3860 deletions(-)







More information about the Release-announce mailing list