We exuberantly announce the release of: cinder 15.4.0: OpenStack Block Storage This release is part of the train stable release series. The source is available from: https://opendev.org/openstack/cinder Download the package from: https://tarballs.openstack.org/cinder/ Please report issues through: https://bugs.launchpad.net/cinder/+bugs For more details, please see below. 15.4.0 ^^^^^^ Prelude ******* The Cinder project team would like to point out some issues addressed by this release: * The online data migrations for Train have been updated to address an upgrade issue (Bug #1893107 (https://bugs.launchpad.net/cinder/+bug/1893107)). The issue does not manifest itself in the Train release of cinder, but under specific circumstances it can prevent a cinder database upgrade from Train to Ussuri. See the "Upgrade Notes" and "Bug Fixes" sections below for more information. * This release improves the handling of the "__DEFAULT__" volume- type (see "Other Notes", below) and fixes Bug #1879578 (https://bugs.launchpad.net/cinder/+bug/1879578), in which the default type was applied too aggressively (see the discussion of this issue in "Bug Fixes", below). * Operators affected by OSSN-0086 (https://wiki.openstack.org/wiki/OSSN/OSSN-0086) should note that this release updates the os-brick library used by cinder to version 2.10.5 in order to address an issue associated with the previous fixes for Bug #1823200 (https://bugs.launchpad.net/cinder/+bug/1823200). Known Issues ************ * HPE 3PAR driver now supports networks with duplicated FQDNs via configuration option *unique_fqdn_network* so attaching in these networks will work (bug #1834695). Upgrade Notes ************* * The "default_volume_type" configuration option is now required to have a value. The default value is "__DEFAULT__", so you should see no change in behavior whether or not you have set a value for "default_volume_type". See Bug #1886632 (https://bugs.launchpad.net/cinder/+bug/1886632) for more information about this change. * This release modifies the online database migrations to address an an upgrade issue (Bug #1893107 (https://bugs.launchpad.net/cinder/+bug/1893107)). The issue does not manifest itself in the Train release of cinder, but under specific circumstances it can prevent a cinder database upgrade from Train to Ussuri. This upgrade notice applies to you only if **all** of the following conditions are met: 1. You upgraded to Train from Stein 2. Before upgrading from Stein, you did **not** purge the cinder database 3. Your original upgrade from Stein was to cinder version 15.3.0 or earlier. Note: If you are upgrading a Stein installation directly to this release (cinder 15.4.0) or later, this notice does *not* apply to you. If all the above three items apply to you, as part of your upgrade to cinder 15.4.0 you should re-run the online database migrations contained in this release. This will prepare your cinder database for an eventual upgrade to the Ussuri release. Note: The online database migrations in this release require the existence of a volume type named "__DEFAULT__". A "__DEFAULT__" volume type was created as part of your original installation of/upgrade to a Train release of cinder. If you have renamed (or renamed and deleted) the "__DEFAULT__" volume type, you must re- create it before running the online migrations. (If you renamed it, you don't have to un-rename it; you can create a new one just for the purposes of the online database migration.)If necessary, you can create a new "__DEFAULT__" volume type as follows using the Block Storage API, or by using the python-cinderclient or python-openstackclient to do the equivalent:API request: "POST /v3/{project_id}/types"Request body: { "volume_type": { "name": "__DEFAULT__", "description": "Default Volume Type", "os-volume-type-access:is_public": true } } The "__DEFAULT__" volume type may safely be renamed (or renamed and deleted) after you have run the online migrations as long as the "default_volume_type" configuration option is set to a valid existing volume type. * This release updates the os-brick library used by Cinder to version 2.10.5 to correct hopefully the final problem with the fix for Bug #1823200 (https://bugs.launchpad.net/cinder/+bug/1823200) in the previous os-brick release. See the os-brick 2.10.5 release notes (https://docs.openstack.org/releasenotes/os- brick/train.html#relnotes-2-10-5-stable-train) for more information. Bug Fixes ********* * Bug #1886632 (https://bugs.launchpad.net/cinder/+bug/1886632): The system defined "__DEFAULT__" volume type is now treated as a regular volume-type and may be updated or deleted. Since the configured "default_volume_type" cannot be deleted, however, the "__DEFAULT__" volume type may not be deleted if it is the value of that configuration option. * Fix *UnboundLocalError* on the Brocade lookup driver on southbound client creation failure during the device mapping retrieval (Bug #1888550). * Add Python 3 support to the Brocade Zone Manager driver. (bug #1888548). * Fix *AttributeError* on the Brocade ZM driver when using setting REST_HTTP or REST_HTTPS as the fc_southbound_protocol option and an exception is raised by the client (Bug #1866860). * NetApp SolidFire driver: Fixed an issue that causes failback to fail after a volume service restart. This change fixes bug 1859653 (https://bugs.launchpad.net/cinder/+bug/1859653). * Cinder no longer allows an incremental backup to be created while having the parent backup in another project. * Fix volume migration fails in the same ceph RBD pool. Bug 1871524. * Fix bug #1874134 (https://bugs.launchpad.net/cinder/+bug/1874134), allowing an iSCSI or FCP volume to be extended to a size up to 16TB regardless of its original size, even if it's attached to an instance. * Bug #1875570 (https://bugs.launchpad.net/cinder/+bug/1875570): Fixed issue with NFS backend where the image-volume cache was never used to create a volume, even when the cache was enabled. * Bug #1879578 (https://bugs.launchpad.net/cinder/+bug/1879578): A regression in the Train release caused Cinder to assign the default volume type too aggressively when a volume type was not specified in a volume-create request. As a result, some alternative methods of specifying the volume type were ignored and the default type (either configured by the operator or the system default) would be assigned. This release restores the intended behavior, which is described as follows: If a "volume_type" is not specified when a volume is created, Cinder tries to infer the volume type from other information in the volume- create request: * if a "source_volid" is supplied in the request, the volume type is inferred from the source volume's volume type * if a "snapshot_id" is supplied in the request, the volume type is inferred from the volume type associated with the snapshot * if an "imageRef" is supplied in the request, and the image has a "cinder_img_volume_type" image property, the volume type is inferred from the value of that image property Otherwise, the volume type is the default volume type configured by the operator, and if no volume type is so configured, the volume type is the system default volume type, namely, "__DEFAULT__". When a volume type is specified explicitly in a volume-create call, Cinder will use the specified type. If the specified type cannot be assigned due to a conflict with other parameters in the volume- create call, however, the call will result in a 400 (Bad Request) response. * Bug #1893107 (https://bugs.launchpad.net/cinder/+bug/1893107): The Ussuri release changes the cinder database schema to make the "volume_type_id" column in the "volumes" and "snapshots" tables non- nullable because all volumes have been required to have a volume type since the Train release. The online database migration in the cinder Train series (release 15.3.0 or earlier), however, did not process soft-deleted rows, leaving the possibility that there could be a deleted volume or snapshot with a null "volume_type_id", which in turn will make the database upgrade fail when the non-nullability constraint cannot be applied when a Train installation is upgraded to Ussuri. If you are upgrading to this release from an earlier release in the Train series (that is, you are upgrading from cinder>=15.0.0,<=15.3.0), under specific circumstances you should re-run the online database migrations so that your database will be in the correct state when you eventually upgrade to a Ussuri release. See the "Upgrade Notes" for more information. * Bug #1873738 (https://bugs.launchpad.net/cinder/+bug/1873738): RBD Driver: Added cleanup for residue destination file if the copy image to encrypted volume operation fails. * Fix HPE 3PAR driver issue where volumes that were live migrated to it would end up being inaccessible. We would no longer be able to use the volume for any operation, such as attach, detach, delete, snapshot, etc. (bug 1697422) * Fix "unique_fqdn_network" configuration option for the Kaminario driver, as it was being ignored when defined in the driver section, which used to work. (Bug #1886042). * NetApp ONTAP: Fixes bug 1839384 Detaching any instance from multiattached volume terminates connection. Now the connection is terminated only if there're no other instances using the same initiator. * Fix revert to snapshot not working for non admin users when using the snapshot's name (bug #1889758). Other Notes *********** * Beginning with the Train release, untyped volumes (that is, volumes with no volume-type) have been disallowed. To facilitate this, a "__DEFAULT__" volume-type was included as part of the Train database migration. In this release, handling of the default volume-type has been improved: * The "default_volume_type" configuration option is required to have a value. The default value is "__DEFAULT__". * A request to delete the currently configured "default_volume_type" will fail. (You can delete that volume- type, but you cannot do it while it is the value of the configuration option.) * There must always be at least one volume-type defined in a Cinder installation. This is enforced by the type-delete call. * If the "default_volume_type" is misconfigured (that is, if the value refers to a non-existent volume-type), requests that rely on the default volume-type (for example, a volume-create request that does not specify a volume-type) will result in a HTTP 500 response. Changes in cinder 15.3.0..15.4.0 -------------------------------- 58f0e7379 Add general release note for 15.4.0 e62ac1808 Modify default/delete volume type logic 54433cb8c Fix revert to snapshot for non admins 9e3e2ab25 Require os-brick >= 2.10.5 00ac80bba Include deleted volumes for online data migrations 49b0c5ec6 Fix rekeying volume with legacy encryption provider 9c13d7706 Brocade: Fix lookup UnboundLocalError b70e6a337 Brocade: Fix AttributeError when raising exception 7a9bc8434 Brocade: Python 3 support 193f3e97c Creating image-volume cache on NFS backend fails 48774c89a RBD: Cleanup temporary file during exception b8138986a zuul: collect cinderlib logs from tempest node(s) only 039b2bfd6 Kaminario: Fix unique_fqdn_network option 5122b1465 Default volume_type set too early d77377c23 Disable siblings for the cinderlib functional tests f3cdc2756 Fix cross-project incremental backups 4cf0d1124 HPE 3PAR: Support duplicated FQDN in network f13475f71 NetApp ONTAP: Fix extend volume for iSCSI/FCP d10df8c00 Native Zuul v3 cinder-grenade jobs fc59ea9e6 Port several legacy tempest jobs to Zuul v3 cfde6bd1c 3PAR: Fix live migration eec1b9217 NetApp SolidFire: Fix failback failing after service restart a11460f36 Fix volume migration fails in the same ceph RBD pool b9c6d4a7f NetApp ONTAP: Fix iSCSI multiattach volume terminates connection 257c1c16f Fix revert snapshot issue 20a55fc0c PowerMax Driver - PowerMax Pools Fix Diffstat (except docs and test files) ------------------------------------- .zuul.yaml | 141 ++++-- cinder/api/contrib/types_manage.py | 10 +- cinder/api/v2/volumes.py | 17 +- cinder/api/v3/volumes.py | 19 +- cinder/backup/api.py | 5 +- cinder/common/config.py | 2 + cinder/db/api.py | 4 +- cinder/db/sqlalchemy/api.py | 15 +- cinder/exception.py | 16 +- cinder/image/image_utils.py | 4 + cinder/objects/backup.py | 6 +- cinder/opts.py | 1 + cinder/test.py | 22 + .../drivers/dell_emc/powermax/powermax_data.py | 4 + .../dell_emc/powermax/test_powermax_common.py | 68 +-- .../dell_emc/powermax/test_powermax_masking.py | 21 + .../unit/volume/drivers/ibm/test_storwize_svc.py | 63 +++ .../netapp/dataontap/client/test_client_base.py | 157 ++++++- .../netapp/dataontap/client/test_client_cmode.py | 2 + .../unit/volume/drivers/netapp/dataontap/fakes.py | 26 ++ .../drivers/netapp/dataontap/test_block_base.py | 188 ++++++-- .../drivers/netapp/dataontap/test_block_cmode.py | 4 +- .../volume/drivers/solidfire/test_solidfire.py | 48 +- .../unit/volume/flows/api/test_create_volume.py | 207 +++++++++ .../unit/volume/flows/test_create_volume_flow.py | 144 +++--- .../zonemanager/test_brcd_fc_san_lookup_service.py | 10 + .../unit/zonemanager/test_brcd_fc_zone_driver.py | 137 +++--- .../zonemanager/test_brcd_http_fc_zone_client.py | 7 + .../zonemanager/test_brcd_rest_fc_zone_client.py | 297 +++++++++++++ cinder/volume/api.py | 7 +- cinder/volume/driver.py | 12 + cinder/volume/drivers/dell_emc/powermax/common.py | 116 ++--- cinder/volume/drivers/dell_emc/powermax/fc.py | 3 +- cinder/volume/drivers/dell_emc/powermax/iscsi.py | 3 +- cinder/volume/drivers/dell_emc/powermax/masking.py | 2 +- cinder/volume/drivers/dell_emc/powermax/utils.py | 17 +- cinder/volume/drivers/hpe/hpe_3par_common.py | 337 +++++++++----- cinder/volume/drivers/hpe/hpe_3par_fc.py | 4 +- cinder/volume/drivers/hpe/hpe_3par_iscsi.py | 12 +- .../ibm/storwize_svc/storwize_svc_common.py | 39 +- .../volume/drivers/kaminario/kaminario_common.py | 11 +- .../volume/drivers/netapp/dataontap/block_base.py | 41 +- .../volume/drivers/netapp/dataontap/block_cmode.py | 2 +- .../volume/drivers/netapp/dataontap/client/api.py | 6 + .../drivers/netapp/dataontap/client/client_base.py | 55 ++- .../netapp/dataontap/client/client_cmode.py | 2 + cinder/volume/drivers/rbd.py | 33 +- cinder/volume/drivers/remotefs.py | 3 +- cinder/volume/drivers/solidfire.py | 84 ++-- cinder/volume/flows/api/create_volume.py | 49 ++- cinder/volume/volume_types.py | 54 ++- cinder/volume/volume_utils.py | 1 + .../drivers/brocade/brcd_fc_san_lookup_service.py | 1 + .../drivers/brocade/brcd_fc_zone_driver.py | 13 +- .../drivers/brocade/brcd_http_fc_zone_client.py | 2 +- .../drivers/brocade/brcd_rest_fc_zone_client.py | 2 +- .../block-storage/drivers/hpe-3par-driver.rst | 28 ++ lower-constraints.txt | 2 +- playbooks/cinderlib-run.yaml | 49 --- .../cinder-tempest-dsvm-lvm-lio-barbican/post.yaml | 15 - .../cinder-tempest-dsvm-lvm-lio-barbican/run.yaml | 88 ---- playbooks/post-cinderlib.yaml | 6 + playbooks/tempest-and-cinderlib-run.yaml | 14 +- ...deleting-__DEFAULT__-type-d35dfb5d89760b9b.yaml | 38 ++ ...ade_looup_fail_get_client-179151d449a34aa4.yaml | 5 + .../notes/brocade_py3-15647dbe3981d44b.yaml | 5 + .../brocade_rest_client-202cfd474c96d3fe.yaml | 6 + ...ver-after-service-restart-77e5e4da45c9c1aa.yaml | 6 + ...746-cross-project-incremental-backup-error.yaml | 6 + .../notes/bug-1871524-5f6df9a61bf6b775.yaml | 5 + ...ONTAP-fix-max-resize-size-ad2d88da8721560e.yaml | 6 + ...70-nfs-image-volume-cache-c45e840a6ec2a702.yaml | 6 + ...78-volume_type-regression-de82f4152c7b2f77.yaml | 33 ++ .../notes/bug-1893107-train-45bb91952c3170e1.yaml | 78 ++++ ...-file-during-convert-fail-3848e9dbe7e15fc6.yaml | 6 + .../fix-3par-live-migration-0065bd2626fdb4a1.yaml | 7 + ...nario-unique_fqdn_network-ecde36f614c30733.yaml | 7 + ...r-support-duplicated-fqdn-751ad1dbcd137fbb.yaml | 7 + ...ap-fix-detach-multiattach-d99d33dff2fefb4c.yaml | 7 + .../notes-for-15.4.0-release-98b7a0f6834ae2ba.yaml | 37 ++ ...revert-snapshot-non-admin-8485be55060eab0d.yaml | 5 + requirements.txt | 2 +- 101 files changed, 3090 insertions(+), 996 deletions(-) Requirements updates -------------------- diff --git a/requirements.txt b/requirements.txt index 3f8c9bac9..3bd2ee40e 100644 --- a/requirements.txt +++ b/requirements.txt @@ -61 +61 @@ oslo.vmware>=2.17.0 # Apache-2.0 -os-brick>=2.10.4 # Apache-2.0 +os-brick>=2.10.5 # Apache-2.0