Browse code

Merge "Add lioadm cinder iscsi helper support"

Jenkins authored on 2015/03/28 05:35:10
Showing 6 changed files
... ...
@@ -1,4 +1,4 @@
1
-tgt
1
+tgt # NOPRIME
2 2
 lvm2
3 3
 qemu-utils
4 4
 libpq-dev
... ...
@@ -1,5 +1,5 @@
1 1
 lvm2
2
-tgt
2
+tgt # NOPRIME
3 3
 qemu-tools
4 4
 python-devel
5 5
 postgresql-devel
... ...
@@ -1,5 +1,5 @@
1 1
 lvm2
2
-scsi-target-utils
2
+scsi-target-utils # NOPRIME
3 3
 qemu-img
4 4
 postgresql-devel
5 5
 iscsi-initiator-utils
... ...
@@ -89,6 +89,8 @@ CINDER_SECURE_DELETE=$(trueorfalse True CINDER_SECURE_DELETE)
89 89
 # https://bugs.launchpad.net/cinder/+bug/1180976
90 90
 CINDER_PERIODIC_INTERVAL=${CINDER_PERIODIC_INTERVAL:-60}
91 91
 
92
+CINDER_ISCSI_HELPER=${CINDER_ISCSI_HELPER:-tgtadm}
93
+
92 94
 # Tell Tempest this project is present
93 95
 TEMPEST_SERVICES+=,cinder
94 96
 
