Browse code

Clean up cinder volume group rather than remove it

Removing the cinder volume group breaks devstack installations
that share that volume group with other logical volumes. It also was
leaking loopback devices.

Change-Id: Ice4470e06e08ce49a0e1f82af70abcc015c91c20

Dean Troyer authored on 2013/01/08 06:18:12
Showing 1 changed files
... ...
@@ -48,6 +48,20 @@ fi
48 48
 VOLUME_GROUP=${VOLUME_GROUP:-stack-volumes}
49 49
 VOLUME_NAME_PREFIX=${VOLUME_NAME_PREFIX:-volume-}
50 50
 
51
+# _clean_volume_group removes all cinder volumes from the specified volume group
52
+# _clean_volume_group $VOLUME_GROUP $VOLUME_NAME_PREFIX
53
+function _clean_volume_group() {
54
+    local vg=$1
55
+    local vg_prefix=$2
56
+    # Clean out existing volumes
57
+    for lv in `sudo lvs --noheadings -o lv_name $vg`; do
58
+        # vg_prefix prefixes the LVs we want
59
+        if [[ "${lv#$vg_prefix}" != "$lv" ]]; then
60
+            sudo lvremove -f $vg/$lv
61
+        fi
62
+    done
63
+}
64
+
51 65
 # cleanup_cinder() - Remove residual data files, anything left over from previous
52 66
 # runs that a clean run would need to clean up
53 67
 function cleanup_cinder() {
... ...
@@ -84,7 +98,8 @@ function cleanup_cinder() {
84 84
         stop_service tgtd
85 85
     fi
86 86
 
87
-    sudo vgremove -f $VOLUME_GROUP
87
+    # Campsite rule: leave behind a volume group at least as clean as we found it
88
+    _clean_volume_group $VOLUME_GROUP $VOLUME_NAME_PREFIX
88 89
 }
89 90
 
90 91
 # configure_cinder() - Set config files, create data dirs, etc
... ...
@@ -272,13 +287,8 @@ function init_cinder() {
272 272
 
273 273
             # Remove iscsi targets
274 274
             sudo tgtadm --op show --mode target | grep $VOLUME_NAME_PREFIX | grep Target | cut -f3 -d ' ' | sudo xargs -n1 tgt-admin --delete || true
275
-            # Clean out existing volumes
276
-            for lv in `sudo lvs --noheadings -o lv_name $VOLUME_GROUP`; do
277
-                # VOLUME_NAME_PREFIX prefixes the LVs we want
278
-                if [[ "${lv#$VOLUME_NAME_PREFIX}" != "$lv" ]]; then
279
-                    sudo lvremove -f $VOLUME_GROUP/$lv
280
-                fi
281
-            done
275
+            # Start with a clean volume group
276
+            _clean_volume_group $VOLUME_GROUP $VOLUME_NAME_PREFIX
282 277
         fi
283 278
     fi
284 279