[release-announce] swift 2.19.0 (rocky)

no-reply at openstack.org no-reply at openstack.org
Wed Aug 22 09:38:06 UTC 2018


We are satisfied to announce the release of:

swift 2.19.0: OpenStack Object Storage

This release is part of the rocky release series.

Download the package from:

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

For more details, please see below.

2.19.0
^^^^^^

New Features

* TempURLs now support IP range restrictions. Please see
  https://docs.openstack.org/swift/latest/middleware.html#client-usage
  for more information on how to use this additional restriction.

* Add support for multiple root encryption secrets for the trivial
  and KMIP keymasters. This allows operators to rotate encryption keys
  over time without needing to re-encrypt all existing data in the
  cluster. Please see the included sample config files for
  instructions on how to multiple encryption keys.

* The object updater now supports two configuration settings:
  "concurrency" and "updater_workers". The latter controls how many
  worker processes are spawned, while the former controls how many
  concurrent container updates are performed by each worker process.
  This should speed the processing of async_pendings.

  On upgrade, a node configured with concurrency=N will still handle
  async updates N-at-a-time, but will do so using only one process
  instead of N.

  If you have a config file like this:

     [object-updater] concurrency = <N>

  and you want to take advantage of faster updates, then do this:

     [object-updater] concurrency = 8  # the default; you can omit
     this line updater_workers = <N>

  If you want updates to be processed exactly as before, do this:

     [object-updater] concurrency = 1 updater_workers = <N>

* When listing objects in a container in json format, static large
  objects (SLOs) will now include an additional new "slo_etag" key
  that matches the etag returned when requesting the SLO. The existing
  "hash" key remains unchanged as the MD5 of the SLO manifest. Text
  and XML listings are unaffected by this change.

* Log deprecation warnings for "run_pause". This setting was
  deprecated in Swift 2.4.0 and is replaced by "interval". It may be
  removed in a future release.

* Object reconstructor logs are now prefixed with information about
  the specific worker process logging the message. This makes reading
  the logs and understanding the messages much simpler.

* Lower bounds of dependencies have been updated to reflect what is
  actually tested.

* SSYNC replication mode now removes as much of the directory
  structure as possible as soon at it observes that the directory is
  empty. This reduces the work needed for subsequent replication
  passes.

* The container-updater now reports zero objects and bytes used for
  child DBs in sharded containers. This prevents double-counting in
  utilization reports.

* Add fallocate_reserve to account and container servers. This
  allows disks shared between account/container and object rings to
  avoid getting 100% full. The default value of 1% matches the
  existing default on object servers.

* Added an experimental "swift-ring-composer" CLI tool to build
  composite rings.

* Added an optional "read_only" middleware to make an entire cluster
  or individual accounts read only.

* Fixed a bug where zero-byte PUTs would not work properly with "If-
  None-Match: *" conditional requests.

* ACLs now work with unicode in user/account names.

* COPY now works with unicode account names.

* Improved S3 API compatibility.

* Lock timeouts in the container updater are now logged at INFO
  level, not ERROR.

* Various other minor bug fixes and improvements.

Changes in swift 2.18.0..2.19.0
-------------------------------

