Browse code

Create nova.conf in INI format (rather than flagfile)

* Rename EXTRA_FLAGS to EXTRA_OPTS
* Is dependant on https://review.openstack.org/4946 (MERGED)

Fixes bug 938924

Change-Id: Idee4f86e7846cff3529e173526d3ccb2289472f0

Dean Troyer authored on 2012/03/03 07:36:16
Showing 1 changed files
... ...
@@ -829,11 +829,11 @@ fi
829 829
 # ----
830 830
 
831 831
 # Put config files in /etc/nova for everyone to find
832
-NOVA_CONF=/etc/nova
833
-if [[ ! -d $NOVA_CONF ]]; then
834
-    sudo mkdir -p $NOVA_CONF
832
+NOVA_CONF_DIR=/etc/nova
833
+if [[ ! -d $NOVA_CONF_DIR ]]; then
834
+    sudo mkdir -p $NOVA_CONF_DIR
835 835
 fi
836
-sudo chown `whoami` $NOVA_CONF
836
+sudo chown `whoami` $NOVA_CONF_DIR
837 837
 
838 838
 if is_service_enabled n-api; then
839 839
     # We are going to use a sample http middleware configuration based on the
... ...
@@ -844,7 +844,7 @@ if is_service_enabled n-api; then
844 844
     rm -f $NOVA_DIR/bin/nova-api-paste.ini
845 845
 
846 846
     # First we add a some extra data to the default paste config from nova
847
-    cp $NOVA_DIR/etc/nova/api-paste.ini $NOVA_CONF
847
+    cp $NOVA_DIR/etc/nova/api-paste.ini $NOVA_CONF_DIR
848 848
 
849 849
     # Then we add our own service token to the configuration
850 850
     sed -e "
... ...
@@ -854,11 +854,11 @@ if is_service_enabled n-api; then
854 854
         /admin_password/s/^.*$/admin_password = $SERVICE_PASSWORD/;
855 855
         s,%SERVICE_TENANT_NAME%,$SERVICE_TENANT_NAME,g;
856 856
         s,%SERVICE_TOKEN%,$SERVICE_TOKEN,g;
857
-    " -i $NOVA_CONF/api-paste.ini
857
+    " -i $NOVA_CONF_DIR/api-paste.ini
858 858
 
859 859
     # Finally, we change the pipelines in nova to use keystone
860 860
     function replace_pipeline() {
861
-        sed "/\[pipeline:$1\]/,/\[/s/^pipeline = .*/pipeline = $2/" -i $NOVA_CONF/api-paste.ini
861
+        sed "/\[pipeline:$1\]/,/\[/s/^pipeline = .*/pipeline = $2/" -i $NOVA_CONF_DIR/api-paste.ini
862 862
     }
863 863
     replace_pipeline "ec2cloud" "ec2faultwrap logrequest totoken authtoken keystonecontext cloudrequest authorizer validator ec2executor"
864 864
     replace_pipeline "ec2admin" "ec2faultwrap logrequest totoken authtoken keystonecontext adminrequest authorizer ec2executor"
... ...
@@ -1178,68 +1178,69 @@ if is_service_enabled n-vol; then
1178 1178
     sudo start tgt
1179 1179
 fi
1180 1180
 
