1022 Commits

Author SHA1 Message Date
b2e6656d16 Update master for stable/zed
Add file to the reno documentation build to show release notes for
stable/zed.

Use pbr instruction to increment the minor version number
automatically so that master versions are higher than the versions on
stable/zed.

Sem-Ver: feature
Change-Id: I9745880b98acf910c4f8cf74372a7fdc9ebac582
2022-09-06 13:13:09 +00:00
OpenStack Proposal Bot
0d224fa3c8 Imported Translations from Zanata
For more information about this automatic import see:
https://docs.openstack.org/i18n/latest/reviewing-translation-import.html

Change-Id: I8dabf5882020d5bc17007f12f1d4afd0e9ecc45c
2022-08-24 04:39:20 +00:00
Zuul
ea4cdf474c Merge "Tests: Mock sleep in cinder test_attachment_create_retries" 4.1.0 2022-08-23 07:20:00 +00:00
Zuul
d8cc723490 Merge "Swift: Honor *_domain_name parameters" 2022-08-22 19:12:23 +00:00
Eric Harney
e340a8cf83 Tests: Mock sleep in cinder test_attachment_create_retries
This brings the time to run this unit test
from 6+ seconds to 0.003s.

Change-Id: I0c40e33bb7f35555b50ca04f1b048d9b716b77b5
2022-08-22 10:48:43 -04:00
Takashi Kajinami
6738d0b156 Swift: Honor *_domain_name parameters
The *_domain_id parmaeters should not have any default. Otherwise
keystoneauth ignores the *_domain_name parameters and it requires
only *_domain_id parameters are used.

Closes-Bug: #1620999
Change-Id: I1f8c9184761313f9fc5fda2f257e52233e0196d1
2022-08-18 11:20:52 +09:00
Zuul
befcca345b Merge "Do not loose url queries on redirects" 2022-08-11 18:42:56 +00:00
Zuul
9605ff1081 Merge "Imported Translations from Zanata" 2022-08-11 17:08:15 +00:00
Pavlo Shchelokovskyy
951a9f535e Do not loose url queries on redirects
when fetching images with http driver, the redirect URL can have
mandatory query in it, which must be kept intact to successfully
fetch the image.

Change-Id: I2a9d4d026b935ea6c5e5a3a46c86f70ce1e39ae7
Closes-Bug: #1633860
2022-08-04 17:33:15 +00:00
whoami-rajat
6851cab51a Add debug logs to cinder store
When debugging issues related to glance cinder store, there are
several calls to cinder and it becomes hard to determine which step
we are currently executing without going through cinder logs.
This patch adds some useful debug logs for the new attachment's code
to understand which stage of attachment we are on.

Change-Id: I491b7292a511c47c1d6148dab69ae04269e50c85
2022-07-20 13:48:40 +05:30
Gorka Eguileor
73ebb70542 Support os-brick specific lock_path for Cinder
As a new feature relevant for the Cinder store, os-brick now supports
setting the location of file locks in a different location from the
locks of the service.

The functionality is intended for HCI deployments and hosts that are
running Cinder and Glance using Cinder backend.  In those scenarios the
service can use a service specific location for its file locks while
only sharing the location of os-brick with the other services.

To leverage this functionality the new os-brick code is needed and
method ``os_brick.setup`` needs to be called once the service
configuration options have been loaded.

The default value of the os-brick ``lock_path`` is the one set in
``oslo_concurrency``.

This patch adds support for this new feature in a backward compatible
way so code works even if using an os-brick version that doesn't have
this feature.  That is the case for many CI jobs that install os-brick
from PyPi instead of the code present in master.

Change-Id: Ib11d63e3c388e12f145f40247d17030a566b8c5e
4.0.1
2022-07-12 11:30:31 +02:00
OpenStack Proposal Bot
8e540c6c47 Imported Translations from Zanata
For more information about this automatic import see:
https://docs.openstack.org/i18n/latest/reviewing-translation-import.html