9bd84be authors/changelog for 2.19.0 release
c63d5c0 Fix tempurl's example code to be in the code-block
7ca1a67 Add debugging info to SignatureDoesNotMatch responses
0dc1b62 Multi-key KMIP keymaster
2722e49 Add support for multiple root encryption secrets
fc04dc1 Attempt to fix pep8
a7c5ca0 Fix locking in swift-recon-cron
51b885b s3_acl: Require swift_owner authz to create buckets
bd640cd Fix the deletion of non-existent keys
5dca610 Fix up test_static_web_pretend_to_be_giant_json
0887f09 Update saio sample config files
03c1d61 Imported Translations from Zanata
7895718 Fix keymmaster_conf_section typo
dcbdcb8 Disallow uploads with x-amz-tagging headers set
b957940 Add probetests to gate jobs
79539ea Disallow aws-chunked uploads
86d78f6 imported some docs from the old user-guide
6a2bd0f improve prefix/delimiter api docs
6f920fd Add some reno artifacts to .gitignore
7fd5a12 Stop holding on to sys.exc_info tuples quite so much
3c92e3c Move keymaster_config_path parsing out of _get_root_secret
2f9bd85 Define keymaster log routes on the class
ba8447e add lower-constraints job
84758d9 make probe tests voting in the gate
c3d83ba Remove some unnecessary SkipTests
6a03990 Remove contentdir hack
60f1d34 Lower the required version of ipaddress
8e651a2 Add fallocate_reserve to account and container servers.
0cd42a2 Check other params preserved when slo_etag is extracted
f8b9c24 Add unittest for slo_etag
fa4c30d Include s3api schemas in sdists
c4c98eb Include SLO ETag in container updates
4409da6 Update doc building instructions in Development Guidelines
2f4f2dd Add Alpine Linux suuprt to bindep
9a7b46e swift-ring-builder shows hint about composite builder file
7bacd53 Be consistent about capitalizing Swift in the README
f27f1ae Make docs link consistent
26b20ee IP Range restrictions in temp urls
1951dc7 Add keymaster to fetch root secret from KMIP service
91a8cd2 PUT+POST: break out putter specific test classes
8bfb97a Content-Length enforcement fixups
783c7f6 py3: port proxy/controllers/info.py
d03fc9b swob: Stop auto-encoding unicode bodies
600521c Describe separate keymaster config file in docs
108304e Improve README doc building instructions
8918615 Update README related to documentation building
7ae2cc4 Address some review comments
158d4c2 swob.Match: remove quotes when checking __contains__
efcf7e6 swob: Fix up some WSGI string business
01fb3ef Log unexpected errors when trying to clean up empty dirs
306f9a1 py3: port domain_remap tests
081ff36 py3: port crossdomain
50ea4e1 py3: port healthcheck
0edfb87 reorganized existing ansible playbooks
1fa4b9e Remove unnecessary loop in test_keymaster.py
f0e4685 fix misspelling of 'server'
5652dec container-updater: Always report zero objects/bytes used for shards
a5a6a27 rename swob.str_from_wsgi -> swob.wsgi_to_str
3920b88 py3: port catch_errors
e0b4eb2 py3: fix test_proxy_logging.py
5b79ce9 Reverse shard ranges later
1318bac py36: Fix test_get_logger_sysloghandler_plumbing
ba0b3c3 Add clarifying comment about surrogate check
f192f51 Have check_drive raise ValueError on errors
2b19c26 py3: Port common/swob
0694e51 py3: Port common/constraints
2637fec Add py36 testenv
f21bbe0 specify test selector with py3 packages in bindep
a59c5e3 Resolve TODO's in test/probe/test_sharder.py
554c07a Fix the example webhook middleware
a1cb919 Use valid eventlet logger method
642d874 Fix test_wsgi.py tests failing with eventlet <=0.18.4
4a0afa9 Enforce Content-Length in catch_errors
b08355e Rename test_except.py -> test_catch_errors.py
ac69a71 s3api: Stop debug-logging the entire wsgi environment
049dc0c Blacklist eventlet 0.23.0
572b6be Set lower bounds on all requirements and test-requirements
8e89271 Tighten up staticweb redirect test
b39a88c func tests: Rename storage_url to storage_path
7042d2c Use path_qs instead of reinventing it
f6a436a Only try to fetch or sync shard ranges if the remote supports sharding
a718cb3 py3: fix up some NameErrors
6b626f2 Experimental swift-ring-composer CLI to build composite rings
026f706 rectify 'a integer number' to 'an integer number'
2a2ce04 rectify 'a invalid version' to 'an invalid version'
d5c532a object-updater: add concurrent updates
a04234d Functional tests for domain_remap middleware
65e1de2 Fix shard_max_row in ContainerBroker.get_replication_info()
2ee8363 rectify 'a expirting object' to 'an expiring object'
f2295a6 Fix typo in sharding docs
dc8d1c9 Get rid of tpool_reraise
b3ce3c9 func tests: Drop clone_conn arg to Connection
fcd7a05 Fix up insecure behavior for functional tests
0318e7c Rearrange some error handling to reduce indent
beb014b Read-only middleware fixups
e726473 Fix typos replace a OpenStack bucket with an OpenStack bucket
284da56 Fix grammar errors replace a object with an object
8b44c9d Allow domain remap storage_domain to be configured for func tests
caa3c67 functests: Clean up objects better
c88d4d7 Make COPY work with unicode account names
9d0162a Make ACLs work with Unicode in user/account names
7cec5a8 tempauth: Send back url-encoded account names
9ef2a82 copy: Stop hanging per-request data on middleware instance
1424ff7 Refactor object updater's async-pending finder
ecf4755 Make final stats dump after reconstructor runs once
76344e5 Remove redundant elif in tempauth
2044673 Improve user logging
5acefa3 made changelog section breaks more consistent
e748ef4 Verify diff stat is unchanged when syncing only shard ranges
5078bb1 Added S3 compatibility information to docs
bb9e427 Add detail to container server GET docstring
7d76017 Fix marker and end_marker descriptions in API ref
076f20b removed specific reference to two core reviewers
47aff72 Log updater stats once per pass, not per policy
fb3b43f Added PyPI validation check for the readme.
5d601b7 Adds read_only middleware
a954f59 container-updater: log LockTimeout exceptions at INFO, not ERROR
553bef0 Remove unhelpful log message in copy middleware
31623f7 Catch and log errors from process_container, then keep updating
7b5c30d Update SERVER_ADDR/SERVER_PORT from PROXY protocol
854db51 Fix common/test_utils.py on Python 3.5.4+
844bba8 Remove some Python 2.6 compatibility code in ring
7a76778 Use X-Timestamp when checking object expiration
0702d4d Stop overriding _in_sync in container replicator
a19548b Remove empty part dirs during ssync replication
26538d3 Make multiprocess reconstructor's logs more readable.
f8419bf Improve path handling in proxy_logging
748b29e Make If-None-Match:* work properly with 0-byte PUTs
e0d1869 Fix suffix-byte-range responses for zero-byte EC objects.
c44d047 Create policy_stat table in auditor if missing
b0ab7eb Log deprecation warnings for run_pause
f789af6 display swift services in apache2
b29eb13 Add assertion to test_consolidate_hashes_raises_exception


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

