]> review.fuel-infra Code Review - openstack-build/cinder-build.git/commit
Move driver initialization check into the method
authorFlavio Percoco <flaper87@gmail.com>
Tue, 10 Dec 2013 11:31:50 +0000 (12:31 +0100)
committerFlavio Percoco <flaper87@gmail.com>
Tue, 14 Jan 2014 19:23:00 +0000 (20:23 +0100)
commit5be4620ae5bb50c8436de0e11269c85a095ed40b
tree7d641387987080a76d685adb6711a35d19f79523
parent6f1e6f473c84657b33dde094cb4b047fbdaf7c45
Move driver initialization check into the method

Volumes and backups managers' methods are decorated with
`require_initialized_driver` which checks whether the driver has been
initialized or not. The decorator fails with a `DriverNotInitialized`
exception if the driver hasn't been initialized.

This early failure leaves volumes and backups in a wrong status which is
not just confusing for the user but it also makes it difficult to do
anything with the resources after they've been left in a 'bogus' status.

For example, when a volume creation is requested, the volume is first
created in the database and its status is set to 'creating'. Then the
scheduler will pick an available volume node and send the task to it. If
the driver has not been initialized, the volume status will be left as
'creating' instead of 'error'.

This patch fixes that issue by moving the driver initialization check
into the various manager's methods. In some cases this check is done at
the very beginning of the method, in some others - either to avoid code
duplication or because the lines above the check made sense to be
executed first - this check is done later in the method.

Change-Id: I2610be6ba1aa7df417f1a1f7bb27af30273e4814
Closes-bug: #1242942
cinder/backup/manager.py
cinder/exception.py
cinder/tests/test_volume.py
cinder/utils.py
cinder/volume/flows/create_volume/__init__.py
cinder/volume/manager.py