Browse code

Move glance to lib/glance

The next in a line of changes to break down stack.sh and make
it a bit more manageable.

Part of blueprint devstack-modular

Change-Id: Ie0104f0de281497f2c10f653aebb8e7cbedc4204

Dean Troyer authored on 2012/09/18 01:22:21
Showing 2 changed files
1 1
new file mode 100644
... ...
@@ -0,0 +1,180 @@
0
+# lib/glance
1
+# Functions to control the configuration and operation of the Glance service
2
+
3
+# Dependencies:
4
+# ``functions`` file
5
+# ``DEST``, ``DATA_DIR`` must be defined
6
+# ``SERVICE_{TENANT_NAME|PASSWORD}`` must be defined
7
+# ``SERVICE_HOST``
8
+
9
+# ``stack.sh`` calls the entry points in this order:
10
+#
11
+# install_glance
12
+# configure_glance
13
+# init_glance
14
+# start_glance
15
+# stop_glance
16
+# cleanup_glance
17
+
18
+# Save trace setting
19
+XTRACE=$(set +o | grep xtrace)
20
+set +o xtrace
21
+
22
+
23
+# Defaults
24
+# --------
25
+
26
+# <define global variables here that belong to this project>
27
+
28
+# Set up default directories
29
+GLANCE_DIR=$DEST/glance
30
+GLANCECLIENT_DIR=$DEST/python-glanceclient
31
+GLANCE_CACHE_DIR=${GLANCE_CACHE_DIR:=$DATA_DIR/glance/cache}
32
+GLANCE_IMAGE_DIR=${GLANCE_IMAGE_DIR:=$DATA_DIR/glance/images}
33
+
34
+GLANCE_CONF_DIR=${GLANCE_CONF_DIR:-/etc/glance}
35
+GLANCE_REGISTRY_CONF=$GLANCE_CONF_DIR/glance-registry.conf
36
+GLANCE_API_CONF=$GLANCE_CONF_DIR/glance-api.conf
37
+GLANCE_REGISTRY_PASTE_INI=$GLANCE_CONF_DIR/glance-registry-paste.ini
38
+GLANCE_API_PASTE_INI=$GLANCE_CONF_DIR/glance-api-paste.ini
39
+GLANCE_CACHE_CONF=$GLANCE_CONF_DIR/glance-cache.conf
40
+GLANCE_POLICY_JSON=$GLANCE_CONF_DIR/policy.json
41
+
42
+# Support entry points installation of console scripts
43
+if [[ -d $GLANCE_DIR/bin ]]; then
44
+    GLANCE_BIN_DIR=$GLANCE_DIR/bin
45
+else
46
+    GLANCE_BIN_DIR=/usr/local/bin
47
+fi
48
+
49
+# Glance connection info.  Note the port must be specified.
50
+GLANCE_HOSTPORT=${GLANCE_HOSTPORT:-$SERVICE_HOST:9292}
51
+
52
+
53
+# Entry Points
54
+# ------------
55
+
56
+# cleanup_glance() - Remove residual data files, anything left over from previous
57
+# runs that a clean run would need to clean up
58
+function cleanup_glance() {
59
+    # kill instances (nova)
60
+    # delete image files (glance)
61
+    # This function intentionally left blank
62
+    :
63
+}
64
+
65
+# configure_glanceclient() - Set config files, create data dirs, etc
66
+function configure_glanceclient() {
67
+    setup_develop $GLANCECLIENT_DIR
68
+}
69
+
70
+# configure_glance() - Set config files, create data dirs, etc
71
+function configure_glance() {
72
+    setup_develop $GLANCE_DIR
73
+
74
+    if [[ ! -d $GLANCE_CONF_DIR ]]; then
75
+        sudo mkdir -p $GLANCE_CONF_DIR
76
+    fi
77
+    sudo chown `whoami` $GLANCE_CONF_DIR
78
+
79
+    # Copy over our glance configurations and update them
80
+    cp $GLANCE_DIR/etc/glance-registry.conf $GLANCE_REGISTRY_CONF
81
+    iniset $GLANCE_REGISTRY_CONF DEFAULT debug True
82
+    inicomment $GLANCE_REGISTRY_CONF DEFAULT log_file
83
+    iniset $GLANCE_REGISTRY_CONF DEFAULT sql_connection $BASE_SQL_CONN/glance?charset=utf8
84
+    iniset $GLANCE_REGISTRY_CONF DEFAULT use_syslog $SYSLOG
85
+    iniset $GLANCE_REGISTRY_CONF paste_deploy flavor keystone
86
+    iniset $GLANCE_REGISTRY_CONF keystone_authtoken auth_host $KEYSTONE_AUTH_HOST
87
+    iniset $GLANCE_REGISTRY_CONF keystone_authtoken auth_port $KEYSTONE_AUTH_PORT
88
+    iniset $GLANCE_REGISTRY_CONF keystone_authtoken auth_protocol $KEYSTONE_AUTH_PROTOCOL
89
+    iniset $GLANCE_REGISTRY_CONF keystone_authtoken auth_uri $KEYSTONE_SERVICE_PROTOCOL://$KEYSTONE_SERVICE_HOST:$KEYSTONE_SERVICE_PORT/
90
+    iniset $GLANCE_REGISTRY_CONF keystone_authtoken admin_tenant_name $SERVICE_TENANT_NAME
91
+    iniset $GLANCE_REGISTRY_CONF keystone_authtoken admin_user glance
92
+    iniset $GLANCE_REGISTRY_CONF keystone_authtoken admin_password $SERVICE_PASSWORD
93
+
94
+    cp $GLANCE_DIR/etc/glance-api.conf $GLANCE_API_CONF
95
+    iniset $GLANCE_API_CONF DEFAULT debug True
96
+    inicomment $GLANCE_API_CONF DEFAULT log_file
97
+    iniset $GLANCE_API_CONF DEFAULT sql_connection $BASE_SQL_CONN/glance?charset=utf8
98
+    iniset $GLANCE_API_CONF DEFAULT use_syslog $SYSLOG
99
+    iniset $GLANCE_API_CONF DEFAULT filesystem_store_datadir $GLANCE_IMAGE_DIR/
100
+    iniset $GLANCE_API_CONF DEFAULT image_cache_dir $GLANCE_CACHE_DIR/
101
+    iniset $GLANCE_API_CONF paste_deploy flavor keystone+cachemanagement
102
+    iniset $GLANCE_API_CONF keystone_authtoken auth_host $KEYSTONE_AUTH_HOST
103
+    iniset $GLANCE_API_CONF keystone_authtoken auth_port $KEYSTONE_AUTH_PORT
104
+    iniset $GLANCE_API_CONF keystone_authtoken auth_protocol $KEYSTONE_AUTH_PROTOCOL
105
+    iniset $GLANCE_API_CONF keystone_authtoken auth_uri $KEYSTONE_SERVICE_PROTOCOL://$KEYSTONE_SERVICE_HOST:$KEYSTONE_SERVICE_PORT/
106
+    iniset $GLANCE_API_CONF keystone_authtoken admin_tenant_name $SERVICE_TENANT_NAME
107
+    iniset $GLANCE_API_CONF keystone_authtoken admin_user glance
108
+    iniset $GLANCE_API_CONF keystone_authtoken admin_password $SERVICE_PASSWORD
109
+
110
+    cp -p $GLANCE_DIR/etc/glance-registry-paste.ini $GLANCE_REGISTRY_PASTE_INI
111
+
112
+    cp -p $GLANCE_DIR/etc/glance-api-paste.ini $GLANCE_API_PASTE_INI
113
+
114
+    cp $GLANCE_DIR/etc/glance-cache.conf $GLANCE_CACHE_CONF
115
+    iniset $GLANCE_CACHE_CONF DEFAULT debug True
116
+    inicomment $GLANCE_CACHE_CONF DEFAULT log_file
117
+    iniset $GLANCE_CACHE_CONF DEFAULT use_syslog $SYSLOG
118
+    iniset $GLANCE_CACHE_CONF DEFAULT filesystem_store_datadir $GLANCE_IMAGE_DIR/
119
+    iniset $GLANCE_CACHE_CONF DEFAULT image_cache_dir $GLANCE_CACHE_DIR/
120
+    iniuncomment $GLANCE_CACHE_CONF DEFAULT auth_url
121
+    iniset $GLANCE_CACHE_CONF DEFAULT auth_url $KEYSTONE_AUTH_PROTOCOL://$KEYSTONE_AUTH_HOST:$KEYSTONE_AUTH_PORT/v2.0
122
+    iniuncomment $GLANCE_CACHE_CONF DEFAULT auth_tenant_name
123
+    iniset $GLANCE_CACHE_CONF DEFAULT admin_tenant_name $SERVICE_TENANT_NAME
124
+    iniuncomment $GLANCE_CACHE_CONF DEFAULT auth_user
125
+    iniset $GLANCE_CACHE_CONF DEFAULT admin_user glance
126
+    iniuncomment $GLANCE_CACHE_CONF DEFAULT auth_password
127
+    iniset $GLANCE_CACHE_CONF DEFAULT admin_password $SERVICE_PASSWORD
128
+
129
+    cp -p $GLANCE_DIR/etc/policy.json $GLANCE_POLICY_JSON
130
+
131
+}
132
+
133
+# init_glance() - Initialize databases, etc.
134
+function init_glance() {
135
+    # Delete existing images
136
+    rm -rf $GLANCE_IMAGE_DIR
137
+    mkdir -p $GLANCE_IMAGE_DIR
138
+
139
+    # Delete existing cache
140
+    rm -rf $GLANCE_CACHE_DIR
141
+    mkdir -p $GLANCE_CACHE_DIR
142
+
143
+    # (re)create glance database
144
+    mysql -u$MYSQL_USER -p$MYSQL_PASSWORD -e 'DROP DATABASE IF EXISTS glance;'
145
+    mysql -u$MYSQL_USER -p$MYSQL_PASSWORD -e 'CREATE DATABASE glance CHARACTER SET utf8;'
146
+
147
+    $GLANCE_BIN_DIR/glance-manage db_sync
148
+}
149
+
150
+# install_glanceclient() - Collect source and prepare
151
+function install_glanceclient() {
152
+    git_clone $GLANCECLIENT_REPO $GLANCECLIENT_DIR $GLANCECLIENT_BRANCH
153
+}
154
+
155
+# install_glance() - Collect source and prepare
156
+function install_glance() {
157
+    git_clone $GLANCE_REPO $GLANCE_DIR $GLANCE_BRANCH
158
+}
159
+
160
+# start_glance() - Start running processes, including screen
161
+function start_glance() {
162
+    screen_it g-reg "cd $GLANCE_DIR; $GLANCE_BIN_DIR/glance-registry --config-file=$GLANCE_CONF_DIR/glance-registry.conf"
163
+    screen_it g-api "cd $GLANCE_DIR; $GLANCE_BIN_DIR/glance-api --config-file=$GLANCE_CONF_DIR/glance-api.conf"
164
+    echo "Waiting for g-api ($GLANCE_HOSTPORT) to start..."
165
+    if ! timeout $SERVICE_TIMEOUT sh -c "while ! http_proxy= wget -q -O- http://$GLANCE_HOSTPORT; do sleep 1; done"; then
166
+      echo "g-api did not start"
167
+      exit 1
168
+    fi
169
+}
170
+
171
+# stop_glance() - Stop running processes (non-screen)
172
+function stop_glance() {
173
+    # Kill the Glance screen windows
174
+    screen -S $SCREEN_NAME -p g-api -X kill
175
+    screen -S $SCREEN_NAME -p g-reg -X kill
176
+}
177
+
178
+# Restore xtrace
179
+$XTRACE
... ...
@@ -313,6 +313,7 @@ SERVICE_TIMEOUT=${SERVICE_TIMEOUT:-60}
313 313
 
