[release-announce] swift 2.27.0 (wallaby)

no-reply at openstack.org no-reply at openstack.org
Thu Mar 18 15:13:18 UTC 2021


We eagerly announce the release of:

swift 2.27.0: OpenStack Object Storage

This release is part of the wallaby 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.27.0
^^^^^^


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

* Added "audit watcher" hooks to allow operators to run arbitrary
  code against every diskfile in a cluster. For more information, see
  the documentation.

* Added support for system-scoped "reader" roles when authenticating
  using Keystone. Operators may configure this using the
  "system_reader_roles" option in the "[filter:keystoneauth]" section
  of their proxy-server.conf.

  A comparable group, ".reseller_reader", is now available for
  development purposes when authenticating using tempauth.

* Allow static large object segments to be deleted asynchronously.
  Operators may opt into this new behavior by enabling the new
  "allow_async_delete" option in the "[filter:slo]" section in their
  proxy-server.conf. For more information, see the documentation.

* Added the ability to connect to memcached over TLS. See the
  "tls_*" options in etc/memcache.conf-sample

* The proxy-server now caches 'listing' shards, improving listing
  performance for sharded containers. A new config option,
  "recheck_listing_shard_ranges", controls the cache time and defaults
  to 10 minutes; set it to 0 to disable caching (the previous
  behavior).

* Added a new optional proxy-logging field "{wire_status_int}" for
  the status code returned to the client. For more information, see
  the documentation.

* Memcache client error-limiting is now configurable. See the
  "error_suppression_*" options in etc/memcache.conf-sample

* Added "tasks_per_second" option to rate-limit the object-expirer.

* Added "usedforsecurity" annotations for use on FIPS-compliant
  systems.

* S3 API improvements:

  * Make allowable clock skew configurable, with a default value of
    15 minutes to match AWS. Note that this was previously hardcoded
    at 5 minutes; operators may want to preserve the prior behavior by
    setting "allowable_clock_skew = 300" in the "[filter:s3api]"
    section of their proxy-server.conf.

  * Container ACLs are now cloned to the "+segments" container when
    it is created.

  * Added the ability to configure auth region in s3token
    middleware.

  * CORS-related headers are now passed through appropriately when
    using the S3 API. Note that allowed origins and other container
    metadata must still be configured through the Swift API.

    Preflight requests do not contain enough information to map a
    bucket to an account/container pair; a new cluster-wide option
    "cors_preflight_allow_origin" may be configured for such OPTIONS
    requests. The default (blank) rejects all S3 preflight requests.

* Sharding improvements:

  * A "--no-auto-shard" option has been added to "swift-container-
    sharder".

  * The sharder daemon has been enhanced to better support the
    shrinking of shards that are no longer required. Shard containers
    will now discover from their root container if they should be
    shrinking. They will also discover the shards into which they
    should shrink, which may include the root container itself.

  * A 'compact' command has been added to "swift-manage-shard-
    ranges" that enables sequences of contiguous shards with low
    object counts to be compacted into another existing shard, or into
    the root container.

  * "swift-manage-shard-ranges" can now accept a config file; this
    may be used to ensure consistency of threshold values with the
    container-sharder config.

  * The sharding progress reports in recon cache now continue to be
    included for a period of time after sharding has completed. The
    time period may be configured using the "recon_sharded_timeout"
    option in the "[container-sharder]" section of container-
    server.conf, and defaults to 12 hours.

  * Add root containers with compactible ranges to recon cache.

  * Expose sharding statistics in the backend recon middleware.

* Replication improvements:

  * The post-rsync REPLICATE call no longer recalculates hashes
    immediately.

  * Hashes are no longer invalidated after a successful ssync; they
    were already invalidated during the data transfer.

* Added support for Python 3.9.

