]> review.fuel-infra Code Review - openstack-build/cinder-build.git/commit
Refactoring for export functions in Target object
authorMitsuhiro Tanino <mitsuhiro.tanino@hds.com>
Sat, 17 Jan 2015 03:04:17 +0000 (22:04 -0500)
committerJohn Griffith <john.griffith@solidfire.com>
Fri, 13 Feb 2015 02:25:31 +0000 (19:25 -0700)
commitfb8bfea97b54f3d0971fdc1b0473e8a60b1badb3
treeb8c19ffb9bbd316350876fae77fc02b9b039ad5e
parent6f7a68cc01d830571f54c319b9170ff32456b6d6
Refactoring for export functions in Target object

Currently, export functions such as create_export() are implemented
in individual Target code, but most of them are same and these are
common features in each target.
This patch moves these methods to parent ISCSITarget class to
commonalize and each Target simply inherit these methods from parent
class. As a result of this change, LioAdm can inherit ISCSITarget
class directly instead of inheriting TgtAdm class.
This simplifies dependency of targets and improves maintainability.

By refactoring these methods, this patch also fixes following issues.

(a) Fix bug #1410566
After transitioning to the new driver and target model, iscsi_targets
is not added to the table during create_export() phase.
However, remove_export() in LIO Target is still reffering empty
iscsi_targets table. This causes NotFound exception and remove_export()
skips to do remove_iscsi_target().
As a result, iscsi target is not removed and the target continues to
grab the volume(logical volume) as an in-use status.
This patch fix the problem.

(b) Re-export a volume with CHAP
Current Tgt Target recreate iscsi target without CHAP during
ensure_export() even if the volume is exported with CHAP previously.
This patch changes this bahaviour to recreate iscsi target using
previous CHAP which is stored in volume file on state_path dir.

Closes-Bug: 1410566
Change-Id: Iea3d94e35a4ced4dafc1b61e2df6b075cf200577
cinder/tests/targets/test_base_iscsi_driver.py
cinder/tests/targets/test_iser_driver.py
cinder/tests/targets/test_lio_driver.py
cinder/tests/targets/test_tgt_driver.py
cinder/volume/targets/driver.py
cinder/volume/targets/fake.py
cinder/volume/targets/iscsi.py
cinder/volume/targets/lio.py
cinder/volume/targets/scst.py
cinder/volume/targets/tgt.py