Browse code

Split disk creation out of configure_swift()

Grenade needs to be able to configure Swift without initializing the
backing disk files. Move it into create_swift_disk() and call
from init_swift().

Also move start of n-obj (if swift3 is not enabled) to start_nova().

Change-Id: Id33939182d84eeff10ba4139eeced2c1bc532f0f

Dean Troyer authored on 2013/03/28 07:40:53
Showing 3 changed files
... ...
@@ -660,6 +660,11 @@ function start_nova() {
660 660
     screen_it n-xvnc "cd $NOVA_DIR && $NOVA_BIN_DIR/nova-xvpvncproxy --config-file $NOVA_CONF"
661 661
     screen_it n-spice "cd $NOVA_DIR && $NOVA_BIN_DIR/nova-spicehtml5proxy --config-file $NOVA_CONF --web $SPICE_DIR"
662 662
     screen_it n-cauth "cd $NOVA_DIR && $NOVA_BIN_DIR/nova-consoleauth"
663
+
664
+    # Starting the nova-objectstore only if swift3 service is not enabled.
665
+    # Swift will act as s3 objectstore.
666
+    is_service_enabled swift3 || \
667
+        screen_it n-obj "cd $NOVA_DIR && $NOVA_BIN_DIR/nova-objectstore"
663 668
 }
664 669
 
665 670
 # stop_nova() - Stop running processes (non-screen)
