We joyfully announce the release of: glance 20.1.0: OpenStack Image Service This release is part of the ussuri stable release series. The source is available from: https://opendev.org/openstack/glance Download the package from: https://tarballs.openstack.org/glance/ Please report issues through: https://bugs.launchpad.net/glance/+bugs For more details, please see below. 20.1.0 ^^^^^^ Bug Fixes * A change was added to the import API which provides time-based locking of an image to exclude other import operations from starting until the lock-holding task completes (see Bug 1884596). The lock is based on the task that we start to do the work, and the UUID of that task is stored in the "os_glance_import_task" image property, which indicates who owns the lock. If the task holding the lock fails to make progress for 60 minutes, another import operation will be allowed to steal the lock and start another import operation. (https://bugs.launchpad.net/glance/+bug/1884596) Changes in glance 20.0.1..20.1.0 -------------------------------- 9d98f2f1 Make test-setup.sh compatible with mysql8 e87d3fbb Add housekeeping module and staging cleaner 54060e8b Make functional tests set node_staging_uri cc22468d Drop lower-constraints jobs 977ce4d7 Fix a failure to parse json file 3880298a Add a release note about import locking 5b681da1 Cleanup import status information after busting a lock 03a11dbb Add ImageLock to base flow checks 6c8f1e81 Functional test enhancement for lock busting 7ba0762d Add functional test for task status updating bb573185 Handle atomic image properties separately beece27e Move SynchronousAPIBase to a generalized location 173fdb19 Add FakeData generator test utility 28773650 Fix metadefs for compute-watchdog 055e5e79 Implement time-limited import locking 5998933a Add context.elevated() helper for getting admin privileges ebeb31e6 Poll for final state on test_copy_image_revert_lifecycle() 541c0fd6 Fix non-deterministic copy_image_revert_lifecycle test 2d5e8439 Fix import failure status reporting when all_stores_must_succeed=True 931d39ec Functional reproducer for bug 1891352 3da696e0 Update task message during import 586ca78a Heartbeat the actual work of the task 825a0ec7 Add image_delete_property_atomic() helper 56d01f25 Add image_set_property_atomic() helper 663e027e Flesh out FakeImage for extra_properties ec46cbca Add tests for _ImportToStore.execute() ea34be42 Add testing for _CompleteTask in api_image_import 0895d191 Make test_copy_image_revert_lifecycle handle 409 on import retry eb08fbae Make import task capable of running as admin on behalf of user 168fdb7f Add a functional test for non-owned image copying 3bf1af9b Refactor common auth token code in images test bc826947 Add a test to replicate the owner-required behavior of copy-image Diffstat (except docs and test files) ------------------------------------- .zuul.yaml | 3 - etc/metadefs/compute-vmware.json | 2 +- etc/metadefs/compute-watchdog.json | 9 +- glance/api/v2/images.py | 138 +++- glance/async_/flows/api_image_import.py | 467 ++++++++++--- glance/common/exception.py | 4 + glance/common/scripts/image_import/main.py | 8 +- glance/common/scripts/utils.py | 97 +++ glance/common/wsgi.py | 8 +- glance/common/wsgi_app.py | 28 + glance/context.py | 14 + glance/db/__init__.py | 13 +- glance/db/simple/api.py | 41 +- glance/db/sqlalchemy/api.py | 119 +++- glance/domain/proxy.py | 10 + glance/housekeeping.py | 126 ++++ .../functional/v2/test_images_import_locking.py | 288 ++++++++ .../unit/async_/flows/test_api_image_import.py | 749 ++++++++++++++++++++- .../unit/common/scripts/image_import/test_main.py | 26 + .../unit/common/scripts/test_scripts_utils.py | 80 +++ lower-constraints.txt | 143 ---- .../import-locking-behavior-901c691f3839fe0a.yaml | 14 + tools/test-setup.sh | 4 +- tox.ini | 6 - 37 files changed, 3576 insertions(+), 392 deletions(-)