Browse code

Refactor init functions to simplify Grenade upgrades

* Glance: create_glance_cache_dir()
* Cinder: create_cinder_cache_dir() and create_cinder_volume_group()
* Nova: create_nova_cache_dir() and create_nova_keys_dir()
* Random tidy-up changes

Change-Id: I20d995d4c2e5facfb912ee03a6cda6c56f20bbe9

Dean Troyer authored on 2013/02/13 01:58:28
Showing 3 changed files
... ...
@@ -254,37 +254,55 @@ create_cinder_accounts() {
254 254
     fi
255 255
 }
256 256
 
257
+# create_cinder_cache_dir() - Part of the init_cinder() process
258
+function create_cinder_cache_dir() {
259
+    # Create cache dir
260
+    sudo mkdir -p $CINDER_AUTH_CACHE_DIR
261
+    sudo chown $STACK_USER $CINDER_AUTH_CACHE_DIR
262
+    rm -f $CINDER_AUTH_CACHE_DIR/*
263
+}
264
+
265
+create_cinder_volume_group() {
266
+    # Configure a default volume group called '`stack-volumes`' for the volume
267
+    # service if it does not yet exist.  If you don't wish to use a file backed
268
+    # volume group, create your own volume group called ``stack-volumes`` before
269
+    # invoking ``stack.sh``.
270
+    #
271
+    # By default, the backing file is 5G in size, and is stored in ``/opt/stack/data``.
272
+
273
+    if ! sudo vgs $VOLUME_GROUP; then
274
+        VOLUME_BACKING_FILE=${VOLUME_BACKING_FILE:-$DATA_DIR/${VOLUME_GROUP}-backing-file}
275
+
276
+        # Only create if the file doesn't already exists
277
+        [[ -f $VOLUME_BACKING_FILE ]] || truncate -s $VOLUME_BACKING_FILE_SIZE $VOLUME_BACKING_FILE
278
+
279
+        DEV=`sudo losetup -f --show $VOLUME_BACKING_FILE`
280
+
281
+        # Only create if the loopback device doesn't contain $VOLUME_GROUP
282
+        if ! sudo vgs $VOLUME_GROUP; then
283
+            sudo vgcreate $VOLUME_GROUP $DEV
284
+        fi
285
+    fi
286
+
287
+    mkdir -p $CINDER_STATE_PATH/volumes
288
+}
289
+
257 290
 # init_cinder() - Initialize database and volume group
258 291
 function init_cinder() {
259 292
     # Force nova volumes off
260 293
     NOVA_ENABLED_APIS=$(echo $NOVA_ENABLED_APIS | sed "s/osapi_volume,//")
261 294
 
262 295
     if is_service_enabled $DATABASE_BACKENDS; then
263
-        # (re)create cinder database
296
+        # (Re)create cinder database
264 297
         recreate_database cinder utf8
265 298
 
266
-        # (re)create cinder database
299
+        # Migrate cinder database
267 300
         $CINDER_BIN_DIR/cinder-manage db sync
268 301
     fi
269 302
 
270 303
     if is_service_enabled c-vol; then
271
-        # Configure a default volume group called '`stack-volumes`' for the volume
272
-        # service if it does not yet exist.  If you don't wish to use a file backed
273
-        # volume group, create your own volume group called ``stack-volumes`` before
274
-        # invoking ``stack.sh``.
275
-        #
276
-        # By default, the backing file is 5G in size, and is stored in ``/opt/stack/data``.
277 304
 
278
-        if ! sudo vgs $VOLUME_GROUP; then
279
-            VOLUME_BACKING_FILE=${VOLUME_BACKING_FILE:-$DATA_DIR/${VOLUME_GROUP}-backing-file}
280
-            # Only create if the file doesn't already exists
281
-            [[ -f $VOLUME_BACKING_FILE ]] || truncate -s $VOLUME_BACKING_FILE_SIZE $VOLUME_BACKING_FILE
282
-            DEV=`sudo losetup -f --show $VOLUME_BACKING_FILE`
283
-            # Only create if the loopback device doesn't contain $VOLUME_GROUP
284
-            if ! sudo vgs $VOLUME_GROUP; then sudo vgcreate $VOLUME_GROUP $DEV; fi
285
-        fi
286
-
287
-        mkdir -p $CINDER_STATE_PATH/volumes
305
+        create_cinder_volume_group
288 306
 
289 307
         if sudo vgs $VOLUME_GROUP; then
290 308
             if is_fedora || is_suse; then
... ...
@@ -299,10 +317,7 @@ function init_cinder() {
299 299
         fi
300 300
     fi
301 301
 
302
-    # Create cache dir
303
-    sudo mkdir -p $CINDER_AUTH_CACHE_DIR
304
-    sudo chown $STACK_USER $CINDER_AUTH_CACHE_DIR
305
-    rm -f $CINDER_AUTH_CACHE_DIR/*
302
+    create_cinder_cache_dir
306 303
 }
307 304
 
308 305
 # install_cinder() - Collect source and prepare
... ...
@@ -141,6 +141,17 @@ function configure_glance() {
141 141
     cp -p $GLANCE_DIR/etc/policy.json $GLANCE_POLICY_JSON
142 142
 }
143 143
 
144
+# create_glance_cache_dir() - Part of the init_glance() process
145
+function create_glance_cache_dir() {
146
+    # Create cache dir
147
+    sudo mkdir -p $GLANCE_AUTH_CACHE_DIR/api
148
+    sudo chown $STACK_USER $GLANCE_AUTH_CACHE_DIR/api
149
+    rm -f $GLANCE_AUTH_CACHE_DIR/api/*
150
+    sudo mkdir -p $GLANCE_AUTH_CACHE_DIR/registry
151
+    sudo chown $STACK_USER $GLANCE_AUTH_CACHE_DIR/registry
152
+    rm -f $GLANCE_AUTH_CACHE_DIR/registry/*
153
+}
154
+
144 155
 # init_glance() - Initialize databases, etc.
145 156
 function init_glance() {
146 157
     # Delete existing images
... ...
@@ -151,18 +162,13 @@ function init_glance() {
151 151
     rm -rf $GLANCE_CACHE_DIR
152 152
     mkdir -p $GLANCE_CACHE_DIR
153 153
 
154
-    # (re)create glance database
154
+    # (Re)create glance database
155 155
     recreate_database glance utf8
156 156
 
157
+    # Migrate glance database
157 158
     $GLANCE_BIN_DIR/glance-manage db_sync
158 159
 
159
-    # Create cache dir
160
-    sudo mkdir -p $GLANCE_AUTH_CACHE_DIR/api
161
-    sudo chown $STACK_USER $GLANCE_AUTH_CACHE_DIR/api
162
-    rm -f $GLANCE_AUTH_CACHE_DIR/api/*
163
-    sudo mkdir -p $GLANCE_AUTH_CACHE_DIR/registry
164
-    sudo chown $STACK_USER $GLANCE_AUTH_CACHE_DIR/registry
165
-    rm -f $GLANCE_AUTH_CACHE_DIR/registry/*
160
+    create_glance_cache_dir
166 161
 }
167 162
 
168 163
 # install_glanceclient() - Collect source and prepare
... ...
@@ -453,6 +453,14 @@ function create_nova_conf() {
453 453
     done
454 454
 }
455 455
 
456
+# create_nova_cache_dir() - Part of the init_nova() process
457
+function create_nova_cache_dir() {
458
+    # Create cache dir
459
+    sudo mkdir -p $NOVA_AUTH_CACHE_DIR
460
+    sudo chown $STACK_USER $NOVA_AUTH_CACHE_DIR
461
+    rm -f $NOVA_AUTH_CACHE_DIR/*
462
+}
463
+
456 464
 function create_nova_conf_nova_network() {
457 465
     iniset $NOVA_CONF DEFAULT network_manager "nova.network.manager.$NET_MAN"
458 466
     iniset $NOVA_CONF DEFAULT public_interface "$PUBLIC_INTERFACE"
... ...
@@ -463,14 +471,17 @@ function create_nova_conf_nova_network() {
463 463
     fi
464 464
 }
465 465
 
466
+# create_nova_keys_dir() - Part of the init_nova() process
467
+function create_nova_keys_dir() {
468
+    # Create keys dir
469
+    sudo mkdir -p ${NOVA_STATE_PATH}/keys
470
+    sudo chown -R $STACK_USER ${NOVA_STATE_PATH}
471
+}
472
+
466 473
 # init_nova() - Initialize databases, etc.
467 474
 function init_nova() {
468
-    # Nova Database
469
-    # -------------
470
-
471
-    # All nova components talk to a central database.  We will need to do this step
472
-    # only once for an entire cluster.
473
-
475
+    # All nova components talk to a central database.
476
+    # Only do this step once on the API node for an entire cluster.
474 477
     if is_service_enabled $DATABASE_BACKENDS && is_service_enabled n-api; then
475 478
         # (Re)create nova database
476 479
         # Explicitly use latin1: to avoid lp#829209, nova expects the database to
... ...
@@ -478,7 +489,7 @@ function init_nova() {
478 478
         # 082_essex.py in nova)
479 479
         recreate_database nova latin1
480 480
 
481
-        # (Re)create nova database
481
+        # Migrate nova database
482 482
         $NOVA_BIN_DIR/nova-manage db sync
483 483
 
484 484
         # (Re)create nova baremetal database
... ...
@@ -488,15 +499,8 @@ function init_nova() {
488 488
         fi
489 489
     fi
490 490
 
491
-    # Create cache dir
492
-    sudo mkdir -p $NOVA_AUTH_CACHE_DIR
493
-    sudo chown $STACK_USER $NOVA_AUTH_CACHE_DIR
494
-    rm -f $NOVA_AUTH_CACHE_DIR/*
495
-
496
-    # Create the keys folder
497
-    sudo mkdir -p ${NOVA_STATE_PATH}/keys
498
-    # make sure we own NOVA_STATE_PATH and all subdirs
499
-    sudo chown -R $STACK_USER ${NOVA_STATE_PATH}
491
+    create_nova_cache_dir
492
+    create_nova_keys_dir
500 493
 }
501 494
 
502 495
 # install_novaclient() - Collect source and prepare