Merge "Enhance tgt cleanup in unstack.sh"
diff --git a/lib/ceilometer b/lib/ceilometer
index 4c3bb52..3ef4e06 100644
--- a/lib/ceilometer
+++ b/lib/ceilometer
@@ -1,5 +1,8 @@
 # lib/ceilometer
 # Install and start Ceilometer service
+# To enable, add the following to localrc
+# ENABLED_SERVICES+=ceilometer-acompute,ceilometer-acentral,ceilometer-collector,ceilometer-api
+
 
 # Dependencies:
 # - functions
@@ -32,6 +35,7 @@
 CEILOMETER_CONF_DIR=/etc/ceilometer
 CEILOMETER_AGENT_CONF=$CEILOMETER_CONF_DIR/ceilometer-agent.conf
 CEILOMETER_COLLECTOR_CONF=$CEILOMETER_CONF_DIR/ceilometer-collector.conf
+CEILOMETER_API_LOG_DIR=/var/log/ceilometer-api
 
 # cleanup_ceilometer() - Remove residual data files, anything left over from previous
 # runs that a clean run would need to clean up
@@ -43,10 +47,12 @@
 # configure_ceilometer() - Set config files, create data dirs, etc
 function configure_ceilometer() {
     setup_develop $CEILOMETER_DIR
-    if [ ! -d $CEILOMETER_CONF_DIR ]; then
-        sudo mkdir -m 755 -p $CEILOMETER_CONF_DIR
-    fi
-    sudo chown `whoami` $CEILOMETER_CONF_DIR
+
+    [ -d $CEILOMETER_CONF_DIR ] && sudo mkdir -m 755 -p $CEILOMETER_CONF_DIR
+    sudo chown $USER $CEILOMETER_CONF_DIR
+
+    [ ! -d $CEILOMETER_API_LOG_DIR ] &&  sudo mkdir -m 755 -p $CEILOMETER_API_LOG_DIR 
+    sudo chown $USER $CEILOMETER_API_LOG_DIR
 
     # ceilometer confs are copy of /etc/nova/nova.conf which must exist first
     grep -v format_string $NOVA_CONF_DIR/$NOVA_CONF > $CEILOMETER_AGENT_CONF
@@ -63,4 +69,5 @@
     screen_it ceilometer-acompute "cd $CEILOMETER_DIR && $CEILOMETER_BIN_DIR/ceilometer-agent-compute --config-file $CEILOMETER_AGENT_CONF"
     screen_it ceilometer-acentral "cd $CEILOMETER_DIR && $CEILOMETER_BIN_DIR/ceilometer-agent-central --config-file $CEILOMETER_AGENT_CONF"
     screen_it ceilometer-collector "cd $CEILOMETER_DIR && $CEILOMETER_BIN_DIR/ceilometer-collector --config-file $CEILOMETER_COLLECTOR_CONF"
+    screen_it ceilometer-api "cd $CEILOMETER_DIR && $CEILOMETER_BIN_DIR/ceilometer-api -d -v --log-dir=$CEILOMETER_API_LOG_DIR"
 }
diff --git a/stack.sh b/stack.sh
index e444e38..d7e951c 100755
--- a/stack.sh
+++ b/stack.sh
@@ -192,7 +192,7 @@
         useradd -g stack -s /bin/bash -d $DEST -m stack
     fi
 
-    echo "Giving stack user passwordless sudo priviledges"
+    echo "Giving stack user passwordless sudo privileges"
     # UEC images ``/etc/sudoers`` does not have a ``#includedir``, add one
     grep -q "^#includedir.*/etc/sudoers.d" /etc/sudoers ||
         echo "#includedir /etc/sudoers.d" >> /etc/sudoers
@@ -927,8 +927,8 @@
 fi
 
 
-# Finalize queue instllation
-# --------------------------
+# Finalize queue installation
+# ----------------------------
 
 if is_service_enabled rabbit; then
     # Start rabbitmq-server
@@ -990,7 +990,7 @@
 # Create a new named screen to run processes in
 screen -d -m -S $SCREEN_NAME -t shell -s /bin/bash
 sleep 1