... ...
@@ -111,54 +111,8 @@ function configure_swift() {
111 111
     # Make sure to kill all swift processes first
112 112
     swift-init --run-dir=${SWIFT_DATA_DIR}/run all stop || true
113 113
 
114
-    # First do a bit of setup by creating the directories and
115
-    # changing the permissions so we can run it as our user.
116
-
117
-    USER_GROUP=$(id -g)
118
-    sudo mkdir -p ${SWIFT_DATA_DIR}/{drives,cache,run,logs}
119
-    sudo chown -R $USER:${USER_GROUP} ${SWIFT_DATA_DIR}
120
-
121
-    # Create a loopback disk and format it to XFS.
122
-    if [[ -e ${SWIFT_DATA_DIR}/drives/images/swift.img ]]; then
123
-        if egrep -q ${SWIFT_DATA_DIR}/drives/sdb1 /proc/mounts; then
124
-            sudo umount ${SWIFT_DATA_DIR}/drives/sdb1
125
-            sudo rm -f ${SWIFT_DATA_DIR}/drives/images/swift.img
126
-        fi
127
-    fi
128
-
129
-    mkdir -p  ${SWIFT_DATA_DIR}/drives/images
130
-    sudo touch  ${SWIFT_DATA_DIR}/drives/images/swift.img
131
-    sudo chown $USER: ${SWIFT_DATA_DIR}/drives/images/swift.img
132
-
133
-    dd if=/dev/zero of=${SWIFT_DATA_DIR}/drives/images/swift.img \
134
-        bs=1024 count=0 seek=${SWIFT_LOOPBACK_DISK_SIZE}
135
-
136
-    # Make a fresh XFS filesystem
137
-    mkfs.xfs -f -i size=1024  ${SWIFT_DATA_DIR}/drives/images/swift.img
138
-
139
-    # Mount the disk with mount options to make it as efficient as possible
140
-    mkdir -p ${SWIFT_DATA_DIR}/drives/sdb1
141
-    if ! egrep -q ${SWIFT_DATA_DIR}/drives/sdb1 /proc/mounts; then
142
-        sudo mount -t xfs -o loop,noatime,nodiratime,nobarrier,logbufs=8  \
143
-            ${SWIFT_DATA_DIR}/drives/images/swift.img ${SWIFT_DATA_DIR}/drives/sdb1
144
-    fi
145
-
146
-    # Create a link to the above mount and
147
-    # create all of the directories needed to emulate a few different servers
148
-    for node_number in ${SWIFT_REPLICAS_SEQ}; do
149
-        sudo ln -sf ${SWIFT_DATA_DIR}/drives/sdb1/$node_number ${SWIFT_DATA_DIR}/$node_number;
150
-        drive=${SWIFT_DATA_DIR}/drives/sdb1/${node_number}
151
-        node=${SWIFT_DATA_DIR}/${node_number}/node
152
-        node_device=${node}/sdb1
153
-        [[ -d $node ]] && continue
154
-        [[ -d $drive ]] && continue
155
-        sudo install -o ${USER} -g $USER_GROUP -d $drive
156
-        sudo install -o ${USER} -g $USER_GROUP -d $node_device
157
-        sudo chown -R $USER: ${node}
158
-    done
159
-
160
-   sudo mkdir -p ${SWIFT_CONF_DIR}/{object,container,account}-server
161
-   sudo chown -R $USER: ${SWIFT_CONF_DIR}
114
+    sudo mkdir -p ${SWIFT_CONF_DIR}/{object,container,account}-server
115
+    sudo chown -R $USER: ${SWIFT_CONF_DIR}
162 116
 
163 117
     if [[ "$SWIFT_CONF_DIR" != "/etc/swift" ]]; then
164 118
         # Some swift tools are hard-coded to use ``/etc/swift`` and are apparently not going to be fixed.
... ...
@@ -332,12 +286,66 @@ function configure_swiftclient() {
332 332
     setup_develop $SWIFTCLIENT_DIR
333 333
 }
334 334
 
335
+# create_swift_disk - Create Swift backing disk
336
+function create_swift_disk() {
337
+    local node_number
338
+
339
+    # First do a bit of setup by creating the directories and
340
+    # changing the permissions so we can run it as our user.
341
+
342
+    USER_GROUP=$(id -g)
343
+    sudo mkdir -p ${SWIFT_DATA_DIR}/{drives,cache,run,logs}
344
+    sudo chown -R $USER:${USER_GROUP} ${SWIFT_DATA_DIR}
345
+
346
+    # Create a loopback disk and format it to XFS.
347
+    if [[ -e ${SWIFT_DATA_DIR}/drives/images/swift.img ]]; then
348
+        if egrep -q ${SWIFT_DATA_DIR}/drives/sdb1 /proc/mounts; then
349
+            sudo umount ${SWIFT_DATA_DIR}/drives/sdb1
350
+            sudo rm -f ${SWIFT_DATA_DIR}/drives/images/swift.img
351
+        fi
352
+    fi
353
+
354
+    mkdir -p ${SWIFT_DATA_DIR}/drives/images
355
+    sudo touch ${SWIFT_DATA_DIR}/drives/images/swift.img
356
+    sudo chown $USER: ${SWIFT_DATA_DIR}/drives/images/swift.img
357
+
358
+    dd if=/dev/zero of=${SWIFT_DATA_DIR}/drives/images/swift.img \
359
+        bs=1024 count=0 seek=${SWIFT_LOOPBACK_DISK_SIZE}
360
+
361
+    # Make a fresh XFS filesystem
362
+    mkfs.xfs -f -i size=1024  ${SWIFT_DATA_DIR}/drives/images/swift.img
363
+
364
+    # Mount the disk with mount options to make it as efficient as possible
365
+    mkdir -p ${SWIFT_DATA_DIR}/drives/sdb1
366
+    if ! egrep -q ${SWIFT_DATA_DIR}/drives/sdb1 /proc/mounts; then
367
+        sudo mount -t xfs -o loop,noatime,nodiratime,nobarrier,logbufs=8  \
368
+            ${SWIFT_DATA_DIR}/drives/images/swift.img ${SWIFT_DATA_DIR}/drives/sdb1
369
+    fi
370
+
371
+    # Create a link to the above mount and
372
+    # create all of the directories needed to emulate a few different servers
373
+    for node_number in ${SWIFT_REPLICAS_SEQ}; do
374
+        sudo ln -sf ${SWIFT_DATA_DIR}/drives/sdb1/$node_number ${SWIFT_DATA_DIR}/$node_number;
375
+        drive=${SWIFT_DATA_DIR}/drives/sdb1/${node_number}
376
+        node=${SWIFT_DATA_DIR}/${node_number}/node
377
+        node_device=${node}/sdb1
378
+        [[ -d $node ]] && continue
379
+        [[ -d $drive ]] && continue
380
+        sudo install -o ${USER} -g $USER_GROUP -d $drive
381
+        sudo install -o ${USER} -g $USER_GROUP -d $node_device
382
+        sudo chown -R $USER: ${node}
383
+    done
384
+}
385
+
335 386
 # init_swift() - Initialize rings
336 387
 function init_swift() {
337 388
     local node_number
338 389
     # Make sure to kill all swift processes first
339 390
     swift-init --run-dir=${SWIFT_DATA_DIR}/run all stop || true
340 391
 
392
+    # Forcibly re-create the backing filesystem
393
+    create_swift_disk
394
+
341 395
     # This is where we create three different rings for swift with
342 396
     # different object servers binding on different ports.
343 397
     pushd ${SWIFT_CONF_DIR} >/dev/null && {
... ...
@@ -1062,12 +1062,6 @@ if is_service_enabled ceilometer; then
1062 1062
     start_ceilometer
1063 1063
 fi
1064 1064
 
1065
-# Starting the nova-objectstore only if swift3 service is not enabled.
1066
-# Swift will act as s3 objectstore.
1067
-is_service_enabled swift3 || \
1068
-    screen_it n-obj "cd $NOVA_DIR && $NOVA_BIN_DIR/nova-objectstore"
1069
-
1070
-
1071 1065
 # Configure and launch heat engine, api and metadata
1072 1066
 if is_service_enabled heat; then
1073 1067
     # Initialize heat, including replacing nova flavors