314 314
 # Get project function libraries
315 315
 source $TOP_DIR/lib/keystone
316
+source $TOP_DIR/lib/glance
316 317
 source $TOP_DIR/lib/cinder
317 318
 source $TOP_DIR/lib/n-vol
318 319
 source $TOP_DIR/lib/ceilometer
... ...
@@ -343,19 +344,6 @@ else
343 343
     NOVA_BIN_DIR=/usr/local/bin
344 344
 fi
345 345
 
346
-# Glance defaults
347
-GLANCE_DIR=$DEST/glance
348
-GLANCECLIENT_DIR=$DEST/python-glanceclient
349
-GLANCE_CACHE_DIR=${GLANCE_CACHE_DIR:=$DATA_DIR/glance/cache}
350
-GLANCE_IMAGE_DIR=${GLANCE_IMAGE_DIR:=$DATA_DIR/glance/images}
351
-
352
-# Support entry points installation of console scripts
353
-if [[ -d $GLANCE_DIR/bin ]]; then
354
-    GLANCE_BIN_DIR=$GLANCE_DIR/bin
355
-else
356
-    GLANCE_BIN_DIR=/usr/local/bin
357
-fi
358
-
359 346
 # Default Quantum Plugin
360 347
 Q_PLUGIN=${Q_PLUGIN:-openvswitch}