-# Set a reasonable statusbar
+# Set a reasonable status bar
 screen -r $SCREEN_NAME -X hardstatus alwayslastline "$SCREEN_HARDSTATUS"
 
 
@@ -1376,8 +1376,7 @@
         if [[ "$OVS_BRIDGE_MAPPINGS" != "" ]]; then
             iniset /$Q_PLUGIN_CONF_FILE OVS bridge_mappings $OVS_BRIDGE_MAPPINGS
         fi
-
-        AGENT_BINARY="$QUANTUM_DIR/quantum/plugins/openvswitch/agent/ovs_quantum_agent.py"
+        AGENT_BINARY="$QUANTUM_DIR/bin/quantum-openvswitch-agent"
     elif [[ "$Q_PLUGIN" = "linuxbridge" ]]; then
         # Setup physical network interface mappings.  Override
         # LB_VLAN_RANGES and LB_INTERFACE_MAPPINGS in localrc for more
@@ -1388,8 +1387,7 @@
         if [[ "$LB_INTERFACE_MAPPINGS" != "" ]]; then
             iniset /$Q_PLUGIN_CONF_FILE LINUX_BRIDGE physical_interface_mappings $LB_INTERFACE_MAPPINGS
         fi
-
-       AGENT_BINARY="$QUANTUM_DIR/quantum/plugins/linuxbridge/agent/linuxbridge_quantum_agent.py"
+        AGENT_BINARY="$QUANTUM_DIR/bin/quantum-linuxbridge-agent"
     fi
 fi
 
@@ -1407,8 +1405,6 @@
     iniset $Q_DHCP_CONF_FILE DEFAULT debug True
     iniset $Q_DHCP_CONF_FILE DEFAULT use_namespaces $Q_USE_NAMESPACE
 
-    # Update database
-    iniset $Q_DHCP_CONF_FILE DEFAULT db_connection "mysql:\/\/$MYSQL_USER:$MYSQL_PASSWORD@$MYSQL_HOST\/$Q_DB_NAME?charset=utf8"
     quantum_setup_keystone $Q_DHCP_CONF_FILE DEFAULT set_auth_url
 
     if [[ "$Q_PLUGIN" = "openvswitch" ]]; then
@@ -1433,15 +1429,14 @@
 
     iniset $Q_L3_CONF_FILE DEFAULT metadata_ip $Q_META_DATA_IP
     iniset $Q_L3_CONF_FILE DEFAULT use_namespaces $Q_USE_NAMESPACE
-    iniset $Q_L3_CONF_FILE DEFAULT external_network_bridge $PUBLIC_BRIDGE
 
     quantum_setup_keystone $Q_L3_CONF_FILE DEFAULT set_auth_url
     if [[ "$Q_PLUGIN" == "openvswitch" ]]; then
         iniset $Q_L3_CONF_FILE DEFAULT interface_driver quantum.agent.linux.interface.OVSInterfaceDriver
+        iniset $Q_L3_CONF_FILE DEFAULT external_network_bridge $PUBLIC_BRIDGE
         # Set up external bridge
         # Create it if it does not exist
         sudo ovs-vsctl --no-wait -- --may-exist add-br $PUBLIC_BRIDGE
-        sudo ovs-vsctl --no-wait br-set-external-id $PUBLIC_BRIDGE bridge-id $PUBLIC_BRIDGE
         # remove internal ports
         for PORT in `sudo ovs-vsctl --no-wait list-ports $PUBLIC_BRIDGE`; do
             TYPE=$(sudo ovs-vsctl get interface $PORT type)
@@ -1454,6 +1449,7 @@
         sudo ip addr flush dev $PUBLIC_BRIDGE
     elif [[ "$Q_PLUGIN" = "linuxbridge" ]]; then
         iniset $Q_L3_CONF_FILE DEFAULT interface_driver quantum.agent.linux.interface.BridgeInterfaceDriver
+        iniset $Q_L3_CONF_FILE DEFAULT external_network_bridge ''
     fi
 fi
 
