This patch addresses the scenario where an
incremental backup can be created having a
parent backup that was taken in a different
project. This scenario ultimately leads to
a silent error when creating/deleting the
incremental backup and quotas going out of
sync.
The proposed fix is to narrow the backup search
down to the same project. To achieve this, a
method's signature had to be updated to achieve
the desired optimized behavior of passing the
volume's project_id parameter.
Closes-bug: #1869746
Closes-bug: #1873518
conflicts:
cinder/tests/unit/backup/test_backup.py
Test test_create_backup_failed_with_empty_backup_objects
required a mock for
test_create_backup_failed_with_empty_backup_objects
which had been removed in ussuri, as part of commit
f0211b53b8. That
commit removed code and leftover the mock, which I
had removed in the change this patch was
cherry-picked from, as it was unnecessary.
The removed code section of cinder/backup/api.py
from commit f0211b53b8
does not impact the functionality of this change at all.
Change-Id: Icb621ff5966133f59d9d43ca2dd9f8e1919b1149
(cherry picked from commit 8ebeafcbba)
(cherry picked from commit 5358c996b4)
Specialize the grenade-multinode job and test the variations
on upgrade where a few services are available on the subnode only
(c-bak only, c-bak+c-vol, c-bak+c-sch+c-vol).
This backport does not switch to grenade in place of grenade-py3,
as Python 2 is supported on this branch and both version of
the grenade job are needed. It switched from neutron-grenade
to grenade, though.
Conflicts:
.zuul.yaml
(due to some expected changes in the job structure.)
Depends-On: https://review.opendev.org/548936
Change-Id: I3eac1afcbb69e25e9b2a916910caf3291aa7c1fe
(cherry picked from commit 6c1e52cefc)
(cherry picked from commit cf5eaae596)
- cinder-tempest-lvm-multibackend is the simple LVM multibackend job
and replaces legacy-tempest-dsvm-lvm-multibackend.
- remove legacy-tempest-dsvm-zeromq-multibackend, as ZeroMQ
support was deprecated in Rocky and removed in Stein.
It could be replaced by inheriting from
cinder-tempest-lvm-multibackend in older branches
when this patch is backported;
- replace cinder-tempest-dsvm-lvm-lio-barbican with
cinder-tempest-dsvm-lvm-lio-barbican provided by
cinder-tempest-plugins;
- replace legacy-tempest-dsvm-full-devstack-plugin-nfs with
devstack-plugin-nfs-tempest-full, now provided by
devstack-plugin-nfs;
- update cinder-plugin-ceph-tempest to also run cinderlib tests.
Conflicts:
.zuul.yaml
playbooks/legacy/cinder-tempest-dsvm-lvm-lio-barbican/run.yaml
- .zuul.yaml in master contains new jobs (for example, the imported legacy
grenade jobs, which haven't been backported so far);
- the only change in cinder-tempest-dsvm-lvm-lio-barbican (removed by this
change) is the switch to Python 3.
Depends-On: https://review.opendev.org/738078
Change-Id: Icdafaf55494b6dd74ec31c3572d7344fcc028166
(cherry picked from commit 9ab1ff0059)
The previous version contained a regression that affected operation
when running under Python 2.7 while using the Dell EMC VxFlex OS
(ScaleIO) storage backend.
Change-Id: Ib2ae9b847b2966d84e33f530e5fd2b46fc755a27
After live migrating a volume into the 3PAR driver the volume would be
unusable. And we would no longer be able to do any operation with it.
Migrated in-use volumes cannot be renamed when migrated and therefore
need to use the "_name_id" field of the Volume object (volumes table in
the DB) to store the original volume's ID so the driver can locate the
volume.
The problem is that, even though the 3PAR driver sets the "_name_id"
field, it doesn't use it for any operation, so once the volume has been
migrated and the ID of the volume no longer matches the one that was
used to create the volume (value now in "_name_id") it will no longer be
able to locate the volume.
This patch adds the logic necessary to locate volumes using the
"_name_id" field.
Closes-Bug: #1697422
Change-Id: I27b9d4be419e1b52db02d4525b292ceeb5d5f867
(cherry picked from commit fc51678298)
VxFlex OS password is not stored in block_device_mapping table. Instead of this
passwords are stored in separate file and are retrieved during each attach/detach
operation.
Closes-Bug: #1823200
Change-Id: Ie9c41f37ab5c186b9f9aa92539a363d0b2388035
After migrating a volume, if the original and new volumes are on
the same 3PAR backend, then the volume names are swapped. However,
if the original volume is not in the same 3PAR backend, the new
volume is renamed to the original volume's name.
Closes-Bug: 1858119
Change-Id: I1f9d4143d1ad2637a2173090b290f6f96b64c492
(cherry picked from commit d8062063a3)
(cherry picked from commit 780986481b)
Conflicts:
cinder/tests/unit/volume/drivers/hpe/test_hpe3par.py
When the driver is trying to perform a flexclone from glance is
making a bad reference to a non-existent methond utils.resolve_hostname
the correct method is volume_utils.resolve_hostname
Change-Id: I5cd729bdd1fb97b07610b1971232c786bad7917d
Closes-Bug: #1875959
(cherry picked from commit 2da53ac02b)
(cherry picked from commit f248f73e0b)
This adds a warning message to the driver documentation page to make
sure it is visible that this config option should not be used due to
security concerns. We can't backport the deprecation of the config
option, but we can backport this doc warning to help prevent this option
from being used.
Also includes part of a squash for the release note from:
Deprecate rbd_keyring_conf option
Change-Id: I345a3b4bf3b328b0e547016f481518d252f734b9
Related-bug: #1849624
Change-Id: Ief2c868d6a9baf6793cd9070a4451835a90752aa
Signed-off-by: Sean McGinnis <sean.mcginnis@gmail.com>
(cherry picked from commit 0f7a3ddd3c)
After a successful failover, if the volume service was restarted,
the driver wouldn't be able to failback to the primary cluster
due to incomplete cluster data.
This patch address this problem by gathering data from the
primary cluster during the failback procedure.
Change-Id: I796fcf8969adae3338861a1b2f3310fafcacfbcb
Closes-bug: #1859653
(cherry picked from commit f24eb2fc63)
When detaching a volume from an instance, NetApp ONTAP driver terminates
the iSCSI connection, even if there're other connections to the LUN from
the same initiator. This terminates connections to the LUN from other
instances running on the same host.
This patch fixes this bug by leaving the connection untouched if there
are other connections from the same initiator. Now the connection is
terminated only if it's the last one from the same initiator.
Change-Id: I0b8b5930c9e8f3c049b82e92c5fb7b05d6ae9291
Closes-Bug: #1839384
(cherry picked from commit e27d83f4d0)
(cherry picked from commit 87b933db77)
While there is a related fcmap stays in 100% copying clone state,
and this volume act as target volume in fcmap relationship,
revert snapshot will fail. This fix will stop 100% copying clone
fcmap, then let revert snapshot go.
Closes-bug: #1863070
Change-Id: I6b5f6396ad5524f4086ce5192e32fd5e7fee58a2
(cherry picked from commit 9b4321f846)
If the volumetype(s) used in group operations does not capture
the array serial_number an exception is thrown. This is only a
factor when consistent_group_snapshot_enabled <is> True.
The fix requires getting the array serial_number from the conf file.
Closes-Bug: #1866871
Change-Id: Ia2fa7cb7b47ae45564e4eef7f0ed62c9830fd47d
(cherry picked from commit d2d7aed475)
The method get_internal_tenant_context miss the overwrite
parameter in RequestContext.
Ref patch: https://review.opendev.org/#/c/247102/.
Change-Id: I47c57254adeee065600b7f0db95bee1f813463bf
Closes-Bug: #1869160
(cherry picked from commit 5da7d449a2)
Nimble Storage cinder driver had been marked as unsupported due to lack
of external CI running log. CI system is up
and running, updating it to be supported
Change-Id: I9c22c5f224a510e125b1dd82441eb1d63a8728f3
Signed-off-by: Raunak Kumar <rkumar@nimblestorage.com>
(cherry picked from commit 03d2762f88)
Signed-off-by: Raunak Kumar <rkumar@nimblestorage.com>
Previously, while creating snapshots, the code didn't pass through
scheduler therefore available capacity for backend wasn't checked.
This was supported by [1] which passed a RequestSpec object to
scheduler with snapshot and volume properties (the same RequestSpec
object is used for volumes).
But when the scheduler tries to get volume_type from RequestSpec obj,
unfortunately, it has a property named 'volume_type' but is None for
snapshots which breaks the scheduler when getting extra_specs from
the volume type (as the default value {} would've been set if the
property didn't exist).
Similar issue occurred when we supported untyped volumes and was
fixed by [2] and [3].
This patch sets the volume_type to an empty dict when it is found
None (which is the case while creating snapshots).
[1] https://review.opendev.org/#/c/509011/
[2] https://review.opendev.org/#/c/457431/
[3] https://review.opendev.org/#/c/471672/
Change-Id: I89a8cc42ca8984ee837a2b88f60ad126783282b9
Closes-Bug: #1856126
(cherry picked from commit 1e67072122)
This release note was located in a directory where reno couldn't find
it, so move it to the correct place and update the text to indicate
that it's not a new fix.
Change-Id: Ieb6a4dafc27976f3daff61f4952ed1b367bb35c5
(cherry picked from commit af5dbfd687)
This patch fixes a bug in volume cloning where the source volume is
prematurely closed. If the destination volume requires flattening and
an exception occurs during flattening, the code attempts to perform
cleanup operations on an already closed volume. This resulted in a
segmentation fault which causes cinder to restart.
Co-authored-by: Jon Bernard <jobernar@redhat.com>
Change-Id: Ib713aa91b775d8ec07ffdb24dfe1db1b6ecf2921
Closes-Bug: #1794956
(cherry picked from commit 394fbd7e20)
After rbd based volume migrated (retyped), it will be
renamed to the original name unless name collision or
some errors happen. But the problem is this information
seems not reflect on connection info, especially this volume
is already in-use.
This patch mimics behavior of lvm driver by not renaming
in-used volume after migration(retype)
Close-Bug: #1866935
Change-Id: I4db0dc978d55d4704dd60e2eb8738b38ddefbbbd
(cherry picked from commit 662677280b)
The equals check is too stringent for legacy pre Pike volumes
after an upgrade. Pre PIke is SMI-S, Pike and later is REST
and identifier name is persisted differently.
Change-Id: I963ad219c2e3b1c9c5edaa8f7e0d3dea911ecd8e
Closes-Bug: #1867163
(cherry picked from commit 4296ea130e)
Fix TypeError "'NoneType' object is not callable" in test case
test_delete_host_wo_lock
Change-Id: I44650912e88808ce56b347633093e05d5741252c
Closes-bug: #1867619
(cherry picked from commit f88845d756)
With this change, cinder driver can create compressed volume on DRP.
Closes-bug: #1863578
Change-Id: I1198c0d07a925d64a4e77b80f4bc22764bfa2f11
(cherry picked from commit 5c2f839a02)
When restoring many backups, the backup service uses a lot of memory and
when we do many concurrent restores the backup service ends up getting
killed becase the system runs out of memory.
This patch reduces the ref count to the data as soon as possible to let
Python garbage collect it instead of hogging it for the whole chunk
restore.
Related-Bug: #1865011
Change-Id: I942d9d8b3976232ae1cf82b698fb27285fbef13a
(cherry picked from commit 69462315bc)
Incremental patch I516b7c82b05b26e81195f7f106d43a9e0804082d
introduced a regression, breaking the volume backup export
functionality.
Apparently, the newly introduced "parent" db field isn't
serialized properly.
This is the traceback from the launchpad bug:
oslo_versionedobjects.exception.ObjectActionError:
Object action obj_load_attr failed because: attribute
parent not lazy-loadable
Looking at the traceback, and the Backup OVO code it seems
like we have 2 problems:
- We don't support lazy loading the parent
- We try to serialize the parent
Co-Authored-By: Gorka Eguileor <geguileo@redhat.com>
Change-Id: I017602353e96cf9f0922074f94276002b17d1359
Closes-Bug: #1862635
(cherry picked from commit a98969380a)
modified:
cinder/tests/unit/objects/test_backup.py - pyflake issue #202
The `name` filter for volume transfer is not currently recognized by the
API. Instead, it allowed filtering on 'display_name', which is not the
actual name of any attribute of the resource.
This patch adds the support for it while secretly continuing to
support `display_name` as a valid filter so as not to break people who
have figured out the workaround.
Change-Id: I6a4d12d5dd55080e9aa73027ed82d3bf13855e28
Closes-Bug: #1860100
(cherry picked from commit 41b0eb2351)
This is used when using encrypted volumes
on iSCSI/FC drivers.
Change-Id: I2af7aa6f82f635c515bc1bc1ae45a2c4448c1c7b
(cherry picked from commit 9af6e70a03)
NEC Storage does not support storage assisted migration and retype
against in-use volumes. In that cases, migrate_volume() and
retype() in NEC driver should return False to try host-assisted
migration or retype. However, the driver currently raises an
exception and the operation fails.
This patch fixes migrate_volume() and retype() to return False without
raising an exception.
Change-Id: I9ceadc200e40126cf121d74d3996e511ba3f66df
Closes-Bug: #1848689
(cherry picked from commit 8cc095d1d0)
When reno 3.x runs under setuptools, it scans all of the branches it can
find, including any that look like they're closed and have an -eol tag.
The old kilo branch in this repository has a jumbled history that
somehow makes it look like it should include tags that it doesn't. We
know that there are no release notes in that branch, because reno wasn't
adopted while it was open. The releasenotes/source/index.rst links to
separate release notes in the wiki.
This patch tells reno to ignore that branch so that it doesn't throw an
exception when it gets confused about the old tag.
Change-Id: Idd56c3f37d5786daae7181c36d38d267cbf1885c
Co-Authored-By: Doug Hellmann <doug@doughellmann.com>
Signed-off-by: Sean McGinnis <sean.mcginnis@gmail.com>
(cherry picked from commit 94b228464d)
Change If86dd619402495d9d4470b14cb270fcf53db6794 removed installing
requirements from requirements.txt for doc jobs. These are actually
needed since the local project gets installed into the venv in order to
generate docs from the included docstrings. That installation works, but
since the requirements were not installed explicitly via the deps, those
requirements end up being installed without the upper-constraints
enforcement. This is especially problematic on stable branches, where
cinder install ends up pulling in requirements newer than what was used
for that branch.
Change-Id: Icdf80000287a43e1ff355d976f5a607543fd6d20
Signed-off-by: Sean McGinnis <sean.mcginnis@gmail.com>
(cherry picked from commit c6a1efa028)
LUKS password quality checking is not useful
since we only use long hex strings for passwords.
Not skipping this means that we have to install
cracklib-dicts for cryptsetup to work, which is
unnecessary weight.
Closes-Bug: #1861120
Change-Id: I1105c16caaf916e9101b6dca34a7f13936ce2240
(cherry picked from commit 7c3621311a)