361 348
 # Default Quantum Port
... ...
@@ -518,13 +506,6 @@ if is_service_enabled rabbit; then
518 518
 fi
519 519
 
520 520
 
521
-# Glance
522
-# ------
523
-
524
-# Glance connection info.  Note the port must be specified.
525
-GLANCE_HOSTPORT=${GLANCE_HOSTPORT:-$SERVICE_HOST:9292}
526
-
527
-
528 521
 # Swift
529 522
 # -----
530 523
 
... ...
@@ -847,13 +828,13 @@ pip_install $(get_packages $FILES/pips | sort -u)
847 847
 echo_summary "Installing OpenStack project source"
848 848
 
849 849
 install_keystoneclient
850
+install_glanceclient
850 851
 
851 852
 git_clone $NOVA_REPO $NOVA_DIR $NOVA_BRANCH
852 853
 
853 854
 # Check out the client libs that are used most
854 855
 git_clone $NOVACLIENT_REPO $NOVACLIENT_DIR $NOVACLIENT_BRANCH
855 856
 git_clone $OPENSTACKCLIENT_REPO $OPENSTACKCLIENT_DIR $OPENSTACKCLIENT_BRANCH
856
-git_clone $GLANCECLIENT_REPO $GLANCECLIENT_DIR $GLANCECLIENT_BRANCH
857 857
 