Change-Id: I5e4fd429f900c33934ca34afb340f06f174616fd
2022-05-26 02:40:19 +00:00
liyou01
5ff06df97f Remove Python 2 support
Python 2 has been deprecated for almost two years, and has not been
guaranteed to work with glance_store for a while. This patch removes all
traces of six, unicode strings and Python 2 tweaks.

Co-Authored-By: Cyril Roelandt <cyril@redhat.com>
Change-Id: Ifa78924d7ecf4f2d9a54c677888ab2926530c487
2022-05-25 04:42:06 +02:00
Ghanshyam Mann
aeee48b561 Update python testing as per zed cycle teting runtime
In Zed cycle, we have dropped the python 3.6/3.7[1] testing
and its support. Moving the py36 job to py3 based so that they run
on latest supported python 3. Updating the python classifier also to reflect the same.

[1] https://governance.openstack.org/tc/reference/runtimes/zed.html

Change-Id: Ida582daf7db6fb3cedb3c7e37fc512d094b37c6e
4.0.0
2022-05-10 19:25:24 -05:00
Zuul
aac2a83df6 Merge "Remove redundant try except around volume create" 2022-05-05 15:51:56 +00:00
Zuul
111a7a14b0 Merge "Cinder: Correct exception logging during attach" 2022-05-05 13:34:26 +00:00
Zuul
3b948892d7 Merge "Add coverage for add method" 2022-05-04 19:11:40 +00:00
Zuul
0ec0bc3851 Merge "Add exception coverage for get, get_size, delete" 2022-05-04 19:11:39 +00:00
Zuul
57eaa35bb9 Merge "Add coverage for helper methods" 2022-05-04 18:58:47 +00:00
whoami-rajat
3ee399a1e3 Cinder: Correct exception logging during attach
There is a syntax error in the exception logging when attaching a
volume fails in attachment state manager. This patch corrects it
and adds a test to guard against similar changes in future.

Closes-Bug: #1970698

Change-Id: I43c407046a49bb37631113e2ea65d05450f9365d
2022-04-28 10:31:54 +05:30
whoami-rajat
ba4af147fb Correct retry interval during attach volume
When we try to simultaneously attach same volume multiple times
(multiattach), there are multiple attachments created, suppose
attachA and attachB. If attachA marks the volume "reserved" then
attachB can't proceed until the volume is in "in-use" or "available"
state. We retry until we reach any of these states for which we use
the retrying library.

The retrying library defaults to 1 second retry[1] (5 times) which causes
the original failure as the volume takes time to transition between
"reserved" -> "in-use" state. This patch corrects it by adding an
exponential retry time and max exponential retry i.e.

1: 2 ** 1 = 2 seconds
2: 2 ** 2 = 4 seconds
3: 2 ** 3 = 8 seconds
4: 2 ** 4 = 16 seconds (but max wait time is 10 seconds)
5: 2 ** 5 = 32 seconds (but max wait time is 10 seconds)

[1] https://github.com/rholder/retrying/blob/master/retrying.py#L84

Closes-Bug: #1969373

Change-Id: I0094b044085d7f92b07ea86236de3b6efd7d67ea
2022-04-18 22:23:49 +05:30
whoami-rajat
f9253a4ade Add coverage for add method
This patch adds test coverage of code paths like extend volume,
exception blocks, when image_size is zero, volume delete call etc

Change-Id: I59b1579dc9877668b82d4195431c14cc41cfe892
2022-03-22 14:37:38 +05:30
whoami-rajat
4bd0304efb Add exception coverage for get, get_size, delete
This patch adds coverage for the various exceptions handled and
raised in get, get_size and delete methods.
It also corrects the behavior of _test_cinder_get_size method where
client.volumes returned dictionary instead of a MagicMock and it
worked due to the existing method "get" in dictionary which has
same name as "get" method in cinderclient. The dictionary object
is replaced with the appropriate MagicMock object in this patch.

Change-Id: If63a6c810b5aab992e54857bc81f5052c2c593c4
2022-03-22 14:32:10 +05:30
whoami-rajat
e5a3c9eefa Add coverage for helper methods
Add coverage for helper methods like ``get_hash_str``,
``_get_mount_path`` and ``_get_host_ip``.

