Merge "Default Q_HOST to HOST_IP rather than localhost."
diff --git a/files/apts/horizon b/files/apts/horizon
index 2161ccd..2c2faf1 100644
--- a/files/apts/horizon
+++ b/files/apts/horizon
@@ -21,4 +21,5 @@
 python-cherrypy3 # why?
 python-migrate
 nodejs
+nodejs-legacy # dist:quantal
 python-netaddr
diff --git a/lib/databases/postgresql b/lib/databases/postgresql
index 10ab721..d9c2f00 100644
--- a/lib/databases/postgresql
+++ b/lib/databases/postgresql
@@ -23,6 +23,7 @@
     if [[ "$os_PACKAGE" = "rpm" ]]; then
         PG_HBA=/var/lib/pgsql/data/pg_hba.conf
         PG_CONF=/var/lib/pgsql/data/postgresql.conf
+        sudo [ -e $PG_HBA ] || sudo postgresql-setup initdb
     else
         PG_DIR=`find /etc/postgresql -name pg_hba.conf|xargs dirname`
         PG_HBA=$PG_DIR/pg_hba.conf
diff --git a/lib/heat b/lib/heat
index efdcfad..396c8a0 100644
--- a/lib/heat
+++ b/lib/heat
@@ -125,6 +125,9 @@
     iniset $HEAT_ENGINE_CONF DEFAULT use_syslog $SYSLOG
     iniset $HEAT_ENGINE_CONF DEFAULT bind_host $HEAT_ENGINE_HOST
     iniset $HEAT_ENGINE_CONF DEFAULT bind_port $HEAT_ENGINE_PORT
+    iniset $HEAT_ENGINE_CONF DEFAULT heat_metadata_server_url http://$HEAT_API_CFN_HOST:$HEAT_API_CFN_PORT
+    iniset $HEAT_ENGINE_CONF DEFAULT heat_waitcondition_server_url http://$HEAT_METADATA_HOST:$HEAT_METADATA_PORT
+    iniset $HEAT_ENGINE_CONF DEFAULT heat_watch_server_url http://$HEAT_API_CW_HOST:$HEAT_API_CW_PORT
     local dburl
     database_connection_url dburl heat
     iniset $HEAT_ENGINE_CONF DEFAULT sql_connection $dburl
diff --git a/lib/nova b/lib/nova
index fbb5a01..b5efce9 100644
--- a/lib/nova
+++ b/lib/nova
@@ -434,12 +434,13 @@
     screen_it n-novnc "cd $NOVNC_DIR && ./utils/nova-novncproxy --config-file $NOVA_CONF --web ."
     screen_it n-xvnc "cd $NOVA_DIR && ./bin/nova-xvpvncproxy --config-file $NOVA_CONF"
     screen_it n-cauth "cd $NOVA_DIR && ./bin/nova-consoleauth"
+    screen_it n-cond "cd $NOVA_DIR && ./bin/nova-conductor"
 }
 
 # stop_nova() - Stop running processes (non-screen)
 function stop_nova() {
     # Kill the nova screen windows
-    for serv in n-api n-cpu n-crt n-net n-sch n-novnc n-xvnc n-cauth; do
+    for serv in n-api n-cpu n-crt n-net n-sch n-novnc n-xvnc n-cauth n-cond; do
         screen -S $SCREEN_NAME -p $serv -X kill
     done
 }
diff --git a/stack.sh b/stack.sh
index 70c9e04..9b830b1 100755
--- a/stack.sh
+++ b/stack.sh
@@ -317,7 +317,6 @@
 
 # Set the destination directories for OpenStack projects
 HORIZON_DIR=$DEST/horizon
-OPENSTACKCLIENT_DIR=$DEST/python-openstackclient
 NOVNC_DIR=$DEST/noVNC
 SWIFT_DIR=$DEST/swift
 SWIFT3_DIR=$DEST/swift3