858 858
 # glance, swift middleware and nova api needs keystone middleware
859 859
 if is_service_enabled key g-api n-api swift; then
... ...
@@ -872,7 +853,7 @@ if is_service_enabled swift; then
872 872
 fi
873 873
 if is_service_enabled g-api n-api; then
874 874
     # image catalog service
875
-    git_clone $GLANCE_REPO $GLANCE_DIR $GLANCE_BRANCH
875
+    install_glance
876 876
 fi
877 877
 if is_service_enabled n-novnc; then
878 878
     # a websockets/html5 or flash powered VNC console for vm instances
... ...
@@ -921,12 +902,12 @@ if is_service_enabled swift3; then
921 921
     setup_develop $SWIFT3_DIR
922 922
 fi
923 923
 if is_service_enabled g-api n-api; then
924
-    setup_develop $GLANCE_DIR
924
+    configure_glance
925 925
 fi
926 926
 
927 927
 # Do this _after_ glance is installed to override the old binary
928 928
 # TODO(dtroyer): figure out when this is no longer necessary
929
-setup_develop $GLANCECLIENT_DIR
929
+configure_glanceclient
930 930
 
931 931
 setup_develop $NOVA_DIR
932 932
 if is_service_enabled horizon; then
... ...
@@ -1135,56 +1116,7 @@ fi
1135 1135
 if is_service_enabled g-reg; then
1136 1136
     echo_summary "Configuring Glance"
1137 1137
 