@@ -1522,8 +1518,8 @@
     # Get the sample configuration file in place
     cp $NOVA_DIR/etc/nova/api-paste.ini $NOVA_CONF_DIR
 
-    # Rewrite the authtoken configration for our Keystone service.
-    # This is a bit defensive to allow the sample file some varaince.
+    # Rewrite the authtoken configuration for our Keystone service.
+    # This is a bit defensive to allow the sample file some variance.
     sed -e "
         /^admin_token/i admin_tenant_name = $SERVICE_TENANT_NAME
         /admin_tenant_name/s/^.*$/admin_tenant_name = $SERVICE_TENANT_NAME/;
@@ -1735,12 +1731,12 @@
    sudo chown -R $USER: ${SWIFT_CONFIG_DIR} /var/run/swift
 
     if [[ "$SWIFT_CONFIG_DIR" != "/etc/swift" ]]; then
-        # Some swift tools are hard-coded to use ``/etc/swift`` and are apparenty not going to be fixed.
+        # Some swift tools are hard-coded to use ``/etc/swift`` and are apparently not going to be fixed.
         # Create a symlink if the config dir is moved
         sudo ln -sf ${SWIFT_CONFIG_DIR} /etc/swift
     fi
 
-    # Swift use rsync to syncronize between all the different
+    # Swift use rsync to synchronize between all the different
     # partitions (which make more sense when you have a multi-node
     # setup) we configure it with our version of rsync.
     sed -e "
@@ -1969,17 +1965,20 @@
     add_nova_opt "quantum_url=http://$Q_HOST:$Q_PORT"
 
     if [[ "$Q_PLUGIN" = "openvswitch" ]]; then
-        NOVA_VIF_DRIVER="nova.virt.libvirt.vif.LibvirtOpenVswitchDriver"
-        LINUXNET_VIF_DRIVER="nova.network.linux_net.LinuxOVSInterfaceDriver"
+        NOVA_VIF_DRIVER="nova.virt.libvirt.vif.LibvirtHybridOVSBridgeDriver"
     elif [[ "$Q_PLUGIN" = "linuxbridge" ]]; then
         NOVA_VIF_DRIVER="nova.virt.libvirt.vif.QuantumLinuxBridgeVIFDriver"
-        LINUXNET_VIF_DRIVER="nova.network.linux_net.QuantumLinuxBridgeInterfaceDriver"
     fi
-    add_nova_opt "libvirt_vif_type=ethernet"
     add_nova_opt "libvirt_vif_driver=$NOVA_VIF_DRIVER"
     add_nova_opt "linuxnet_interface_driver=$LINUXNET_VIF_DRIVER"
 else
     add_nova_opt "network_manager=nova.network.manager.$NET_MAN"
+    add_nova_opt "public_interface=$PUBLIC_INTERFACE"
+    add_nova_opt "vlan_interface=$VLAN_INTERFACE"
+    add_nova_opt "flat_network_bridge=$FLAT_NETWORK_BRIDGE"
+    if [ -n "$FLAT_INTERFACE" ]; then
+        add_nova_opt "flat_interface=$FLAT_INTERFACE"
+    fi
 fi
 if is_service_enabled n-vol; then
     add_nova_opt "volume_group=$VOLUME_GROUP"
@@ -1989,12 +1988,6 @@
 fi
 add_nova_opt "osapi_compute_extension=nova.api.openstack.compute.contrib.standard_extensions"
 add_nova_opt "my_ip=$HOST_IP"
-add_nova_opt "public_interface=$PUBLIC_INTERFACE"
-add_nova_opt "vlan_interface=$VLAN_INTERFACE"
-add_nova_opt "flat_network_bridge=$FLAT_NETWORK_BRIDGE"
-if [ -n "$FLAT_INTERFACE" ]; then
-    add_nova_opt "flat_interface=$FLAT_INTERFACE"
-fi
 add_nova_opt "sql_connection=$BASE_SQL_CONN/nova?charset=utf8"
 add_nova_opt "libvirt_type=$LIBVIRT_TYPE"
 add_nova_opt "libvirt_cpu_mode=none"