diff --git a/files/debs/cinder b/files/debs/cinder
index 7819c31655..51908eb27b 100644
--- a/files/debs/cinder
+++ b/files/debs/cinder
@@ -1,4 +1,4 @@
-tgt
+tgt # NOPRIME
lvm2
qemu-utils
libpq-dev
diff --git a/files/rpms-suse/cinder b/files/rpms-suse/cinder
index 55078da27c..3fd03cc9be 100644
--- a/files/rpms-suse/cinder
+++ b/files/rpms-suse/cinder
@@ -1,5 +1,5 @@
lvm2
-tgt
+tgt # NOPRIME
qemu-tools
python-devel
postgresql-devel
diff --git a/files/rpms/cinder b/files/rpms/cinder
index 9f1359f988..a88503b8bc 100644
--- a/files/rpms/cinder
+++ b/files/rpms/cinder
@@ -1,5 +1,5 @@
lvm2
-scsi-target-utils
+scsi-target-utils # NOPRIME
qemu-img
postgresql-devel
iscsi-initiator-utils
diff --git a/lib/cinder b/lib/cinder
index 8bb552df88..27fd692292 100644
--- a/lib/cinder
+++ b/lib/cinder
@@ -89,6 +89,8 @@ CINDER_SECURE_DELETE=$(trueorfalse True CINDER_SECURE_DELETE)
# https://bugs.launchpad.net/cinder/+bug/1180976
CINDER_PERIODIC_INTERVAL=${CINDER_PERIODIC_INTERVAL:-60}
+CINDER_ISCSI_HELPER=${CINDER_ISCSI_HELPER:-tgtadm}
+
# Tell Tempest this project is present
TEMPEST_SERVICES+=,cinder
@@ -126,31 +128,35 @@ function is_cinder_enabled {
function cleanup_cinder {
# ensure the volume group is cleared up because fails might
# leave dead volumes in the group
- local targets=$(sudo tgtadm --op show --mode target)
- if [ $? -ne 0 ]; then
- # If tgt driver isn't running this won't work obviously
- # So check the response and restart if need be
- echo "tgtd seems to be in a bad state, restarting..."
- if is_ubuntu; then
- restart_service tgt
- else
- restart_service tgtd
+ if [ "$CINDER_ISCSI_HELPER" = "tgtadm" ]; then
+ local targets=$(sudo tgtadm --op show --mode target)
+ if [ $? -ne 0 ]; then
+ # If tgt driver isn't running this won't work obviously
+ # So check the response and restart if need be
+ echo "tgtd seems to be in a bad state, restarting..."
+ if is_ubuntu; then
+ restart_service tgt
+ else
+ restart_service tgtd
+ fi
+ targets=$(sudo tgtadm --op show --mode target)
fi
- targets=$(sudo tgtadm --op show --mode target)
- fi
- if [[ -n "$targets" ]]; then
- local iqn_list=( $(grep --no-filename -r iqn $SCSI_PERSIST_DIR | sed 's///') )
- for i in "${iqn_list[@]}"; do
- echo removing iSCSI target: $i
- sudo tgt-admin --delete $i
- done
- fi
+ if [[ -n "$targets" ]]; then
+ local iqn_list=( $(grep --no-filename -r iqn $SCSI_PERSIST_DIR | sed 's///') )
+ for i in "${iqn_list[@]}"; do
+ echo removing iSCSI target: $i
+ sudo tgt-admin --delete $i
+ done
+ fi
- if is_ubuntu; then
- stop_service tgt
+ if is_ubuntu; then
+ stop_service tgt
+ else
+ stop_service tgtd
+ fi
else
- stop_service tgtd
+ sudo cinder-rtstool get-targets | sudo xargs -rn 1 cinder-rtstool delete
fi
if is_service_enabled c-vol && [[ -n "$CINDER_ENABLED_BACKENDS" ]]; then
@@ -231,7 +237,7 @@ function configure_cinder {
iniset $CINDER_CONF DEFAULT debug $ENABLE_DEBUG_LOG_LEVEL
iniset $CINDER_CONF DEFAULT verbose True
- iniset $CINDER_CONF DEFAULT iscsi_helper tgtadm
+ iniset $CINDER_CONF DEFAULT iscsi_helper "$CINDER_ISCSI_HELPER"
iniset $CINDER_CONF database connection `database_connection_url cinder`
iniset $CINDER_CONF DEFAULT api_paste_config $CINDER_API_PASTE_INI
iniset $CINDER_CONF DEFAULT rootwrap_config "$CINDER_CONF_DIR/rootwrap.conf"
@@ -395,6 +401,13 @@ function init_cinder {
function install_cinder {
git_clone $CINDER_REPO $CINDER_DIR $CINDER_BRANCH
setup_develop $CINDER_DIR
+ if [ "$CINDER_ISCSI_HELPER" = "tgtadm" ]; then
+ if is_fedora; then
+ install_package scsi-target-utils
+ else
+ install_package tgt
+ fi
+ fi
}
# install_cinderclient() - Collect source and prepare
@@ -422,21 +435,23 @@ function start_cinder {
service_port=$CINDER_SERVICE_PORT_INT
service_protocol="http"
fi
- if is_service_enabled c-vol; then
- # Delete any old stack.conf
- sudo rm -f /etc/tgt/conf.d/stack.conf
- _configure_tgt_for_config_d
- if is_ubuntu; then
- sudo service tgt restart
- elif is_fedora || is_suse; then
- restart_service tgtd
- else
- # note for other distros: unstack.sh also uses the tgt/tgtd service
- # name, and would need to be adjusted too
- exit_distro_not_supported "restarting tgt"
+ if [ "$CINDER_ISCSI_HELPER" = "tgtadm" ]; then
+ if is_service_enabled c-vol; then
+ # Delete any old stack.conf
+ sudo rm -f /etc/tgt/conf.d/stack.conf
+ _configure_tgt_for_config_d
+ if is_ubuntu; then
+ sudo service tgt restart
+ elif is_fedora || is_suse; then
+ restart_service tgtd
+ else
+ # note for other distros: unstack.sh also uses the tgt/tgtd service
+ # name, and would need to be adjusted too
+ exit_distro_not_supported "restarting tgt"
+ fi
+ # NOTE(gfidente): ensure tgtd is running in debug mode
+ sudo tgtadm --mode system --op update --name debug --value on
fi
- # NOTE(gfidente): ensure tgtd is running in debug mode
- sudo tgtadm --mode system --op update --name debug --value on
fi
run_process c-api "$CINDER_BIN_DIR/cinder-api --config-file $CINDER_CONF"
@@ -466,14 +481,6 @@ function stop_cinder {
for serv in c-api c-bak c-sch c-vol; do
stop_process $serv
done
-
- if is_service_enabled c-vol; then
- if is_ubuntu; then
- stop_service tgt
- else
- stop_service tgtd
- fi
- fi
}
# create_volume_types() - Create Cinder's configured volume types
diff --git a/lib/cinder_backends/lvm b/lib/cinder_backends/lvm
index f210578339..d369c0c840 100644
--- a/lib/cinder_backends/lvm
+++ b/lib/cinder_backends/lvm
@@ -49,7 +49,7 @@ function configure_cinder_backend_lvm {
iniset $CINDER_CONF $be_name volume_backend_name $be_name
iniset $CINDER_CONF $be_name volume_driver "cinder.volume.drivers.lvm.LVMVolumeDriver"
iniset $CINDER_CONF $be_name volume_group $VOLUME_GROUP_NAME-$be_name
- iniset $CINDER_CONF $be_name iscsi_helper "tgtadm"
+ iniset $CINDER_CONF $be_name iscsi_helper "$CINDER_ISCSI_HELPER"
if [[ "$CINDER_SECURE_DELETE" == "False" ]]; then
iniset $CINDER_CONF $be_name volume_clear none
diff --git a/lib/lvm b/lib/lvm
index d0322c76b3..519e82c806 100644
--- a/lib/lvm
+++ b/lib/lvm
@@ -108,15 +108,20 @@ function init_lvm_volume_group {
if is_fedora || is_suse; then
# services is not started by default
start_service lvm2-lvmetad
- start_service tgtd
+ if [ "$CINDER_ISCSI_HELPER" = "tgtadm" ]; then
+ start_service tgtd
+ fi
fi
# Start with a clean volume group
_create_lvm_volume_group $vg $size
# Remove iscsi targets
- sudo tgtadm --op show --mode target | grep Target | cut -f3 -d ' ' | sudo xargs -n1 tgt-admin --delete || true
-
+ if [ "$CINDER_ISCSI_HELPER" = "lioadm" ]; then
+ sudo cinder-rtstool get-targets | sudo xargs -rn 1 cinder-rtstool delete
+ else
+ sudo tgtadm --op show --mode target | grep Target | cut -f3 -d ' ' | sudo xargs -n1 tgt-admin --delete || true
+ fi
_clean_lvm_volume_group $vg
}