Browse code

Merge "Clean out old volumes from an existing VOLUME_GROUP if present"

Jenkins authored on 2011/12/14 06:15:57
Showing 1 changed files
... ...
@@ -160,6 +160,7 @@ ENABLED_SERVICES=${ENABLED_SERVICES:-g-api,g-reg,key,n-api,n-cpu,n-net,n-sch,n-v
160 160
 
161 161
 # Name of the lvm volume group to use/create for iscsi volumes
162 162
 VOLUME_GROUP=${VOLUME_GROUP:-nova-volumes}
163
+VOLUME_NAME_PREFIX=${VOLUME_NAME_PREFIX:-volume-}
163 164
 
164 165
 # Nova hypervisor configuration.  We default to libvirt whth  **kvm** but will
165 166
 # drop back to **qemu** if we are unable to load the kvm module.  Stack.sh can
... ...
@@ -943,12 +944,29 @@ if [[ "$ENABLED_SERVICES" =~ "n-vol" ]]; then
943 943
 
944 944
     apt_get install iscsitarget-dkms iscsitarget
945 945
 
946
-    if ! sudo vgdisplay | grep -q $VOLUME_GROUP; then
946
+    if ! sudo vgs $VOLUME_GROUP; then
947 947
         VOLUME_BACKING_FILE=${VOLUME_BACKING_FILE:-$DEST/nova-volumes-backing-file}
948 948
         VOLUME_BACKING_FILE_SIZE=${VOLUME_BACKING_FILE_SIZE:-2052M}
949
-        truncate -s $VOLUME_BACKING_FILE_SIZE $VOLUME_BACKING_FILE
949
+        # Only create if the file doesn't already exists
950
+        [[ -f $VOLUME_BACKING_FILE ]] || truncate -s $VOLUME_BACKING_FILE_SIZE $VOLUME_BACKING_FILE
950 951
         DEV=`sudo losetup -f --show $VOLUME_BACKING_FILE`
951
-        sudo vgcreate $VOLUME_GROUP $DEV
952
+        # Only create if the loopback device doesn't contain $VOLUME_GROUP
953
+        if ! sudo vgs $VOLUME_GROUP; then sudo vgcreate $VOLUME_GROUP $DEV; fi
954
+    fi
955
+
956
+    if sudo vgs $VOLUME_GROUP; then
957
+        # Clean out existing volumes
958
+        for lv in `sudo lvs --noheadings -o lv_name $VOLUME_GROUP`; do
959
+            # VOLUME_NAME_PREFIX prefixes the LVs we want
960
+            if [[ "${lv#$VOLUME_NAME_PREFIX}" != "$lv" ]]; then
961
+                tid=`egrep "^tid.+$lv" /proc/net/iet/volume | cut -f1 -d' ' | tr ':' '='`
962
+                if [[ -n "$tid" ]]; then
963
+                    lun=`egrep "lun.+$lv" /proc/net/iet/volume | cut -f1 -d' ' | tr ':' '=' | tr -d '\t'`
964
+                    sudo ietadm --op delete --$tid --$lun
965
+                fi
966
+                sudo lvremove -f $VOLUME_GROUP/$lv
967
+            fi
968
+        done
952 969
     fi
953 970
 
954 971
     # Configure iscsitarget
... ...
@@ -980,6 +998,7 @@ else
980 980
 fi
981 981
 if [[ "$ENABLED_SERVICES" =~ "n-vol" ]]; then
982 982
     add_nova_flag "--volume_group=$VOLUME_GROUP"
983
+    add_nova_flag "--volume_name_template=${VOLUME_NAME_PREFIX}%08x"
983 984
 fi
984 985
 add_nova_flag "--my_ip=$HOST_IP"
985 986
 add_nova_flag "--public_interface=$PUBLIC_INTERFACE"