1138
-    GLANCE_CONF_DIR=/etc/glance
1139
-    if [[ ! -d $GLANCE_CONF_DIR ]]; then
1140
-        sudo mkdir -p $GLANCE_CONF_DIR
1141
-    fi
1142
-    sudo chown `whoami` $GLANCE_CONF_DIR
1143
-
1144
-    # Delete existing images
1145
-    rm -rf $GLANCE_IMAGE_DIR
1146
-    mkdir -p $GLANCE_IMAGE_DIR
1147
-
1148
-    # Delete existing cache
1149
-    rm -rf $GLANCE_CACHE_DIR
1150
-    mkdir -p $GLANCE_CACHE_DIR
1151
-
1152
-    # (re)create glance database
1153
-    mysql -u$MYSQL_USER -p$MYSQL_PASSWORD -e 'DROP DATABASE IF EXISTS glance;'
1154
-    mysql -u$MYSQL_USER -p$MYSQL_PASSWORD -e 'CREATE DATABASE glance CHARACTER SET utf8;'
1155
-
1156
-    # Copy over our glance configurations and update them
1157
-    GLANCE_REGISTRY_CONF=$GLANCE_CONF_DIR/glance-registry.conf
1158
-    cp $GLANCE_DIR/etc/glance-registry.conf $GLANCE_REGISTRY_CONF
1159
-    iniset $GLANCE_REGISTRY_CONF DEFAULT debug True
1160
-    inicomment $GLANCE_REGISTRY_CONF DEFAULT log_file
1161
-    iniset $GLANCE_REGISTRY_CONF DEFAULT sql_connection $BASE_SQL_CONN/glance?charset=utf8
1162
-    iniset $GLANCE_REGISTRY_CONF DEFAULT use_syslog $SYSLOG
1163
-    iniset $GLANCE_REGISTRY_CONF paste_deploy flavor keystone
1164
-    iniset $GLANCE_REGISTRY_CONF keystone_authtoken auth_host $KEYSTONE_AUTH_HOST
1165
-    iniset $GLANCE_REGISTRY_CONF keystone_authtoken auth_port $KEYSTONE_AUTH_PORT
1166
-    iniset $GLANCE_REGISTRY_CONF keystone_authtoken auth_protocol $KEYSTONE_AUTH_PROTOCOL
1167
-    iniset $GLANCE_REGISTRY_CONF keystone_authtoken auth_uri $KEYSTONE_SERVICE_PROTOCOL://$KEYSTONE_SERVICE_HOST:$KEYSTONE_SERVICE_PORT/
1168
-    iniset $GLANCE_REGISTRY_CONF keystone_authtoken admin_tenant_name $SERVICE_TENANT_NAME
1169
-    iniset $GLANCE_REGISTRY_CONF keystone_authtoken admin_user glance
1170
-    iniset $GLANCE_REGISTRY_CONF keystone_authtoken admin_password $SERVICE_PASSWORD
1171
-
1172
-    GLANCE_API_CONF=$GLANCE_CONF_DIR/glance-api.conf
1173
-    cp $GLANCE_DIR/etc/glance-api.conf $GLANCE_API_CONF
1174
-    iniset $GLANCE_API_CONF DEFAULT debug True
1175
-    inicomment $GLANCE_API_CONF DEFAULT log_file
1176
-    iniset $GLANCE_API_CONF DEFAULT sql_connection $BASE_SQL_CONN/glance?charset=utf8
1177
-    iniset $GLANCE_API_CONF DEFAULT use_syslog $SYSLOG
1178
-    iniset $GLANCE_API_CONF DEFAULT filesystem_store_datadir $GLANCE_IMAGE_DIR/
1179
-    iniset $GLANCE_API_CONF DEFAULT image_cache_dir $GLANCE_CACHE_DIR/
1180
-    iniset $GLANCE_API_CONF paste_deploy flavor keystone+cachemanagement
1181
-    iniset $GLANCE_API_CONF keystone_authtoken auth_host $KEYSTONE_AUTH_HOST
1182
-    iniset $GLANCE_API_CONF keystone_authtoken auth_port $KEYSTONE_AUTH_PORT
1183
-    iniset $GLANCE_API_CONF keystone_authtoken auth_protocol $KEYSTONE_AUTH_PROTOCOL
1184
-    iniset $GLANCE_API_CONF keystone_authtoken auth_uri $KEYSTONE_SERVICE_PROTOCOL://$KEYSTONE_SERVICE_HOST:$KEYSTONE_SERVICE_PORT/
1185
-    iniset $GLANCE_API_CONF keystone_authtoken admin_tenant_name $SERVICE_TENANT_NAME
1186
-    iniset $GLANCE_API_CONF keystone_authtoken admin_user glance
1187
-    iniset $GLANCE_API_CONF keystone_authtoken admin_password $SERVICE_PASSWORD
1138
+    init_glance
1188 1139
 
1189 1140
     # Store the images in swift if enabled.
1190 1141
     if is_service_enabled swift; then
... ...
@@ -1194,35 +1126,6 @@ if is_service_enabled g-reg; then
1194 1194
         iniset $GLANCE_API_CONF DEFAULT swift_store_key $SERVICE_PASSWORD
