2023.1 Series Release Notes

3.9.0

New Features

  • Now tested under Python 3.8.

Bug Fixes

  • Better clean up connections when using the low-level client.py API.

  • Fixed a display issue when swift delete made multiple attempts to bulk delete objects.

3.8.1

Bug Fixes

  • Deleting or overwriting a symlink to an SLO or DLO will no longer attempt to clean up the large object’s segments.

  • Fixed an issue sending non-ASCII metadata keys on Python 3. Note that receiving such metadata on py3 is still broken.

Other Notes

  • Documentation can now be rendered as a PDF.

  • Dropped Python 3.5 testing.

3.8.0

New Features

  • Added a new --json option to swift list.

Bug Fixes

  • Fixed an issue introduced in 3.5.0 where re-uploading an SLO with the same size, mtime, and segment size would delete all of the just-uploaded segments.

3.7.0

Bug Fixes

  • Added the delimiter keyword parameter to get_account() to match the functionality of get_container().

  • Fixed an issue in the client module where socket connections weren’t closed properly before being dereferenced.

  • Various other minor bug fixes and improvements.

3.6.0

New Features

  • Add the --prompt option for the CLI which will cause the user to be prompted to enter a password. Any password otherwise specified by --key , --os-password or an environment variable will be ignored.

  • Added bash completion support to the swift CLI. Enable this by sourcing the included tools/swift.bash_completion file. Make it permanent by including this file in the system’s /etc/bash_completion.d directory.

  • Add ability to generate a temporary URL with an IP range restriction. TempURLs with IP restrictions are supported are Swift 2.19.0 or later.

  • The client.py SDK now supports a query_string option on the head_object() method. This is useful for finding information on SLO/DLO manifests without fetching the entire manifest.

  • The client.py SDK now respects region_name when using sessions.

  • Added a .close() method to an object response, allowing clients to give up on reading the rest of the response body, if they so choose.

  • Fixed a bug where using --debug in the CLI with unicode account names would cause a client crash.

  • Make OS_AUTH_URL work in DevStack (for testing) by default.

  • Dropped Python 3.4 testing.

  • Various other minor bug fixes and improvements.

3.5.0

New Features

  • Allow for object uploads > 5GB from stdin.

    When uploading from standard input, swiftclient will turn the upload into an SLO in the case of large objects. By default, input larger than 10MB will be uploaded as an SLO with 10MB segment sizes. Users can also supply the --segment-size option to alter that threshold and the SLO segment size. One segment is buffered in memory (which is why 10MB default was chosen).

  • The --meta option can now be set on the upload command.

  • Updated PyPy test dependency references to be more accurate on different distros.

3.4.0

New Features

  • The swift CLI now supports streaming from stdin. If “-” is given as the source, the object content is read from stdin. The --object-name must be given when content is loaded from stdin.

  • Tolerate RFC-compliant ETags returned from the server.

  • Skip checksum validation on partial downloads.

  • Buffer reads from disk, resulting in much faster upload throughput.

  • Added support for ISO 8601 timestamps for tempurl, matching the feature in Swift 2.13.0.

  • Added an option to ignore mtime metadata entry (--ignore-mtime).

  • When using SwiftService to delete many objects, the bulk delete page size will now be respected. Previously, exceeding this limit would prevent any objects from being deleted.

  • Expose –prefix as an option for st_delete.

  • Imported docs content from openstack-manuals project.

  • Various other minor bug fixes and improvements.

3.2.0

New Features

  • Added Keystone session support and a “v1password” plugin for Keystone. This plugin provides a way for Keystone sessions (and clients that use them, like python-openstackclient) to communicate with old auth endpoints that still use this mechanism.

  • HEAD, GET, and DELETE now support sending additional headers to match existing functionality on PUT requests.

  • Various other minor bug fixes and improvements.

3.1.0

New Features

  • Added a copy object method.

  • Arbitrary query strings can now be passed into container functions.

  • Client certificate and key can now be specified via CLI options (–os-cert/–os-key) or environment variables ($OS_CERT/$OS_KEY).

  • A new CLI option –ignore-checksum can be specified to turn off checksum validation. In the SDK, the new checksum=True parameter can be used for the same purpose.

  • Added –json option to swift capabilities / swift info

  • Default to v3 auth if we find a (user|project)-domain-(name|id) option.

  • Added a Python version constraint of >= Py27.

  • client.py will now retry on a 401 (auth error) even if retries is set to zero.

  • Fixed swift download when marker was specified.

  • Object segments uploaded via swiftclient are now given the content type “application/swiftclient-segment”.

  • “Directory marker” objects are now given a “application/directory” content type to match both Swift’s staticweb feature and other ecosystem tools.

  • Strip leading/trailing whitespace from headers (otherwise, new versions of the requests library will raise an InvalidHeader error). Additionally, header values with standard types (integer, float, or bool) are coerced to strings before being sent to a socket.

  • Non-python dependencies are now specified in bindep.txt. Currently this only lists a single dependency for testing (PyPy), but if future dependencies are added, they will be included in this file.

  • Client exceptions now include response headers. One benefit is that this allows clients to see transaction IDs without needing to turn on debug logging.

  • Client connections now accept gzip-encoded responses.

  • Various other minor bug fixes and improvements.