... ...
@@ -126,31 +128,35 @@ function is_cinder_enabled {
126 126
 function cleanup_cinder {
127 127
     # ensure the volume group is cleared up because fails might
128 128
     # leave dead volumes in the group
129
-    local targets=$(sudo tgtadm --op show --mode target)
130
-    if [ $? -ne 0 ]; then
131
-        # If tgt driver isn't running this won't work obviously
132
-        # So check the response and restart if need be
133
-        echo "tgtd seems to be in a bad state, restarting..."
134
-        if is_ubuntu; then
135
-            restart_service tgt
136
-        else
137
-            restart_service tgtd
129
+    if [ "$CINDER_ISCSI_HELPER" = "tgtadm" ]; then
130
+        local targets=$(sudo tgtadm --op show --mode target)
131
+        if [ $? -ne 0 ]; then
132
+            # If tgt driver isn't running this won't work obviously
133
+            # So check the response and restart if need be
134
+            echo "tgtd seems to be in a bad state, restarting..."
135
+            if is_ubuntu; then
136
+                restart_service tgt
137
+            else
138
+                restart_service tgtd
139
+            fi
140
+            targets=$(sudo tgtadm --op show --mode target)
138 141
         fi
139
-        targets=$(sudo tgtadm --op show --mode target)
140
-    fi
141 142
 
142
-    if [[ -n "$targets" ]]; then
143
-        local iqn_list=( $(grep --no-filename -r iqn $SCSI_PERSIST_DIR | sed 's/<target //' | sed 's/>//') )
144
-        for i in "${iqn_list[@]}"; do
145
-            echo removing iSCSI target: $i
146
-            sudo tgt-admin --delete $i
147
-        done
148
-    fi
143
+        if [[ -n "$targets" ]]; then
144
+            local iqn_list=( $(grep --no-filename -r iqn $SCSI_PERSIST_DIR | sed 's/<target //' | sed 's/>//') )
145
+            for i in "${iqn_list[@]}"; do
146
+                echo removing iSCSI target: $i
147
+                sudo tgt-admin --delete $i
148
+            done
149
+        fi
149 150
 
150
-    if is_ubuntu; then
151
-        stop_service tgt
151
+        if is_ubuntu; then
152
+            stop_service tgt
153
+        else
154
+            stop_service tgtd
155
+        fi
152 156
     else
153
-        stop_service tgtd
157
+        sudo cinder-rtstool get-targets | sudo xargs -rn 1 cinder-rtstool delete
154 158
     fi
155 159
 
156 160
     if is_service_enabled c-vol && [[ -n "$CINDER_ENABLED_BACKENDS" ]]; then
... ...
@@ -231,7 +237,7 @@ function configure_cinder {
231 231
     iniset $CINDER_CONF DEFAULT debug $ENABLE_DEBUG_LOG_LEVEL
232 232
     iniset $CINDER_CONF DEFAULT verbose True
233 233
 
234
-    iniset $CINDER_CONF DEFAULT iscsi_helper tgtadm
234
+    iniset $CINDER_CONF DEFAULT iscsi_helper "$CINDER_ISCSI_HELPER"
235 235
     iniset $CINDER_CONF database connection `database_connection_url cinder`
236 236
     iniset $CINDER_CONF DEFAULT api_paste_config $CINDER_API_PASTE_INI
237 237
     iniset $CINDER_CONF DEFAULT rootwrap_config "$CINDER_CONF_DIR/rootwrap.conf"
... ...
@@ -395,6 +401,13 @@ function init_cinder {
395 395
 function install_cinder {
396 396
     git_clone $CINDER_REPO $CINDER_DIR $CINDER_BRANCH
397 397
     setup_develop $CINDER_DIR
398
+    if [ "$CINDER_ISCSI_HELPER" = "tgtadm" ]; then
399
+        if is_fedora; then
400
+            install_package scsi-target-utils
401
+        else
402
+            install_package tgt
403
+        fi
404
+    fi
398 405
 }
399 406
 
400 407
 # install_cinderclient() - Collect source and prepare
... ...
@@ -422,21 +435,23 @@ function start_cinder {
422 422
         service_port=$CINDER_SERVICE_PORT_INT
423 423
         service_protocol="http"
424 424
     fi
425
-    if is_service_enabled c-vol; then
426
-        # Delete any old stack.conf
427
-        sudo rm -f /etc/tgt/conf.d/stack.conf
428
-        _configure_tgt_for_config_d
429
-        if is_ubuntu; then
430
-            sudo service tgt restart
431
-        elif is_fedora || is_suse; then
432
-            restart_service tgtd
433
-        else
434
-            # note for other distros: unstack.sh also uses the tgt/tgtd service
435
-            # name, and would need to be adjusted too
436
-            exit_distro_not_supported "restarting tgt"
425
+    if [ "$CINDER_ISCSI_HELPER" = "tgtadm" ]; then
426
+        if is_service_enabled c-vol; then
427
+            # Delete any old stack.conf
428
+            sudo rm -f /etc/tgt/conf.d/stack.conf
429
+            _configure_tgt_for_config_d
430
+            if is_ubuntu; then
431
+                sudo service tgt restart
432
+            elif is_fedora || is_suse; then
433
+                restart_service tgtd
434
+            else
435
+                # note for other distros: unstack.sh also uses the tgt/tgtd service
436
+                # name, and would need to be adjusted too
437
+                exit_distro_not_supported "restarting tgt"
438
+            fi
439
+            # NOTE(gfidente): ensure tgtd is running in debug mode
440
+            sudo tgtadm --mode system --op update --name debug --value on
437 441
         fi
438
-        # NOTE(gfidente): ensure tgtd is running in debug mode
439
-        sudo tgtadm --mode system --op update --name debug --value on
440 442
     fi
441 443
 
442 444
     run_process c-api "$CINDER_BIN_DIR/cinder-api --config-file $CINDER_CONF"
... ...
@@ -466,14 +481,6 @@ function stop_cinder {
466 466
     for serv in c-api c-bak c-sch c-vol; do
467 467
         stop_process $serv
468 468
     done
469
-
470
-    if is_service_enabled c-vol; then
471
-        if is_ubuntu; then
472
-            stop_service tgt
473
-        else
474
-            stop_service tgtd
475
-        fi
476
-    fi
477 469
 }
478 470
 
479 471
 # create_volume_types() - Create Cinder's configured volume types
... ...
@@ -49,7 +49,7 @@ function configure_cinder_backend_lvm {
49 49
     iniset $CINDER_CONF $be_name volume_backend_name $be_name
50 50
     iniset $CINDER_CONF $be_name volume_driver "cinder.volume.drivers.lvm.LVMVolumeDriver"
51 51
     iniset $CINDER_CONF $be_name volume_group $VOLUME_GROUP_NAME-$be_name
52
-    iniset $CINDER_CONF $be_name iscsi_helper "tgtadm"
52
+    iniset $CINDER_CONF $be_name iscsi_helper "$CINDER_ISCSI_HELPER"
53 53
 
54 54
     if [[ "$CINDER_SECURE_DELETE" == "False" ]]; then
55 55
         iniset $CINDER_CONF $be_name volume_clear none
... ...
@@ -108,15 +108,20 @@ function init_lvm_volume_group {
108 108
     if is_fedora || is_suse; then
109 109
         # services is not started by default
110 110
         start_service lvm2-lvmetad
111
-        start_service tgtd
111
+        if [ "$CINDER_ISCSI_HELPER" = "tgtadm" ]; then
112
+            start_service tgtd
113
+        fi
112 114
     fi
113 115
 
114 116
     # Start with a clean volume group
115 117
     _create_lvm_volume_group $vg $size
116 118
 
117 119
     # Remove iscsi targets
118
-    sudo tgtadm --op show --mode target | grep Target | cut -f3 -d ' ' | sudo xargs -n1 tgt-admin --delete || true
119
-
120
+    if [ "$CINDER_ISCSI_HELPER" = "lioadm" ]; then
121
+        sudo cinder-rtstool get-targets | sudo xargs -rn 1 cinder-rtstool delete
122
+    else
123
+        sudo tgtadm --op show --mode target | grep Target | cut -f3 -d ' ' | sudo xargs -n1 tgt-admin --delete || true
124
+    fi
120 125
     _clean_lvm_volume_group $vg
121 126
 }
122 127