.gitignore                                         |    2 +
.zuul.yaml                                         |   14 +-
AUTHORS                                            |    8 +
CHANGELOG                                          |  130 +-
CONTRIBUTING.rst                                   |    2 +-
MANIFEST.in                                        |    1 +
README.rst                                         |   17 +-
api-ref/source/parameters.yaml                     |   25 +-
bandit.yaml                                        |    2 +-
bin/swift-recon-cron                               |   26 +-
bin/swift-ring-composer                            |   22 +
bindep.txt                                         |   21 +-
.../pseudo-hierarchical-folders-directories.rst    |  155 ++
etc/account-server.conf-sample                     |    7 +
etc/container-server.conf-sample                   |    7 +
etc/keymaster.conf-sample                          |   20 +
etc/object-server.conf-sample                      |    9 +-
etc/proxy-server.conf-sample                       |   40 +
examples/apache2/account-server.template           |    2 +-
examples/apache2/container-server.template         |    2 +-
examples/apache2/object-server.template            |    2 +-
examples/apache2/proxy-server.template             |    2 +-
lower-constraints.txt                              |   89 +
.../install_dependencies.yaml                      |   50 -
playbooks/saio_single_node_setup/make_rings.yaml   |   29 -
playbooks/saio_single_node_setup/setup_saio.yaml   |  174 --
.../saio_single_node_setup/templates/rc.local.j2   |    8 -
.../notes/2_19_0_release-3e6ee3e6a1fcc6bb.yaml     |  103 ++
.../locale/en_GB/LC_MESSAGES/releasenotes.po       |  325 +++-
.../locale/ko_KR/LC_MESSAGES/releasenotes.po       |   75 -
requirements.txt                                   |    5 +-
setup.cfg                                          |    6 +
swift/account/backend.py                           |    7 +-
swift/account/reaper.py                            |    7 +-
swift/account/server.py                            |   40 +-
swift/cli/ringbuilder.py                           |    9 +-
swift/cli/ringcomposer.py                          |  183 ++
swift/common/constraints.py                        |  110 +-
swift/common/db_replicator.py                      |   42 +-
swift/common/exceptions.py                         |    4 +
swift/common/internal_client.py                    |    2 +-
swift/common/middleware/acl.py                     |   11 +-
swift/common/middleware/catch_errors.py            |   70 +-
swift/common/middleware/copy.py                    |   40 +-
swift/common/middleware/crossdomain.py             |    2 +-
swift/common/middleware/crypto/crypto_utils.py     |   26 +-
swift/common/middleware/crypto/decrypter.py        |  150 +-
swift/common/middleware/crypto/encrypter.py        |   11 +-
swift/common/middleware/crypto/keymaster.py        |  197 +-
swift/common/middleware/crypto/kmip_keymaster.py   |  158 ++
swift/common/middleware/crypto/kms_keymaster.py    |   27 +-
swift/common/middleware/dlo.py                     |    2 +
swift/common/middleware/domain_remap.py            |    2 +-
swift/common/middleware/gatekeeper.py              |   11 +-
swift/common/middleware/healthcheck.py             |    4 +-
swift/common/middleware/list_endpoints.py          |    2 +-
swift/common/middleware/proxy_logging.py           |   15 +-
swift/common/middleware/read_only.py               |  123 ++
swift/common/middleware/recon.py                   |   22 +-
swift/common/middleware/s3api/acl_handlers.py      |   10 +-
.../common/middleware/s3api/controllers/bucket.py  |    4 +-
.../middleware/s3api/controllers/multi_delete.py   |    5 +-
.../middleware/s3api/controllers/multi_upload.py   |    6 +-
swift/common/middleware/s3api/controllers/obj.py   |   10 +-
swift/common/middleware/s3api/etree.py             |    9 +-
swift/common/middleware/s3api/s3api.py             |    1 -
swift/common/middleware/s3api/s3request.py         |   37 +-
swift/common/middleware/s3api/utils.py             |    8 +-
swift/common/middleware/slo.py                     |   92 +-
swift/common/middleware/tempauth.py                |   23 +-
swift/common/middleware/tempurl.py                 |  101 +-
swift/common/ring/ring.py                          |    5 +-
swift/common/swob.py                               |  133 +-
swift/common/utils.py                              |   78 +-
swift/common/wsgi.py                               |   69 +-
swift/container/backend.py                         |   27 +-
swift/container/reconciler.py                      |    8 +
swift/container/replicator.py                      |   25 +-
swift/container/server.py                          |  108 +-
swift/container/updater.py                         |   28 +-
swift/locale/de/LC_MESSAGES/swift.po               |   18 +-
swift/locale/en_GB/LC_MESSAGES/swift.po            |   42 +-
swift/locale/es/LC_MESSAGES/swift.po               |   20 +-
swift/locale/fr/LC_MESSAGES/swift.po               |   18 +-
swift/locale/it/LC_MESSAGES/swift.po               |   18 +-
swift/locale/ja/LC_MESSAGES/swift.po               |   22 +-
swift/locale/ko_KR/LC_MESSAGES/swift.po            |   16 +-
swift/locale/pt_BR/LC_MESSAGES/swift.po            |   16 +-
swift/locale/ru/LC_MESSAGES/swift.po               |   18 +-
swift/locale/tr_TR/LC_MESSAGES/swift.po            |   16 +-
swift/locale/zh_CN/LC_MESSAGES/swift.po            |   16 +-
swift/locale/zh_TW/LC_MESSAGES/swift.po            |   16 +-
swift/obj/diskfile.py                              |  133 +-
swift/obj/mem_diskfile.py                          |   19 +-
swift/obj/reconstructor.py                         |   55 +-
swift/obj/replicator.py                            |   40 +-
swift/obj/server.py                                |   20 +-
swift/obj/updater.py                               |  168 +-
swift/proxy/controllers/base.py                    |   22 +-
swift/proxy/controllers/info.py                    |    2 +-
swift/proxy/controllers/obj.py                     |   69 +-
swift/proxy/server.py                              |    4 +-
test-requirements.txt                              |   12 +-
test/functional/__init__.py                        |   14 +-
test/functional/s3api/test_bucket.py               |    6 +-
test/functional/s3api/test_object.py               |   11 +-
test/functional/swift_test_client.py               |   96 +-
test/functional/test_container.py                  |    6 +-
test/functional/test_domain_remap.py               |  177 ++
test/functional/test_object.py                     |    6 +-
test/functional/test_slo.py                        |   85 +-
test/functional/test_staticweb.py                  |   54 +-
test/functional/test_symlink.py                    |   50 +-
test/functional/test_tempurl.py                    |    4 -
test/probe/test_object_conditional_requests.py     |   79 +
test/probe/test_sharder.py                         |  134 +-
test/sample.conf                                   |    5 +
test/unit/__init__.py                              |   27 +-
test/unit/account/test_backend.py                  |   76 +-
test/unit/account/test_server.py                   |   86 +
test/unit/cli/test_ringbuilder.py                  |   50 +-
test/unit/cli/test_ringcomposer.py                 |  195 ++
.../common/middleware/crypto/crypto_helpers.py     |   31 +-
.../common/middleware/crypto/test_crypto_utils.py  |   47 +-
.../common/middleware/crypto/test_decrypter.py     |  196 +-
.../common/middleware/crypto/test_encrypter.py     |   11 +-
.../common/middleware/crypto/test_encryption.py    |   39 +-
.../common/middleware/crypto/test_keymaster.py     |  251 ++-
.../middleware/crypto/test_kmip_keymaster.py       |  270 +++
.../common/middleware/crypto/test_kms_keymaster.py |   68 +-
test/unit/common/middleware/s3api/__init__.py      |   11 +-
test/unit/common/middleware/s3api/helpers.py       |   16 +-
test/unit/common/middleware/s3api/test_bucket.py   |    6 +
.../common/middleware/s3api/test_multi_delete.py   |   14 +-
test/unit/common/middleware/s3api/test_obj.py      |   38 +-
test/unit/common/middleware/s3api/test_s3api.py    |   27 +-
test/unit/common/middleware/s3api/test_service.py  |    5 +-
test/unit/common/middleware/test_catch_errors.py   |  199 ++
test/unit/common/middleware/test_crossdomain.py    |   32 +-
test/unit/common/middleware/test_dlo.py            |   15 +
test/unit/common/middleware/test_domain_remap.py   |   80 +-
test/unit/common/middleware/test_except.py         |  142 --
test/unit/common/middleware/test_gatekeeper.py     |    4 +-
test/unit/common/middleware/test_healthcheck.py    |   12 +-
.../unit/common/middleware/test_listing_formats.py |   15 +-
test/unit/common/middleware/test_proxy_logging.py  |  113 +-
test/unit/common/middleware/test_read_only.py      |  237 +++
test/unit/common/middleware/test_slo.py            |   55 +-
.../common/middleware/test_subrequest_logging.py   |   11 +-
test/unit/common/middleware/test_tempauth.py       |   30 +-
test/unit/common/middleware/test_tempurl.py        |  214 ++-
test/unit/common/test_constraints.py               |  180 +-
test/unit/common/test_db_replicator.py             |    7 +-
test/unit/common/test_swob.py                      |  356 ++--
test/unit/common/test_utils.py                     |   85 +-
test/unit/common/test_wsgi.py                      |   98 +-
test/unit/container/test_backend.py                |   35 +
test/unit/container/test_replicator.py             |  139 +-
test/unit/container/test_server.py                 |   89 +-
test/unit/container/test_updater.py                |  121 +-
test/unit/obj/test_diskfile.py                     |  180 +-
test/unit/obj/test_reconstructor.py                |  221 ++-
test/unit/obj/test_replicator.py                   |   43 +-
test/unit/obj/test_server.py                       |  265 +--
test/unit/obj/test_ssync.py                        |   30 +-
test/unit/obj/test_updater.py                      |   89 +-
test/unit/proxy/controllers/test_info.py           |   10 +-
test/unit/proxy/controllers/test_obj.py            | 1900 ++++++++++----------
test/unit/proxy/test_server.py                     |   20 +-
.../install_dependencies.yaml                      |   24 +
.../saio_single_node_setup/make_rings.yaml         |   29 +
.../saio_single_node_setup/setup_saio.yaml         |  174 ++
.../saio_single_node_setup/templates/rc.local.j2   |    8 +
tox.ini                                            |   24 +-
212 files changed, 9420 insertions(+), 3414 deletions(-)


