Browse code

Merge "On unstack, cleanup LVM setup for Cinder"

Jenkins authored on 2013/06/19 20:08:09
Showing 2 changed files
... ...
@@ -63,7 +63,7 @@ cleanup_nova
63 63
 cleanup_quantum
64 64
 cleanup_swift
65 65
 
66
-# cinder doesn't clean up the volume group as it might be used elsewhere...
66
+# cinder doesn't always clean up the volume group as it might be used elsewhere...
67 67
 # clean it up if it is a loop device
68 68
 VG_DEV=$(sudo losetup -j $DATA_DIR/${VOLUME_GROUP}-backing-file | awk -F':' '/backing-file/ { print $1}')
69 69
 if [[ -n "$VG_DEV" ]]; then
... ...
@@ -67,27 +67,43 @@ CINDER_SECURE_DELETE=`trueorfalse True $CINDER_SECURE_DELETE`
67 67
 CINDER_PERIODIC_INTERVAL=${CINDER_PERIODIC_INTERVAL:-60}
68 68
 
69 69
 # Name of the lvm volume groups to use/create for iscsi volumes
70
-# VOLUME_GROUP2 is used only if CINDER_MULTI_LVM_BACKEND = True
71 70
 VOLUME_GROUP=${VOLUME_GROUP:-stack-volumes}
71
+VOLUME_BACKING_FILE=${VOLUME_BACKING_FILE:-$DATA_DIR/${VOLUME_GROUP}-backing-file}
72
+
73
+# VOLUME_GROUP2 is used only if CINDER_MULTI_LVM_BACKEND = True
72 74
 VOLUME_GROUP2=${VOLUME_GROUP2:-stack-volumes2}
75
+VOLUME_BACKING_FILE2=${VOLUME_BACKING_FILE2:-$DATA_DIR/${VOLUME_GROUP2}-backing-file}
76
+
73 77
 VOLUME_NAME_PREFIX=${VOLUME_NAME_PREFIX:-volume-}
74 78
 
75 79
 
76 80
 # Functions
77 81
 # ---------
78
-
79
-# _clean_volume_group removes all cinder volumes from the specified volume group
80
-# _clean_volume_group $VOLUME_GROUP $VOLUME_NAME_PREFIX
81
-function _clean_volume_group() {
82
+# _cleanup_lvm removes all cinder volumes and the backing file of the
83
+# volume group used by cinder
84
+# _cleanup_lvm $VOLUME_GROUP $VOLUME_NAME_PREFIX
85
+function _cleanup_lvm() {
82 86
     local vg=$1
83
-    local vg_prefix=$2
87
+    local lv_prefix=$2
88
+
84 89
     # Clean out existing volumes
85 90
     for lv in `sudo lvs --noheadings -o lv_name $vg`; do
86
-        # vg_prefix prefixes the LVs we want
87
-        if [[ "${lv#$vg_prefix}" != "$lv" ]]; then
91
+        # lv_prefix prefixes the LVs we want
92
+        if [[ "${lv#$lv_prefix}" != "$lv" ]]; then
88 93
             sudo lvremove -f $vg/$lv
89 94
         fi
90 95
     done
96
+
97
+    # if there is no logical volume left, it's safe to attempt a cleanup
98
+    # of the backing file
99
+    if [ -z "`sudo lvs --noheadings -o lv_name $vg`" ]; then
100
+        # if the backing physical device is a loop device, it was probably setup by devstack
101
+        VG_DEV=$(sudo losetup -j $DATA_DIR/${vg}-backing-file | awk -F':' '/backing-file/ { print $1}')
102
+        if [[ -n "$VG_DEV" ]]; then
103
+            sudo losetup -d $VG_DEV
104
+            rm -f $DATA_DIR/${vg}-backing-file
105
+        fi
106
+    fi
91 107
 }
92 108
 
93 109
 # cleanup_cinder() - Remove residual data files, anything left over from previous
... ...
@@ -127,9 +143,10 @@ function cleanup_cinder() {
127 127
     fi
128 128
 
129 129
     # Campsite rule: leave behind a volume group at least as clean as we found it
130
-    _clean_volume_group $VOLUME_GROUP $VOLUME_NAME_PREFIX
130
+    _cleanup_lvm $VOLUME_GROUP $VOLUME_NAME_PREFIX
131
+
131 132
     if [ "$CINDER_MULTI_LVM_BACKEND" = "True" ]; then
132
-        _clean_volume_group $VOLUME_GROUP2 $VOLUME_NAME_PREFIX
133
+        _cleanup_lvm $VOLUME_GROUP2 $VOLUME_NAME_PREFIX
133 134
     fi
134 135
 }
135 136
 
... ...
@@ -318,8 +335,6 @@ create_cinder_volume_group() {
318 318
     # ``/opt/stack/data``.
319 319
 
320 320
     if ! sudo vgs $VOLUME_GROUP; then
321
-        VOLUME_BACKING_FILE=${VOLUME_BACKING_FILE:-$DATA_DIR/${VOLUME_GROUP}-backing-file}
322
-
323 321
         # Only create if the file doesn't already exists
324 322
         [[ -f $VOLUME_BACKING_FILE ]] || truncate -s $VOLUME_BACKING_FILE_SIZE $VOLUME_BACKING_FILE
325 323
 
... ...
@@ -334,8 +349,6 @@ create_cinder_volume_group() {
334 334
         #set up the second volume if CINDER_MULTI_LVM_BACKEND is enabled
335 335
 
336 336
         if ! sudo vgs $VOLUME_GROUP2; then
337
-            VOLUME_BACKING_FILE2=${VOLUME_BACKING_FILE2:-$DATA_DIR/${VOLUME_GROUP2}-backing-file}
338
-
339 337
             # Only create if the file doesn't already exists
340 338
             [[ -f $VOLUME_BACKING_FILE2 ]] || truncate -s $VOLUME_BACKING_FILE_SIZE $VOLUME_BACKING_FILE2
341 339