@@ -813,9 +812,6 @@
 install_glanceclient
 install_novaclient
 
-# Check out the client libs that are used most
-git_clone $OPENSTACKCLIENT_REPO $OPENSTACKCLIENT_DIR $OPENSTACKCLIENT_BRANCH
-
 # glance, swift middleware and nova api needs keystone middleware
 if is_service_enabled key g-api n-api swift; then
     # unified auth system (manages accounts/tokens)
@@ -881,7 +877,6 @@
 # allowing ``import nova`` or ``import glance.client``
 configure_keystoneclient
 configure_novaclient
-setup_develop $OPENSTACKCLIENT_DIR
 if is_service_enabled key g-api n-api swift; then
     configure_keystone
 fi
@@ -1773,11 +1768,11 @@
         add_nova_opt "quantum_url=http://$Q_HOST:$Q_PORT"
 
         if [[ "$Q_PLUGIN" = "openvswitch" ]]; then
-            NOVA_VIF_DRIVER="nova.virt.libvirt.vif.LibvirtHybridOVSBridgeDriver"
+            NOVA_VIF_DRIVER=${NOVA_VIF_DRIVER:-"nova.virt.libvirt.vif.LibvirtHybridOVSBridgeDriver"}
         elif [[ "$Q_PLUGIN" = "linuxbridge" ]]; then
-            NOVA_VIF_DRIVER="nova.virt.libvirt.vif.QuantumLinuxBridgeVIFDriver"
+            NOVA_VIF_DRIVER=${NOVA_VIF_DRIVER:-"nova.virt.libvirt.vif.QuantumLinuxBridgeVIFDriver"}
         elif [[ "$Q_PLUGIN" = "ryu" ]]; then
-            NOVA_VIF_DRIVER="quantum.plugins.ryu.nova.vif.LibvirtOpenVswitchOFPRyuDriver"
+            NOVA_VIF_DRIVER=${NOVA_VIF_DRIVER:-"quantum.plugins.ryu.nova.vif.LibvirtOpenVswitchOFPRyuDriver"}
             add_nova_opt "libvirt_ovs_integration_bridge=$OVS_BRIDGE"
             add_nova_opt "linuxnet_ovs_ryu_api_host=$RYU_API_HOST:$RYU_API_PORT"
             add_nova_opt "libvirt_ovs_ryu_api_host=$RYU_API_HOST:$RYU_API_PORT"
diff --git a/stackrc b/stackrc
index 01e9556..9a244ed 100644
--- a/stackrc
+++ b/stackrc
@@ -14,7 +14,7 @@
 # ``disable_service`` functions in ``localrc``.
 # For example, to enable Swift add this to ``localrc``:
 # enable_service swift
-ENABLED_SERVICES=g-api,g-reg,key,n-api,n-crt,n-obj,n-cpu,n-net,cinder,c-sch,c-api,c-vol,n-sch,n-novnc,n-xvnc,n-cauth,horizon,rabbit,$DATABASE_TYPE
+ENABLED_SERVICES=g-api,g-reg,key,n-api,n-crt,n-obj,n-cpu,n-net,n-cond,cinder,c-sch,c-api,c-vol,n-sch,n-novnc,n-xvnc,n-cauth,horizon,rabbit,$DATABASE_TYPE
 
 # Set the default Nova APIs to enable
 NOVA_ENABLED_APIS=ec2,osapi_compute,metadata
@@ -76,10 +76,6 @@
 NOVACLIENT_REPO=${GIT_BASE}/openstack/python-novaclient.git
 NOVACLIENT_BRANCH=master
 
-# consolidated openstack python client
-OPENSTACKCLIENT_REPO=${GIT_BASE}/openstack/python-openstackclient.git
-OPENSTACKCLIENT_BRANCH=master
-
 # python keystone client library to nova that horizon uses
 KEYSTONECLIENT_REPO=${GIT_BASE}/openstack/python-keystoneclient
 KEYSTONECLIENT_BRANCH=master