Change-Id: Idb232f2d7b0f74e9c65e42955c767fb7bb6ae004
2022-03-22 14:18:23 +05:30
whoami-rajat
77919e15d2 Add coverage for get_cinderclient and _check_context
This patch adds coverage for some parts in get_cinderclient
method like ``cinder_endpoint_template`` option and keystone
exception case when catalog info for cinder could not be found.
Also it adds tests for complete coverage of _check_context
method.

Change-Id: I18b1e5e8fd818824a2dda2ad14d9456190fe9ff4
2022-03-22 14:18:18 +05:30
whoami-rajat
8ec07902cb Remove redundant try except around volume create
The cinder volume create call was moved to the cinder_utils
module to keep the driver code cleaner with commit[1].
A decorator was also added to handle NotFound exception which
made the existing try/except block redundant.
Also the current try/except block has misleading messages:

1) "Invalid volume type configured"
2) "Failed to create image-volume due to invalid
   `cinder_volume_type` configured."

A volume create could fail because of many reasons and "invalid
volume type" is just one of them. These messages will confuse
the operators even if the configured volume type is correct.
This patch removes them since the NotFound exception is already
handled at[2] and the messages are misleading.

[1] 1178f113c4fc3f5f0938f3dcc608cea4a73adb7f
[2] c0c4969a4a/glance_store/common/cinder_utils.py (L37)

Change-Id: I39c9caec85f574fc717e60f11e5681860a20ed30
2022-03-17 16:20:57 +05:30
whoami-rajat
3666d2d2e4 Add coverage for StoreLocation
This patch adds code coverage (UTs) for methods in StoreLocation class:
1) process_specs
2) get_uri
3) parse_uri

It also adds a missing method (_set_url_prefix) coverage in
Multistore cinder tests (test_multistore_cinder).

Change-Id: I8ced5af11669fb131c665ce53be57143f2c7b518
2022-03-17 14:29:46 +05:30
whoami-rajat
c0c4969a4a Add coverage for get_cinder_session
Add test coverage for two config options used to create a keystone
session object for cinderclient namely ``cinder_api_insecure`` and
``cinder_ca_certificates_file``.

Change-Id: Idb6db9f87ef7290441dfe60ca2eb9a59c9ee7bd3
2022-03-14 22:25:57 +05:30
whoami-rajat
95b49304cd Remove six usage
six has been used to maintain compatibility between python2 and
python3 code. Since current openstack development branches doesn't
support python2, we don't need the six library and can use python3
code directly.
This patch removes six usage from cinder store tests.

Change-Id: I4deb193b44394ae9f99f57e31fb81fe04394e247
2022-03-14 22:10:52 +05:30
whoami-rajat
fba6d0dd83 Refactor cinder store tests[2/2]
This patch aims at a refactoring effort that would remove
duplicate tests (current and future) by moving them into a
common base class which is called via both single and multi store
test modules with their specific configurations.

This has a lot of benefits:

1) Removes duplicate code
2) Makes addition of new tests easier and cleaner
3) Ensuring a new method/code path added is tested in both
   single and multi store configurations
4) Fixing issues detected while refactoring methods
   (Eg: tests for add method in test_multistore_cinder were not
    passing the hashing_algo parameter which is currently handled
    by the backward compat code (back_compat_add decorator) but
    those tests will break when we remove backward compatibility)

Change-Id: I12569af5623f1cd7803c00a6c3b9eb211f15b6fd
2022-03-14 22:10:29 +05:30
whoami-rajat
bb790de1dc Refactor cinder store tests[1/2]
This patch aims at a refactoring effort that would remove
duplicate tests (current and future) by moving them into a
common base class which is called via both single and multi store
test modules with their specific configurations.

This has a lot of benefits:

1) Removes duplicate code
2) Makes addition of new tests easier and cleaner
3) Ensuring a new method/code path added is tested in both
   single and multi store configurations