* Partition power increase improvements:

  * Fixed a bug where stale state files would cause misplaced data
    during multiple partition power increases.

  * Removed a race condition that could cause newly-written data to
    not be linked into the new partition for the new partition power.

  * Improved safety during cleanup to ensure files have been
    relinked appropriately before unlinking.

  * Added an option to drop privileges when running the relinker as
    root.

  * Added an option to rate-limit how quickly data files are
    relinked or cleaned up. This may be used to reduce I/O load during
    partition power increases, improving end-user performance.

  * Rehash partitions during the partition power increase.
    Previously, we relied on the replication engine to perform the
    rehash, which could cause an unexpected I/O spike after a
    partition power increase.

  * Warn when relinking/cleaning up and any disks are unmounted.

  * Log progress per partition when relinking/cleaning up.

  * During clean-up, stop warning about tombstones that got reaped
    from the new location but not the old.

  * Added the ability to read options from object-server.conf,
    similar to background daemons.


Known Issues
************

* Operators should verify that encryption is not enabled in their
  reconciler pipelines; having it enabled there may harm data
  durability. For more information, see bug 1910804.


Upgrade Notes
*************

* Added an option to write EC fragments with legacy CRC to ensure a
  smooth upgrade from liberasurecode<=1.5.0 to >=1.6.2. For more
  information, see bug 1886088.


Bug Fixes
*********

* Errors downloading a Static Large Object that cause a shorter-
  than- expected response are now logged as 500s.

* S3 API fixes:

  * Fixed a bug that prevented the s3api pipeline validation
    described in proxy-server.conf-sample from being performed. As
    documented, operators can disable this via the
    "auth_pipeline_check" option if proxy startup fails with
    validation errors.

  * Fixed an issue where SHA mismatches in client XML payloads would
    cause a server error. Swift now correctly responds with a client
    error about the bad digest.

  * Fixed an issue where non-base64 signatures would cause a server
    error. Swift now correctly responds with a client error about the
    invalid digest.

  * The correct storage policy is now logged for S3 requests.

* Sharding fixes:

  * Prevent shard databases from losing track of their root database
    when deleted.

  * Prevent sharded root databases from being reclaimed to ensure
    that shards can detect that they have been deleted.

  * Overlapping shrinking shards no longer generate audit warnings;
    these are expected to sometimes overlap.

* Replication fixes:

  * Fixed a race condition in ssync that could lead to a loss of
    data durability (or even loss of data, for two-replica policies)
    when some object servers have outdated rings. Replication via
    rsync is likely still affected by a similar bug.

  * Non-durable fragments can now be reverted from handoffs.

  * Reduced log noise for common ssync errors.

* Python 3 fixes:

  * Staticweb correctly handles listings when paths include non-
    ASCII characters.

  * S3 API now allows multipart uploads with non-ASCII characters in
    the object name.

  * Fixed an import-ordering issue in "swift-dispersion-populate".

* Turned off thread-logging when monkey-patching with eventlet. This
  addresses a potential hang in the proxy-server while logging client
  disconnects.

* Fixed a bug that could cause EC GET responses to return a server
  error.

* Fixed an issue with "swift-drive-audit" when run around New
  Year's.

* Server errors encountered when validating the first segment of a
  Static or Dynamic Large Object now return a 503 to the client,
  rather than a 409.

* Errors when setting keys in memcached are now logged. This helps
  operators detect when shard ranges for caching have gotten too large
  to be stored, for example.

* Various other minor bug fixes and improvements.

Changes in swift 2.26.0..2.27.0
-------------------------------

