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
... | ... |
@@ -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 |