4) Fixing issues detected while refactoring methods
   (Eg: fake_chown accepted an optional backend parameter which
    does not match the signature of original method temporary_chown)

Change-Id: Iaacb3e117cac2a661750bdb21bd0a7496078ea26
2022-03-11 14:26:40 +05:30
whoami-rajat
7b5b50fd9f Replace FakeObject with MagicMock[2/2]
FakeObject is used to set dynamic attributes to a fake class which
works in most cases but fails when an attribute is accessed which
is not defined/passed explicitly.
This causes failure of tests whenever a new attribute is accessed
and it's hard to maintain the set of attributes for every object
used.
MagicMock provides the same functionality with additional features
and handles the case effectively when an attribute is accessed
which is not explicitly defined in the tests.
This change will help safeguard against cases seen earlier in[1].
This patch replaces FakeObject with MagicMock in test_multistore_cinder.py

[1] https://review.opendev.org/c/openstack/glance/+/805974

Change-Id: I193bb03d174e6c010132702dedef1dea05f40e41
2022-03-10 11:59:41 +05:30
whoami-rajat
4b2aab18c1 Replace FakeObject with MagicMock[1/2]
FakeObject is used to set dynamic attributes to a fake class which
works in most cases but fails when an attribute is accessed which
is not defined/passed explicitly.
This causes failure of tests whenever a new attribute is accessed
and it's hard to maintain the set of attributes for every object
used.
MagicMock provides the same functionality with additional features
and handles the case effectively when an attribute is accessed
which is not explicitly defined in the tests.
This change will help safeguard against cases seen earlier in[1].
This patch replaces FakeObject with MagicMock in test_cinder_store.py

[1] https://review.opendev.org/c/openstack/glance/+/805974

Change-Id: Ifd0905b139cc90c2bd7444bc9e7638f3af6879a7
2022-03-10 11:59:32 +05:30
db235f1b21 Update master for stable/yoga
Add file to the reno documentation build to show release notes for
stable/yoga.

Use pbr instruction to increment the minor version number
automatically so that master versions are higher than the versions on
stable/yoga.

Sem-Ver: feature
Change-Id: I99772281621ebce5a57ddd37cee879d7cc387c47
2022-02-16 14:43:24 +00:00
whoami-rajat
f3433ed1a5 Cinder store: Wait for device resize
When we have an image with size > 1 GB, we follow the following steps
to accomodate the image:
1) Detach the volume
2) extend the volume
3) Attach the volume
4) Open the volume device as a file and resume writing the image

Sometimes due to several reasons (mostly network related), the
size of the device file could mismatch with the actual volume size
(or the backend LUN size). This can happen if the extend was performed
(i.e. the control path) but it takes the time to reflect that into
the mapped device (i.e. the data path). This mismatch can cause the
issue "IOError: [Errno 28] No space left on device".
To avoid this scenario, we check if the device size is less than the
volume size, we wait for the extended LUN to show up in mapped device
and then continue the image writing operation.

Closes-Bug: #1959913

Change-Id: I206580f6be615ebc5e15b546b9c23728d4116a5d
2022-02-07 23:56:17 +05:30
Zuul
16b9d1f7ad Merge "Correct attachment_complete call" 2022-01-07 16:49:03 +00:00
Zuul
bd8c0ac639 Merge "nit: Correct debug log" 2022-01-03 12:36:52 +00:00
whoami-rajat
e1ced9ea31 Correct attachment_complete call
Cinder's attachment_complete API is called to mark the volume from
"attaching" state to "in-use" state stating that the volume is
ready to use.
In the current code, attachment_complete is called before the
brick connection is complete. This should be done after the
connection to brick is successful and we have a volume path
to write the image into. This patch corrects the behavior.

The wrong sequence of execution won't have any issues functionally
since we open the volume after all steps are completed but flow
wise it is incorrect.
This change won't have any end user impact.