diff --git a/tools/configure_tempest.sh b/tools/configure_tempest.sh
index 6493822..9b543ab 100755
--- a/tools/configure_tempest.sh
+++ b/tools/configure_tempest.sh
@@ -209,6 +209,21 @@
 LIVE_MIGRATION_AVAILABLE=${LIVE_MIGRATION_AVAILABLE:-False}
 USE_BLOCK_MIGRATION_FOR_LIVE_MIGRATION=${USE_BLOCK_MIGRATION_FOR_LIVE_MIGRATION:-False}
 
+# EC2 and S3 test configuration
+BOTO_EC2_URL="http://$IDENTITY_HOST:8773/services/Cloud"
+BOTO_S3_URL="http://$IDENTITY_HOST:3333"
+BOTO_AWS_ACCESS=""  # Created in tempest...
+BOTO_AWS_SECRET=""  # Created in tempest...
+BOTO_AWS_REGION="RegionOne"
+BOTO_S3_MATERIALS_PATH=$DEST/devstack/files/images/s3-materials/cirros-0.3.0
+BOTO_ARI_MANIFEST=cirros-0.3.0-x86_64-initrd.manifest.xml
+BOTO_AMI_MANIFEST=cirros-0.3.0-x86_64-blank.img.manifest.xml
+BOTO_AKI_MANIFEST=cirros-0.3.0-x86_64-vmlinuz.manifest.xml
+BOTO_FLAVOR_NAME=m1.tiny
+BOTO_SOCKET_TIMEOUT=5
+BOTO_BUILD_TIMEOUT=${COMPUTE_BUILD_TIMEOUT:-400}
+BOTO_BUILD_INTERVAL=${COMPUTE_BUILD_INTERVAL:-3}
+
 sed -e "
     s,%IDENTITY_USE_SSL%,$IDENTITY_USE_SSL,g;
     s,%IDENTITY_HOST%,$IDENTITY_HOST,g;
@@ -266,6 +281,19 @@
     s,%VOLUME_BUILD_TIMEOUT%,$VOLUME_BUILD_TIMEOUT,g;
     s,%LIVE_MIGRATION_AVAILABLE%,$LIVE_MIGRATION_AVAILABLE,g;
     s,%USE_BLOCK_MIGRATION_FOR_LIVE_MIGRATION%,$USE_BLOCK_MIGRATION_FOR_LIVE_MIGRATION,g;
+    s,%BOTO_EC2_URL%,$BOTO_EC2_URL,g;
+    s,%BOTO_S3_URL%,$BOTO_S3_URL,g;
+    s,%BOTO_AWS_ACCESS%,$BOTO_AWS_ACCESS,g;
+    s,%BOTO_AWS_SECRET%,$BOTO_AWS_SECRET,g;
+    s,%BOTO_AWS_REGION%,$BOTO_AWS_REGION,g;
+    s,%BOTO_S3_MATERIALS_PATH%,$BOTO_S3_MATERIALS_PATH,g;
+    s,%BOTO_ARI_MANIFEST%,$BOTO_ARI_MANIFEST,g;
+    s,%BOTO_AMI_MANIFEST%,$BOTO_AMI_MANIFEST,g;
+    s,%BOTO_AKI_MANIFEST%,$BOTO_AKI_MANIFEST,g;
+    s,%BOTO_FLAVOR_NAME%,$BOTO_FLAVOR_NAME,g;
+    s,%BOTO_SOCKET_TIMEOUT%,$BOTO_SOCKET_TIMEOUT,g;
+    s,%BOTO_BUILD_TIMEOUT%,$BOTO_BUILD_TIMEOUT,g;
+    s,%BOTO_BUILD_INTERVAL%,$BOTO_BUILD_INTERVAL,g;
 " -i $TEMPEST_CONF
 
 echo "Created tempest configuration file:"