1181
-function add_nova_flag {
1182
-    echo "$1" >> $NOVA_CONF/nova.conf
1181
+NOVA_CONF=nova.conf
1182
+function add_nova_opt {
1183
+    echo "$1" >> $NOVA_CONF_DIR/$NOVA_CONF
1183 1184
 }
1184 1185
 
1185 1186
 # remove legacy nova.conf
1186 1187
 rm -f $NOVA_DIR/bin/nova.conf
1187 1188
 
1188 1189
 # (re)create nova.conf
1189
-rm -f $NOVA_CONF/nova.conf
1190
-add_nova_flag "--verbose"
1191
-add_nova_flag "--allow_admin_api"
1192
-add_nova_flag "--allow_resize_to_same_host"
1193
-add_nova_flag "--scheduler_driver=$SCHEDULER"
1194
-add_nova_flag "--dhcpbridge_flagfile=$NOVA_CONF/nova.conf"
1195
-add_nova_flag "--fixed_range=$FIXED_RANGE"
1190
+rm -f $NOVA_CONF_DIR/$NOVA_CONF
1191
+add_nova_opt "[DEFAULT]"
1192
+add_nova_opt "verbose=True"
1193
+add_nova_opt "allow_resize_to_same_host=True"
1194
+add_nova_opt "scheduler_driver=$SCHEDULER"
1195
+add_nova_opt "dhcpbridge_flagfile=$NOVA_CONF_DIR/$NOVA_CONF"
1196
+add_nova_opt "fixed_range=$FIXED_RANGE"
1196 1197
 if is_service_enabled n-obj; then
1197
-    add_nova_flag "--s3_host=$SERVICE_HOST"
1198
+    add_nova_opt "s3_host=$SERVICE_HOST"
1198 1199
 fi
1199 1200
 if is_service_enabled quantum; then
1200
-    add_nova_flag "--network_manager=nova.network.quantum.manager.QuantumManager"
1201
-    add_nova_flag "--quantum_connection_host=$Q_HOST"
1202
-    add_nova_flag "--quantum_connection_port=$Q_PORT"
1201
+    add_nova_opt "network_manager=nova.network.quantum.manager.QuantumManager"
1202
+    add_nova_opt "quantum_connection_host=$Q_HOST"
1203
+    add_nova_opt "quantum_connection_port=$Q_PORT"
1203 1204
 
1204 1205
     if is_service_enabled melange; then
1205
-        add_nova_flag "--quantum_ipam_lib=nova.network.quantum.melange_ipam_lib"
1206
-        add_nova_flag "--use_melange_mac_generation"
1207
-        add_nova_flag "--melange_host=$M_HOST"
1208
-        add_nova_flag "--melange_port=$M_PORT"
1206
+        add_nova_opt "quantum_ipam_lib=nova.network.quantum.melange_ipam_lib"
1207
+        add_nova_opt "use_melange_mac_generation=True"
1208
+        add_nova_opt "melange_host=$M_HOST"
1209
+        add_nova_opt "melange_port=$M_PORT"
1209 1210
     fi
1210 1211
     if is_service_enabled q-svc && [[ "$Q_PLUGIN" = "openvswitch" ]]; then
1211
-        add_nova_flag "--libvirt_vif_type=ethernet"
1212
-        add_nova_flag "--libvirt_vif_driver=nova.virt.libvirt.vif.LibvirtOpenVswitchDriver"
1213
-        add_nova_flag "--linuxnet_interface_driver=nova.network.linux_net.LinuxOVSInterfaceDriver"
1214
-        add_nova_flag "--quantum_use_dhcp"
1212
+        add_nova_opt "libvirt_vif_type=ethernet"
1213
+        add_nova_opt "libvirt_vif_driver=nova.virt.libvirt.vif.LibvirtOpenVswitchDriver"
1214
+        add_nova_opt "linuxnet_interface_driver=nova.network.linux_net.LinuxOVSInterfaceDriver"
1215
+        add_nova_opt "quantum_use_dhcp=True"
1215 1216
     fi
1216 1217
 else
1217
-    add_nova_flag "--network_manager=nova.network.manager.$NET_MAN"
1218
+    add_nova_opt "network_manager=nova.network.manager.$NET_MAN"
1218 1219
 fi
1219 1220
 if is_service_enabled n-vol; then
1220
-    add_nova_flag "--volume_group=$VOLUME_GROUP"
1221
-    add_nova_flag "--volume_name_template=${VOLUME_NAME_PREFIX}%08x"
1221
+    add_nova_opt "volume_group=$VOLUME_GROUP"
1222
+    add_nova_opt "volume_name_template=${VOLUME_NAME_PREFIX}%08x"
1222 1223
     # oneiric no longer supports ietadm
1223
-    add_nova_flag "--iscsi_helper=tgtadm"
1224
+    add_nova_opt "iscsi_helper=tgtadm"
1224 1225
 fi
1225
-add_nova_flag "--osapi_compute_extension=nova.api.openstack.compute.contrib.standard_extensions"
1226
-add_nova_flag "--my_ip=$HOST_IP"
1227
-add_nova_flag "--public_interface=$PUBLIC_INTERFACE"
1228
-add_nova_flag "--vlan_interface=$VLAN_INTERFACE"
1229
-add_nova_flag "--flat_network_bridge=$FLAT_NETWORK_BRIDGE"
1226
+add_nova_opt "osapi_compute_extension=nova.api.openstack.compute.contrib.standard_extensions"
1227
+add_nova_opt "my_ip=$HOST_IP"
1228
+add_nova_opt "public_interface=$PUBLIC_INTERFACE"
1229
+add_nova_opt "vlan_interface=$VLAN_INTERFACE"
1230
+add_nova_opt "flat_network_bridge=$FLAT_NETWORK_BRIDGE"
1230 1231
 if [ -n "$FLAT_INTERFACE" ]; then
1231
-    add_nova_flag "--flat_interface=$FLAT_INTERFACE"
1232
+    add_nova_opt "flat_interface=$FLAT_INTERFACE"
1232 1233
 fi
1233
-add_nova_flag "--sql_connection=$BASE_SQL_CONN/nova"
1234
-add_nova_flag "--libvirt_type=$LIBVIRT_TYPE"
1235
-add_nova_flag "--instance_name_template=${INSTANCE_NAME_PREFIX}%08x"
1234
+add_nova_opt "sql_connection=$BASE_SQL_CONN/nova"
1235
+add_nova_opt "libvirt_type=$LIBVIRT_TYPE"
1236
+add_nova_opt "instance_name_template=${INSTANCE_NAME_PREFIX}%08x"
1236 1237
 # All nova-compute workers need to know the vnc configuration options
1237 1238
 # These settings don't hurt anything if n-xvnc and n-novnc are disabled
1238 1239
 if is_service_enabled n-cpu; then
1239 1240
     NOVNCPROXY_URL=${NOVNCPROXY_URL:-"http://$SERVICE_HOST:6080/vnc_auto.html"}
1240
-    add_nova_flag "--novncproxy_base_url=$NOVNCPROXY_URL"
1241
+    add_nova_opt "novncproxy_base_url=$NOVNCPROXY_URL"
1241 1242
     XVPVNCPROXY_URL=${XVPVNCPROXY_URL:-"http://$SERVICE_HOST:6081/console"}
1242
-    add_nova_flag "--xvpvncproxy_base_url=$XVPVNCPROXY_URL"
1243
+    add_nova_opt "xvpvncproxy_base_url=$XVPVNCPROXY_URL"
1243 1244
 fi
1244 1245
 if [ "$VIRT_DRIVER" = 'xenserver' ]; then
1245 1246
     VNCSERVER_PROXYCLIENT_ADDRESS=${VNCSERVER_PROXYCLIENT_ADDRESS=169.254.0.1}
... ...
@@ -1249,30 +1250,36 @@ fi
1249 1249
 # Address on which instance vncservers will listen on compute hosts.
1250 1250
 # For multi-host, this should be the management ip of the compute host.
1251 1251
 VNCSERVER_LISTEN=${VNCSERVER_LISTEN=127.0.0.1}
1252
-add_nova_flag "--vncserver_listen=$VNCSERVER_LISTEN"
1253
-add_nova_flag "--vncserver_proxyclient_address=$VNCSERVER_PROXYCLIENT_ADDRESS"
1254
-add_nova_flag "--api_paste_config=$NOVA_CONF/api-paste.ini"
1255
-add_nova_flag "--image_service=nova.image.glance.GlanceImageService"
1256
-add_nova_flag "--ec2_dmz_host=$EC2_DMZ_HOST"
1257
-add_nova_flag "--rabbit_host=$RABBIT_HOST"
1258
-add_nova_flag "--rabbit_password=$RABBIT_PASSWORD"
1259
-add_nova_flag "--glance_api_servers=$GLANCE_HOSTPORT"
1260
-add_nova_flag "--force_dhcp_release"
1252
+add_nova_opt "vncserver_listen=$VNCSERVER_LISTEN"
1253
+add_nova_opt "vncserver_proxyclient_address=$VNCSERVER_PROXYCLIENT_ADDRESS"
1254
+add_nova_opt "api_paste_config=$NOVA_CONF_DIR/api-paste.ini"
1255
+add_nova_opt "image_service=nova.image.glance.GlanceImageService"
1256
+add_nova_opt "ec2_dmz_host=$EC2_DMZ_HOST"
1257
+add_nova_opt "rabbit_host=$RABBIT_HOST"
1258
+add_nova_opt "rabbit_password=$RABBIT_PASSWORD"
1259
+add_nova_opt "glance_api_servers=$GLANCE_HOSTPORT"
1260
+add_nova_opt "force_dhcp_release=True"
1261 1261
 if [ -n "$INSTANCES_PATH" ]; then
1262
-    add_nova_flag "--instances_path=$INSTANCES_PATH"
1262
+    add_nova_opt "instances_path=$INSTANCES_PATH"
1263 1263
 fi
1264 1264
 if [ "$MULTI_HOST" != "False" ]; then
1265
-    add_nova_flag "--multi_host"
1266
-    add_nova_flag "--send_arp_for_ha"
1265
+    add_nova_opt "multi_host=True"
1266
+    add_nova_opt "send_arp_for_ha=True"
1267 1267
 fi
1268 1268
 if [ "$SYSLOG" != "False" ]; then
1269
-    add_nova_flag "--use_syslog"
1269
+    add_nova_opt "use_syslog=True"
1270 1270
 fi
1271 1271
 
1272
-# You can define extra nova conf flags by defining the array EXTRA_FLAGS,
1273
-# For Example: EXTRA_FLAGS=(--foo --bar=2)
1274
-for I in "${EXTRA_FLAGS[@]}"; do
1275
-    add_nova_flag $I
1272
+# Provide some transition from EXTRA_FLAGS to EXTRA_OPTS
1273
+if [[ -z "$EXTRA_OPTS" && -n "$EXTRA_FLAGS" ]]; then
1274
+	EXTRA_OPTS=$EXTRA_FLAGS
1275
+fi
1276
+
1277
+# You can define extra nova conf flags by defining the array EXTRA_OPTS,
1278
+# For Example: EXTRA_OPTS=(foo=true bar=2)
1279
+for I in "${EXTRA_OPTS[@]}"; do
1280
+    # Attempt to convert flags to options
1281
+    add_nova_opt ${I//-}
1276 1282
 done
1277 1283
 
1278 1284
 # XenServer
... ...
@@ -1280,19 +1287,19 @@ done
1280 1280
 
1281 1281
 if [ "$VIRT_DRIVER" = 'xenserver' ]; then
1282 1282
     read_password XENAPI_PASSWORD "ENTER A PASSWORD TO USE FOR XEN."
1283
-    add_nova_flag "--connection_type=xenapi"
1283
+    add_nova_opt "connection_type=xenapi"
1284 1284
     XENAPI_CONNECTION_URL=${XENAPI_CONNECTION_URL:-"http://169.254.0.1"}
1285
-    add_nova_flag "--xenapi_connection_url=$XENAPI_CONNECTION_URL"
1286
-    add_nova_flag "--xenapi_connection_username=root"
1287
-    add_nova_flag "--xenapi_connection_password=$XENAPI_PASSWORD"
1288
-    add_nova_flag "--noflat_injected"
1285
+    add_nova_opt "xenapi_connection_url=$XENAPI_CONNECTION_URL"
1286
+    add_nova_opt "xenapi_connection_username=root"
1287
+    add_nova_opt "xenapi_connection_password=$XENAPI_PASSWORD"
1288
+    add_nova_opt "flat_injected=False"
1289 1289
     # Need to avoid crash due to new firewall support
1290 1290
     XEN_FIREWALL_DRIVER=${XEN_FIREWALL_DRIVER:-"nova.virt.firewall.IptablesFirewallDriver"}
1291
-    add_nova_flag "--firewall_driver=$XEN_FIREWALL_DRIVER"
1291
+    add_nova_opt "firewall_driver=$XEN_FIREWALL_DRIVER"
1292 1292
 else
1293
-    add_nova_flag "--connection_type=libvirt"
1293
+    add_nova_opt "connection_type=libvirt"
1294 1294
     LIBVIRT_FIREWALL_DRIVER=${LIBVIRT_FIREWALL_DRIVER:-"nova.virt.libvirt.firewall.IptablesFirewallDriver"}
1295
-    add_nova_flag "--firewall_driver=$LIBVIRT_FIREWALL_DRIVER"
1295
+    add_nova_opt "firewall_driver=$LIBVIRT_FIREWALL_DRIVER"
1296 1296
 fi
1297 1297
 
1298 1298
 # Nova Database
... ...
@@ -1539,10 +1546,10 @@ screen_it n-vol "cd $NOVA_DIR && $NOVA_DIR/bin/nova-volume"
1539 1539
 screen_it n-net "cd $NOVA_DIR && $NOVA_DIR/bin/nova-network"
1540 1540
 screen_it n-sch "cd $NOVA_DIR && $NOVA_DIR/bin/nova-scheduler"
1541 1541
 if is_service_enabled n-novnc; then
1542
-    screen_it n-novnc "cd $NOVNC_DIR && ./utils/nova-novncproxy --flagfile $NOVA_CONF/nova.conf --web ."
1542
+    screen_it n-novnc "cd $NOVNC_DIR && ./utils/nova-novncproxy --config-file $NOVA_CONF_DIR/$NOVA_CONF --web ."
1543 1543
 fi
1544 1544
 if is_service_enabled n-xvnc; then
1545
-    screen_it n-xvnc "cd $NOVA_DIR && ./bin/nova-xvpvncproxy --flagfile $NOVA_CONF/nova.conf"
1545
+    screen_it n-xvnc "cd $NOVA_DIR && ./bin/nova-xvpvncproxy --config-file $NOVA_CONF_DIR/$NOVA_CONF"
1546 1546
 fi
1547 1547
 if is_service_enabled n-cauth; then
1548 1548
     screen_it n-cauth "cd $NOVA_DIR && ./bin/nova-consoleauth"
... ...
@@ -1673,5 +1680,10 @@ fi
1673 1673
 # Echo HOST_IP - useful for build_uec.sh, which uses dhcp to give the instance an address
1674 1674
 echo "This is your host ip: $HOST_IP"
1675 1675
 
1676
+# Warn that EXTRA_FLAGS needs to be converted to EXTRA_OPTS
1677
+if [[ -n "$EXTRA_FLAGS" ]]; then
1678
+    echo "WARNING: EXTRA_FLAGS is defined and may need to be converted to EXTRA_OPTS"
1679
+fi
1680
+
1676 1681
 # Indicate how long this took to run (bash maintained variable 'SECONDS')
1677 1682
 echo "stack.sh completed in $SECONDS seconds."