1195 1195
         iniset $GLANCE_API_CONF DEFAULT swift_store_create_container_on_put True
1196 1196
     fi
1197
-
1198
-    GLANCE_REGISTRY_PASTE_INI=$GLANCE_CONF_DIR/glance-registry-paste.ini
1199
-    cp $GLANCE_DIR/etc/glance-registry-paste.ini $GLANCE_REGISTRY_PASTE_INI
1200
-
1201
-    GLANCE_API_PASTE_INI=$GLANCE_CONF_DIR/glance-api-paste.ini
1202
-    cp $GLANCE_DIR/etc/glance-api-paste.ini $GLANCE_API_PASTE_INI
1203
-
1204
-    GLANCE_CACHE_CONF=$GLANCE_CONF_DIR/glance-cache.conf
1205
-    cp $GLANCE_DIR/etc/glance-cache.conf $GLANCE_CACHE_CONF
1206
-    iniset $GLANCE_CACHE_CONF DEFAULT debug True
1207
-    inicomment $GLANCE_CACHE_CONF DEFAULT log_file
1208
-    iniset $GLANCE_CACHE_CONF DEFAULT use_syslog $SYSLOG
1209
-    iniset $GLANCE_CACHE_CONF DEFAULT filesystem_store_datadir $GLANCE_IMAGE_DIR/
1210
-    iniset $GLANCE_CACHE_CONF DEFAULT image_cache_dir $GLANCE_CACHE_DIR/
1211
-    iniuncomment $GLANCE_CACHE_CONF DEFAULT auth_url
1212
-    iniset $GLANCE_CACHE_CONF DEFAULT auth_url $KEYSTONE_AUTH_PROTOCOL://$KEYSTONE_AUTH_HOST:$KEYSTONE_AUTH_PORT/v2.0
1213
-    iniuncomment $GLANCE_CACHE_CONF DEFAULT auth_tenant_name
1214
-    iniset $GLANCE_CACHE_CONF DEFAULT admin_tenant_name $SERVICE_TENANT_NAME
1215
-    iniuncomment $GLANCE_CACHE_CONF DEFAULT auth_user
1216
-    iniset $GLANCE_CACHE_CONF DEFAULT admin_user glance
1217
-    iniuncomment $GLANCE_CACHE_CONF DEFAULT auth_password
1218
-    iniset $GLANCE_CACHE_CONF DEFAULT admin_password $SERVICE_PASSWORD
1219
-
1220
-
1221
-    GLANCE_POLICY_JSON=$GLANCE_CONF_DIR/policy.json
1222
-    cp $GLANCE_DIR/etc/policy.json $GLANCE_POLICY_JSON
1223
-
1224
-    $GLANCE_BIN_DIR/glance-manage db_sync
1225
-
1226 1197
 fi
1227 1198
 
1228 1199
 
... ...
@@ -2198,20 +2101,10 @@ fi
2198 2198
 # so send the start command by forcing text into the window.
2199 2199
 # Only run the services specified in ``ENABLED_SERVICES``
2200 2200
 
2201
-# Launch the glance registry service
2202
-if is_service_enabled g-reg; then
2201
+# Launch the Glance services
2202
+if is_service_enabled g-api g-reg; then
2203 2203
     echo_summary "Starting Glance"
2204
-    screen_it g-reg "cd $GLANCE_DIR; $GLANCE_BIN_DIR/glance-registry --config-file=$GLANCE_CONF_DIR/glance-registry.conf"
2205
-fi
2206
-
2207
-# Launch the glance api and wait for it to answer before continuing
2208
-if is_service_enabled g-api; then
2209
-    screen_it g-api "cd $GLANCE_DIR; $GLANCE_BIN_DIR/glance-api --config-file=$GLANCE_CONF_DIR/glance-api.conf"
2210
-    echo "Waiting for g-api ($GLANCE_HOSTPORT) to start..."
2211
-    if ! timeout $SERVICE_TIMEOUT sh -c "while ! http_proxy= wget -q -O- http://$GLANCE_HOSTPORT; do sleep 1; done"; then
2212
-      echo "g-api did not start"
2213
-      exit 1
2214
-    fi
2204
+    start_glance
2215 2205
 fi
2216 2206
 
2217 2207
 # Create an access key and secret key for nova ec2 register image