c6a640366 AUTHORS/CHANGELOG for 2.27.0
27a734c78 s3api: Allow CORS preflight requests
539398ce8 Replace dequeue_from_legacy_queue in documentation
c9052f665 Change alignment on `compact` output
a045f90b4 Add name to compact output
82f3d0ff9 relinker: continue cleaning up old files despite failure
ebee4d455 relinker: make cleanup checks more robust
4bb78de61 Fix os.link exceptions in diskfile.relink_paths
1afad5c49 cors-tests: Increase timeouts for setup operations
fb186f671 Add a config file option to swift-manage-shard-ranges
8492dc75a Close ring gz file after loading
a406c23a1 Relinker: Add partition progress to relinker log
419a8ae8a Add unit test for diskfile.relink_paths
b8aefd750 relinker: Stop reporting errors about reaped/cleaned-up datafiles
24eb16fc2 Fix race in diskfile.relink_paths
87c7684fb sharder: downgrade 'no data dirs' warning to info
81db98069 s3api: Pass through CORS headers
c5152ed4d Add some functional CORS tests
01dec1240 sharder: only shrink to root if all ranges are involved
41f85f396 sharder: fix loop in find_compactible_shard_sequences
1de983481 Report final in_progress when sharding is complete
b1309c95e Plumb sharding stats though recon middleware
6ed82b106 Run garbage collector during probe test setUp
c9f6e760b Add unit test coverage for CleavingContext.done()
9eac76258 Trivial fixes in recon middleware
a3d77cac0 Simplify interface to sharder shrinking
4f94ac263 Add sharder section to container config doc
443a142c1 tests for relink rehash
35b72756b Add test that DiskFileRouter gets relinker conf
6b30d9e81 relinker: Pass whole conf dicts around
d24884450 relinker: Rehash as we complete partitions
10b16f973 Improve 'swift-manage-shard-ranges compact' output
13b17af45 Add shrink candidates to recon dump
e8df26a2b sharder: Ignore already shrinking sequence when compacting
21a01e1c0 find_compactible_shard_sequences: fix skipped range
5dc7c6a24 sharder: add find_compactible_shard_sequences unit test
af386712a Add test for relinker --files-per-second
8e0060e2f Correct spelling of 'compactable' to 'compactible'
a90515bbb relinker: Warn on unmounted disks
53c0fc340 relinker: Add option to ratelimit relinking
44390d1ec Test under py39
cf4f32064 tempauth: Add .reseller_reader group
8f1d388f2 Fix s3api unit tests when run at roughly midnight UTC
98a0275a9 Add a read-only role to keystoneauth
7e6f9e7bf relinker: Add option to drop privileges
1b7dd34d3 relinker: Allow conf files for configuration
e72aaf0c5 relinker: Pull arg parsing into module
12bb4839f swift-manage-shard-ranges: add 'compact' command
b0c8de699 Enable shard ranges to be manually shrunk to root container
6c62c8d07 Do not delete root_path on ContainerBroker.delete_db
1f9b87954 Run flake8 on bin/ files
7ffcf2453 relinker: Improve logging
1746672e9 Update Memcached Considerations docs
be908186b zuul: Clean up/de-dupe irrelevant-files
c10f8ae4e relinker: Track part_power/next_part_power in state file
f53ba5b50 Do not reclaim sharded roots until they shrink
0b870eb94 Prevent upgrading to pip 21+
beb1c3969 Fix intermittent failures in sharder audit unit tests
ea0cab6e3 Adjust initial month value from int to str
fbad3c233 s3api: Break S3Request.__init__ signature less
967c9c696 ring: Prevent IndexErrors in calc_replica_count
8f4200791 Move DebugLogger to its own module
0a230e5ae Fix logging in proxy container GET path
13c0980e7 docs: Clarify that encryption should not be in reconciler pipeline
1dceafa7d ssync: sync non-durable fragments from handoffs
6896f1f54 s3api: actually execute check_pipeline in real world
cc3fa3cc0 Fix 503s from EC GETs of objects with POST metadata
d9c433a41 s3api: Get rid of slo_enabled flag
969b05fcf swift-init: Re-enable targeted configs
8081e0182 Resolve a regression with the patch for missing binaries
14a42d573 Monkey-patch in tests using mock.patch
86b966d95 Turn off logging.logThreads when monkey-patched
7cf4edfae Make test_verify_server independent of test env
10d9a737d s3api: Make allowable clock skew configurable
83233e7b3 prefactor: Pass s3api Config to S3Requests
6f813f6bf Fix __exit__ calls
a91434383 unit test S3 SigV4Request X-Amz-Content-SHA256 handling
128f19950 Refactor reconstructor probe tests
0c0d9d73d gate: Add centos8/py36 experimental jobs
a5fa3cfca py3: Fix status comparison in ECGetResponseCollection
09a2f9393 s3api: Make UNSIGNED-PAYLOAD requests work again
17cef1613 memcache: Log errors encountered when setting keys
8df3d1505 Document memcache max size with shard ranges
87e88782a s3api: Better-handle SHA mismatches during CompleteMultipartUpload
90c64ba09 Remove vendor names from deployment guide
6930bc24b Memcached client TLS support
077ba77ea Use cached shard ranges for container GETs
453983764 Avoid loops when gathering container listings from shards
cc69e5b08 Have PrefixLoggerAdapter prefix exceptions, as well
f4341a0d2 acoles: emeritus no more!
6ed724c3b py3: Fix non-ASCII multipart uploads
d64522a68 Improve test_utils.TestCloseableChain
5e3302649 Use CloseableChain when creating iterator of SLO response
b97128090 Let developers/operators add watchers to object audit
fb91993b4 s3-tests: Use my s3compat fork instead
4415f4513 s3api: Catch binascii.Error
d27796016 Populate shrinking shards with shard ranges learnt from root
d186af14f Add py3 probe tests on CentOS 8
73aa48a82 s3-tests: Only try to copy outputs when there *are* outputs
6058b1c4e Run linters on py3
69d6206db Fix up some log message grammar
84adf5e3b Remove md5_factory function
5320ecbaf replace md5 with swift utils version
cec9cb881 Add option to swift-oldies to only print pids
b87bc7d18 Increase gate timeouts from 1hr to 1.5hr
d4c0a7d3b Give probe tests a second chance to pass
2b4f58108 Run DSVM func tests under py3
232cb85cb Pin Bandit on py2
976cc8f48 Give unit tests a second chance to pass
0d37492c6 Clean up requirements a bit
f4d691da8 Fail if swift binary are missing
f54634e95 ssync: Tolerate more hang-ups
155af38d1 ssync: don't log tracebacks for client disconnects
cc94fb5b6 Fix invalid argument formatting in exception messages
9c532891d Stop explicitly handling StopIteration in proxy-logging
8c2c9bec7 s3api: Clone ACLs when creating +segments container
3d787ddff xlo: 5xx while validating first segment is a server error
3c3cab264 Stop invalidating suffixes post-SSYNC
5eaf15486 Have REPLICATE with suffixes just append to hashes.invalid
104afe56f py2: Suppress more CryptographyDeprecationWarnings
918ab8543 Use socket_timeout kwarg instead of useless eventlet.wsgi.WRITE_TIMEOUT
ee641dffc Dep's should be restricted by upper-constraints
e78377624 Add a new URL parameter to allow for async cleanup of SLO segments
711fb302b gate: Add victoria rolling upgrade job
90c737e35 Use swiftclient Connections in sharding probe tests
24060f6e6 tests: Increase container-update timeouts for rolling upgrade jobs
05d8b8fba Increase container_update_timeout in in-process func tests
aff65242f memcache: Make error-limiting values configurable
2b1eec79f Continue logging deprecation warnings for run_pause
72786533e Move config option documentation to separate docs
f4ce32277 Add librsvg2-* to bindep.txt
6c360a70b saio: Stop processes more forcefully in resetswift
26e431498 Use TOX_CONSTRAINTS_FILE
d90ee7896 tests: Replace FakeLogger with debug_logger in test_proxy_logging
7b5868266 Do not require the close method for response iterator
f665a6d42 Imported Translations from Zanata
95212ac72 Add a slightly more-useful repr for DiskFiles
0f97d8e92 Remove the unused coding style modules
b05ad8295 Add tasks_per_second option to expirer
6b7eecab5 Get unit tests passing on py39
8c0a1abf7 Fix a race condition in case of cross-replication
055e7b93a Imported Translations from Zanata
fb08d477e New proxy logging field for wire status
0d2604c11 wsgi: Ensure _response_headers is a list
f4a34c299 Log storage policy with s3api requests
6f4143d99 Clean up apache deployment docs
38ab4593f docs: Switching to /srv/www from /var/www to be more FHS 3.0 conformat
179a6ffb8 Update master for stable/victoria
599f63e76 ec: Add an option to write fragments with legacy crc
9a0bac4ce Fail short reads in SegmentedIterable
d17ee8ba1 Pass thread_locals through to frag queue feeder
5f95e1bec Use bigger GreenPool for concurrent EC
004052dc6 Fixing S3 credential caching region support
41335f7b4 Revert "Make rolling-upgrade job non-voting"
318c1a566 Run swift-tox-func-encryption-py37 job in the gate
5b8073c77 py3: Fix swift-dispersion-populate
ba46eb0e3 py3: Fix non-ascii chars in staticweb listings
34dd24e80 Refactor audit shard tests
94b90aa49 s3api: Allow lower-cased regions when making buckets
ae27056f0 probe-tests: Avoid a DuplicateSectionError on py3
802d80f31 ratelimit: Log proper container path when returning 498 for listings


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