Requirements updates
--------------------

diff --git a/requirements.txt b/requirements.txt
index c115113..df5d26b 100644
--- a/requirements.txt
+++ b/requirements.txt
@@ -6 +6 @@ dnspython>=1.14.0;python_version=='2.7'  # http://www.dnspython.org/LICENSE
-eventlet>=0.17.4  # MIT
+eventlet>=0.17.4,!=0.23.0  # MIT
@@ -10 +10 @@ PasteDeploy>=1.3.3
-lxml
+lxml>=3.4.1
@@ -15,0 +16 @@ cryptography!=2.0,>=1.6                 # BSD/Apache-2.0
+ipaddress>=1.0.16;python_version<'3.3'          # PSF
diff --git a/test-requirements.txt b/test-requirements.txt
index 5f515bd..cf97918 100644
--- a/test-requirements.txt
+++ b/test-requirements.txt
@@ -8,2 +8,2 @@ coverage>=3.6 # Apache-2.0
-nose # LGPL
-nosexcover # BSD
+nose>=1.3.7 # LGPL
+nosexcover>=1.0.10 # BSD
@@ -13 +13 @@ mock>=2.0 # BSD
-python-swiftclient
+python-swiftclient>=3.2.0
@@ -16,2 +16,2 @@ reno>=1.8.0  # Apache-2.0
-python-openstackclient
-boto
+python-openstackclient>=3.12.0
+boto>=2.32.1
@@ -23,0 +24,2 @@ bandit>=1.1.0 # Apache-2.0
+
+docutils>=0.11  # OSI-Approved Open Source, Public Domain






More information about the Release-announce mailing list