Change-Id: Ia9652a4ff6d7efbabb58511f0ce93a87b3a4dfa8
2022-01-03 02:38:14 -05:00
whoami-rajat
8b4d97a6f7 Pass valid IP address to os-brick
While fetching connector information the cinder driver of
glance-store is passing 'hostname' as IP address whereas it
actually needs IP address.

This path fetches the IPV4 or IPV6 address from the available
'hostname' and passes it to os-brick.

This worked for other cinder backends which don't rely specifically
on IP address for initializing connection like fibre channel, nfs etc
and even for some iscsi backends since, in some environments,
the hostname is same as the ip address. This is not the case always
and we should pass the correct IPv4/IPv6 address of the host to
avoid this issue.

Closes-Bug: #1955668

Change-Id: Ic79815972e654a8bfe2775f57c68cfa0bf115e2f
2021-12-23 11:39:53 -05:00
Zuul
63d6f8341a Merge "[RBD] Clone v2: Image is unusable if deletion fails" 2021-12-22 20:04:28 +00:00
Abhishek Kekane
3d221ec529 [RBD] Clone v2: Image is unusable if deletion fails
Recently cinder has utilized Ceph clone v2 support for its
RBD backend, since then if you attempt to delete an image from
glance that has a dependent volume, all future uses of that
image will fail in error state. Despite the fact that image
itself is still inside of Ceph/Glance. This issue is reproducible
if you are using ceph client version greater than 'luminous'

To resolve this issue glance RBD driver now checks whether snapshot
of original image has any external references before deleting/removing
it's snapshot and returns 409 Conflict response if it has any.

NOTE: To check this dependency glance osd needs 'read' access to
cinder and nova side RBD pool.

Closes-Bug: #1954883
Depends-on: https://review.opendev.org/c/openstack/devstack-plugin-ceph/+/819476
Change-Id: If30b7bd7acac148b6f89ce46abbe128c678c90e7
2021-12-21 17:11:45 +00:00
Zuul
a7ad9af0d6 Merge "Updating python testing classifier as per Yoga testing runtime" 2021-12-20 18:10:48 +00:00
Ghanshyam Mann
8bc3f816a3 Updating python testing classifier as per Yoga testing runtime
Yoga testing runtime[1] has been updated to add py39
testing as voting. Unit tests update are handled by the
job template change in openstack-zuul-job

- https://review.opendev.org/c/openstack/openstack-zuul-jobs/+/820286

this commit updates the classifier in setup.cfg file.

[1] https://governance.openstack.org/tc/reference/runtimes/yoga.html

Change-Id: I2241143bb4936d7258f156b8e9d760607ed61d0e
2021-12-13 21:03:32 -06:00
OpenStack Proposal Bot
6295d2eead Imported Translations from Zanata
For more information about this automatic import see:
https://docs.openstack.org/i18n/latest/reviewing-translation-import.html

Change-Id: I8c8283efd0e7bb030b886e4a4e27a29d56e71288
2021-12-11 02:38:47 +00:00
Zuul
8c644ed1ba Merge "Fix option load for swift/vmware" 2021-12-10 17:51:00 +00:00
Zuul
5cba0182f0 Merge "Fix typos" 2021-12-10 17:50:58 +00:00
whoami-rajat
5677ae3cba nit: Correct debug log
Correct debug log when initializing _AttachmentStateManager.

Change-Id: Ifa909a67c76b897f2ab4b1ee5926046bc7045d3d
2021-11-22 05:16:54 -05:00
Zuul
395f792358 Merge "setup.cfg: Replace dashes with underscores" 2021-11-21 14:14:17 +00:00
Zuul
ddb6871aa2 Merge "Cleanup devstack jobs" 2021-11-19 11:13:13 +00:00
Dr. Jens Harbott
fe51a87372
Cleanup devstack jobs
Both Python 3.x and Keystone v3 are hardcoded settings in devstack for
quite some time, drop the old variables from the job definitions.

Signed-off-by: Dr. Jens Harbott <harbott@osism.tech>
Change-Id: I06ae79267159f3769dfcba860115e2c45ba2a8c6
2021-11-10 06:32:51 +01:00