.gitignore                                         |    1 +
.zuul.yaml                                         |  251 +--
AUTHORS                                            |    8 +-
CHANGELOG                                          |  203 ++-
bandit.yaml                                        |    2 +-
bin/swift-account-info                             |    1 +
bin/swift-config                                   |    1 +
bin/swift-container-info                           |    1 +
bin/swift-container-sharder                        |    4 +
bin/swift-dispersion-populate                      |    9 +-
bin/swift-drive-audit                              |    2 +-
bin/swift-object-relinker                          |   22 +-
bin/swift-oldies                                   |   30 +-
bin/swift-recon-cron                               |    1 +
bindep.txt                                         |    7 +-
etc/container-reconciler.conf-sample               |    6 +
etc/container-server.conf-sample                   |   23 +-
etc/memcache.conf-sample                           |   30 +
etc/object-expirer.conf-sample                     |    3 +
etc/object-server.conf-sample                      |   48 +-
etc/proxy-server.conf-sample                       |   69 +-
lower-constraints.txt                              |    2 -
py2-constraints.txt                                |    4 +
.../notes/2_27_0_release-a9ae967d6d271342.yaml     |  235 +++
releasenotes/source/index.rst                      |    2 +
.../locale/en_GB/LC_MESSAGES/releasenotes.po       |  436 ++++-
releasenotes/source/victoria.rst                   |    6 +
setup.cfg                                          |    4 +
swift/__init__.py                                  |    2 +-
swift/account/reaper.py                            |    8 +-
swift/cli/container_deleter.py                     |    2 +-
swift/cli/info.py                                  |    4 +-
swift/cli/manage_shard_ranges.py                   |  178 +-
swift/cli/relinker.py                              |  518 ++++--
swift/cli/shard-info.py                            |    7 +-
swift/common/db.py                                 |   10 +-
swift/common/db_replicator.py                      |   22 +-
swift/common/direct_client.py                      |   44 +-
swift/common/exceptions.py                         |    8 +
swift/common/manager.py                            |   47 +-
swift/common/memcached.py                          |   52 +-
swift/common/middleware/crypto/encrypter.py        |    6 +-
swift/common/middleware/dlo.py                     |    9 +-
swift/common/middleware/domain_remap.py            |    5 +-
swift/common/middleware/keystoneauth.py            |   16 +
swift/common/middleware/memcache.py                |   29 +-
swift/common/middleware/proxy_logging.py           |   81 +-
swift/common/middleware/ratelimit.py               |   11 +-
swift/common/middleware/recon.py                   |   15 +-
swift/common/middleware/s3api/acl_handlers.py      |    2 +-
.../common/middleware/s3api/controllers/bucket.py  |    3 +-
.../middleware/s3api/controllers/multi_upload.py   |   19 +-
swift/common/middleware/s3api/s3api.py             |   90 +-
swift/common/middleware/s3api/s3request.py         |   83 +-
swift/common/middleware/s3api/s3response.py        |   79 +-
swift/common/middleware/s3api/s3token.py           |    4 +-
swift/common/middleware/s3api/utils.py             |   11 +
swift/common/middleware/slo.py                     |  141 +-
swift/common/middleware/staticweb.py               |   12 +-
swift/common/middleware/tempauth.py                |   17 +-
.../versioned_writes/object_versioning.py          |    6 +-
swift/common/request_helpers.py                    |   84 +-
swift/common/ring/ring.py                          |   49 +-
swift/common/utils.py                              |  355 +++-
swift/common/wsgi.py                               |    9 +-
swift/container/backend.py                         |   79 +-
swift/container/server.py                          |   60 +-
swift/container/sharder.py                         |  514 ++++--
swift/locale/de/LC_MESSAGES/swift.po               |    7 +-
swift/locale/en_GB/LC_MESSAGES/swift.po            |   13 +-
swift/locale/es/LC_MESSAGES/swift.po               |    8 +-
swift/locale/fr/LC_MESSAGES/swift.po               |    8 +-
swift/locale/it/LC_MESSAGES/swift.po               |    8 +-
swift/locale/ja/LC_MESSAGES/swift.po               |    7 +-
swift/locale/ko_KR/LC_MESSAGES/swift.po            |    7 +-
swift/locale/pt_BR/LC_MESSAGES/swift.po            |    6 +-
swift/locale/ru/LC_MESSAGES/swift.po               |    7 +-
swift/locale/tr_TR/LC_MESSAGES/swift.po            |    6 +-
swift/locale/zh_CN/LC_MESSAGES/swift.po            |    6 +-
swift/locale/zh_TW/LC_MESSAGES/swift.po            |    7 +-
swift/obj/auditor.py                               |  108 +-
swift/obj/diskfile.py                              |  181 +-
swift/obj/expirer.py                               |   18 +-
swift/obj/mem_diskfile.py                          |    6 +-
swift/obj/reconstructor.py                         |   94 +-
swift/obj/replicator.py                            |  180 +-
swift/obj/server.py                                |   23 +-
swift/obj/ssync_receiver.py                        |  119 +-
swift/obj/ssync_sender.py                          |   60 +-
swift/obj/watchers/__init__.py                     |    0
swift/obj/watchers/dark_data.py                    |  146 ++
swift/proxy/controllers/base.py                    |  183 +-
swift/proxy/controllers/container.py               |  259 ++-
swift/proxy/controllers/obj.py                     |   48 +-
swift/proxy/server.py                              |   27 +-
test-requirements.txt                              |    1 -
test/__init__.py                                   |    2 +-
test/cors/README.rst                               |  122 ++
test/cors/harness.js                               |  258 +++
test/cors/index.html                               |   44 +
test/cors/main.py                                  |  324 ++++
test/cors/test-account.js                          |   16 +
test/cors/test-container.js                        |  148 ++
test/cors/test-info.js                             |   60 +
test/cors/test-large-objects.js                    |   93 +
test/cors/test-object.js                           |  169 ++
test/cors/test-s3-obj.js                           |  218 +++
test/cors/test-symlink.js                          |  139 ++
test/cors/vendor/aws-sdk-2.829.0.min.js            |   10 +
test/debug_logger.py                               |  212 +++
test/functional/__init__.py                        |   10 +-
test/functional/s3api/test_multi_upload.py         |   24 +-
test/functional/s3api/test_object.py               |   26 +-
test/functional/s3api/utils.py                     |    5 +-
test/functional/swift_test_client.py               |    7 +-
test/functional/test_object.py                     |    4 +-
test/functional/test_object_versioning.py          |   93 +-
test/functional/test_slo.py                        |   95 +-
test/functional/test_staticweb.py                  |   17 +-
test/functional/test_symlink.py                    |   16 +-
test/probe/common.py                               |  151 +-
test/probe/test_container_merge_policy_index.py    |    4 +-
test/probe/test_dark_data.py                       |  183 ++
test/probe/test_object_expirer.py                  |   64 +
test/probe/test_object_handoff.py                  |    4 +-
test/probe/test_object_partpower_increase.py       |   17 +-
test/probe/test_reconstructor_rebuild.py           |  103 +-
test/probe/test_reconstructor_revert.py            |  209 ++-
test/probe/test_replication_servers_working.py     |   10 +
test/probe/test_sharder.py                         |  722 +++++++-
test/probe/test_signals.py                         |   18 +-
test/s3api/test_versioning.py                      |   24 +-
test/unit/__init__.py                              |  252 +--
test/unit/account/test_backend.py                  |    8 +-
test/unit/cli/test_container_deleter.py            |   16 +-
test/unit/cli/test_manage_shard_ranges.py          |  820 ++++++++-
test/unit/cli/test_relinker.py                     | 1238 +++++++++++--
.../common/middleware/crypto/crypto_helpers.py     |    4 +-
test/unit/common/middleware/helpers.py             |   39 +-
test/unit/common/middleware/s3api/__init__.py      |   14 +-
test/unit/common/middleware/s3api/test_acl.py      |    5 +-
test/unit/common/middleware/s3api/test_bucket.py   |   23 +
.../common/middleware/s3api/test_multi_delete.py   |   46 +-
.../common/middleware/s3api/test_multi_upload.py   |  188 +-
test/unit/common/middleware/s3api/test_obj.py      |  175 +-
test/unit/common/middleware/s3api/test_s3api.py    |  158 +-
.../unit/common/middleware/s3api/test_s3request.py |  437 ++++-
.../common/middleware/s3api/test_s3response.py     |    2 +
test/unit/common/middleware/s3api/test_s3token.py  |    4 +
test/unit/common/middleware/s3api/test_utils.py    |   43 +
test/unit/common/middleware/test_copy.py           |    5 +-
test/unit/common/middleware/test_dlo.py            |   57 +-
test/unit/common/middleware/test_keystoneauth.py   |   63 +-
test/unit/common/middleware/test_memcache.py       |   39 +
.../common/middleware/test_object_versioning.py    |   44 +-
test/unit/common/middleware/test_proxy_logging.py  |  160 +-
test/unit/common/middleware/test_recon.py          |   90 +
test/unit/common/middleware/test_slo.py            |  444 ++++-
test/unit/common/middleware/test_symlink.py        |   18 +-
test/unit/common/middleware/test_tempauth.py       |   62 +-
test/unit/common/ring/test_builder.py              |    5 +
test/unit/common/ring/test_ring.py                 |   26 +-
test/unit/common/test_db.py                        |   89 +-
test/unit/common/test_direct_client.py             |   65 +-
test/unit/common/test_internal_client.py           |    1 +
test/unit/common/test_manager.py                   |  273 ++-
test/unit/common/test_memcached.py                 |  186 +-
test/unit/common/test_request_helpers.py           |   64 +
test/unit/common/test_utils.py                     |  553 +++++-
test/unit/common/test_wsgi.py                      |   58 +-
test/unit/container/test_backend.py                |  161 +-
test/unit/container/test_server.py                 |  180 +-
test/unit/container/test_sharder.py                | 1848 ++++++++++++++++---
test/unit/obj/common.py                            |   16 +-
test/unit/obj/test_auditor.py                      |  253 ++-
test/unit/obj/test_diskfile.py                     |  528 +++++-
test/unit/obj/test_expirer.py                      |   34 +
test/unit/obj/test_reconstructor.py                |  305 ++--
test/unit/obj/test_replicator.py                   |   17 +-
test/unit/obj/test_server.py                       |  301 +++-
test/unit/obj/test_ssync.py                        |  103 +-
test/unit/obj/test_ssync_receiver.py               |  414 ++++-
test/unit/obj/test_ssync_sender.py                 |  267 ++-
test/unit/proxy/controllers/test_base.py           |  117 +-
test/unit/proxy/controllers/test_container.py      |  959 +++++++++-
test/unit/proxy/controllers/test_obj.py            |  245 ++-
test/unit/proxy/test_server.py                     |  123 +-
tools/playbooks/common/install_dependencies.yaml   |   23 +-
tools/playbooks/cors/install_selenium.yaml         |   30 +
tools/playbooks/cors/post.yaml                     |   38 +
tools/playbooks/cors/run.yaml                      |   15 +
tools/playbooks/multinode_setup/make_rings.yaml    |    2 +
.../saio_single_node_setup/add_s3api.yaml          |    8 +
.../saio_single_node_setup/make_rings.yaml         |    7 +-
tools/test-setup.sh                                |   12 +
tox.ini                                            |   36 +-
221 files changed, 20342 insertions(+), 5004 deletions(-)


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

diff --git a/test-requirements.txt b/test-requirements.txt
index 085bd3b0e..862a0e921 100644
--- a/test-requirements.txt
+++ b/test-requirements.txt
@@ -15 +14,0 @@ python-keystoneclient!=2.1.0,>=2.0.0 # Apache-2.0
-python-openstackclient>=3.12.0






More information about the Release-announce mailing list