Merge "Revert "Build retry loop for screen sessions""
diff --git a/files/apts/tls-proxy b/files/apts/tls-proxy
index 8fca42d..dce9c07 100644
--- a/files/apts/tls-proxy
+++ b/files/apts/tls-proxy
@@ -1 +1 @@
-stud # only available in dist:precise
+stud
diff --git a/lib/ceilometer b/lib/ceilometer
index 286f199..eef6740 100644
--- a/lib/ceilometer
+++ b/lib/ceilometer
@@ -163,6 +163,7 @@
     iniset $CEILOMETER_CONF service_credentials os_username ceilometer
     iniset $CEILOMETER_CONF service_credentials os_password $SERVICE_PASSWORD
     iniset $CEILOMETER_CONF service_credentials os_tenant_name $SERVICE_TENANT_NAME
+    iniset $CEILOMETER_CONF service_credentials os_auth_url $OS_AUTH_URL
 
     iniset $CEILOMETER_CONF keystone_authtoken identity_uri $KEYSTONE_AUTH_URI
     iniset $CEILOMETER_CONF keystone_authtoken admin_user ceilometer
diff --git a/lib/cinder b/lib/cinder
index 40a8418..6f2d7c6 100644
--- a/lib/cinder
+++ b/lib/cinder
@@ -269,6 +269,10 @@
     iniset $CINDER_CONF DEFAULT state_path $CINDER_STATE_PATH
     iniset $CINDER_CONF DEFAULT lock_path $CINDER_STATE_PATH
     iniset $CINDER_CONF DEFAULT periodic_interval $CINDER_PERIODIC_INTERVAL
+    # NOTE(thingee): Cinder V1 API is deprecated and defaults to off as of
+    # Juno. Keep it enabled so we can continue testing while it's still
+    # supported.
+    iniset $CINDER_CONF DEFAULT enable_v1_api true
 
     if is_service_enabled swift; then
         iniset $CINDER_CONF DEFAULT backup_swift_url "http://$SERVICE_HOST:8080/v1/AUTH_"
diff --git a/lib/databases/postgresql b/lib/databases/postgresql
index 96a5947..b39984c 100644
--- a/lib/databases/postgresql
+++ b/lib/databases/postgresql
@@ -23,7 +23,7 @@
         # Get ruthless with mysql
         apt_get purge -y postgresql*
         return
-    elif is_fedora; then
+    elif is_fedora || is_suse; then
         uninstall_package postgresql-server
     else
         return
diff --git a/lib/horizon b/lib/horizon
index bf476c6..a65b243 100644
--- a/lib/horizon
+++ b/lib/horizon
@@ -159,7 +159,7 @@
 # install_django_openstack_auth() - Collect source and prepare
 function install_django_openstack_auth {
     git_clone $HORIZONAUTH_REPO $HORIZONAUTH_DIR $HORIZONAUTH_BRANCH
-    setup_develop $HORIZONAUTH_DIR
+    setup_install $HORIZONAUTH_DIR
 }
 
 # install_horizon() - Collect source and prepare
diff --git a/lib/tls b/lib/tls
index 88e5f60..02906b7 100644
--- a/lib/tls
+++ b/lib/tls
@@ -18,9 +18,9 @@
 # - configure_proxy
 # - start_tls_proxy
 
-# - make_root_ca
-# - make_int_ca
-# - new_cert $INT_CA_DIR int-server "abc"
+# - make_root_CA
+# - make_int_CA
+# - make_cert ca-dir cert-name "common-name" ["alt-name" ...]
 # - start_tls_proxy HOST_IP 5000 localhost 5000
 # - ensure_certificates
 # - is_ssl_enabled_service
diff --git a/lib/trove b/lib/trove
index e467c90..401ab78 100644
--- a/lib/trove
+++ b/lib/trove
@@ -33,6 +33,10 @@
 TROVE_CONF_DIR=/etc/trove
 TROVE_LOCAL_CONF_DIR=$TROVE_DIR/etc/trove
 TROVE_AUTH_CACHE_DIR=${TROVE_AUTH_CACHE_DIR:-/var/cache/trove}
+TROVE_DATASTORE_TYPE=${TROVE_DATASTORE_TYPE:-"mysql"}
+TROVE_DATASTORE_VERSION=${TROVE_DATASTORE_VERSION:-"5.5"}
+TROVE_DATASTORE_PACKAGE=${TROVE_DATASTORE_PACKAGE:-"mysql-server-5.5"}
+TROVE_GUEST_IMAGE_URL=${TROVE_GUEST_IMAGE_URL:-"http://tarballs.openstack.org/trove/images/ubuntu_mysql.qcow2/ubuntu_mysql.qcow2"}
 
 # Support entry points installation of console scripts
 if [[ -d $TROVE_DIR/bin ]]; then
@@ -148,12 +152,8 @@
 
     iniset $TROVE_CONF_DIR/trove.conf DEFAULT rabbit_password $RABBIT_PASSWORD
     iniset $TROVE_CONF_DIR/trove.conf DEFAULT sql_connection `database_connection_url trove`
-
-    iniset $TROVE_LOCAL_CONF_DIR/trove-guestagent.conf.sample DEFAULT rabbit_password $RABBIT_PASSWORD
-    sed -i "s/localhost/$TROVE_HOST_GATEWAY/g" $TROVE_LOCAL_CONF_DIR/trove-guestagent.conf.sample
-
+    iniset $TROVE_CONF_DIR/trove.conf DEFAULT default_datastore $TROVE_DATASTORE_TYPE
     setup_trove_logging $TROVE_CONF_DIR/trove.conf
-    setup_trove_logging $TROVE_LOCAL_CONF_DIR/trove-guestagent.conf.sample
 
     # (Re)create trove taskmanager conf file if needed
     if is_service_enabled tr-tmgr; then
@@ -180,6 +180,18 @@
         iniset $TROVE_CONF_DIR/trove-conductor.conf DEFAULT control_exchange trove
         setup_trove_logging $TROVE_CONF_DIR/trove-conductor.conf
     fi
+
+    # Set up Guest Agent conf
+    iniset $TROVE_CONF_DIR/trove-guestagent.conf DEFAULT rabbit_host $TROVE_HOST_GATEWAY
+    iniset $TROVE_CONF_DIR/trove-guestagent.conf DEFAULT rabbit_password $RABBIT_PASSWORD
+    iniset $TROVE_CONF_DIR/trove-guestagent.conf DEFAULT nova_proxy_admin_user radmin
+    iniset $TROVE_CONF_DIR/trove-guestagent.conf DEFAULT nova_proxy_admin_tenant_name trove
+    iniset $TROVE_CONF_DIR/trove-guestagent.conf DEFAULT nova_proxy_admin_pass $RADMIN_USER_PASS
+    iniset $TROVE_CONF_DIR/trove-guestagent.conf DEFAULT trove_auth_url $TROVE_AUTH_ENDPOINT
+    iniset $TROVE_CONF_DIR/trove-guestagent.conf DEFAULT control_exchange trove
+    iniset $TROVE_CONF_DIR/trove-guestagent.conf DEFAULT log_dir /tmp/
+    iniset $TROVE_CONF_DIR/trove-guestagent.conf DEFAULT log_file trove-guestagent.log
+    setup_trove_logging $TROVE_CONF_DIR/trove-guestagent.conf
 }
 
 # install_troveclient() - Collect source and prepare
@@ -194,11 +206,22 @@
 
 # init_trove() - Initializes Trove Database as a Service
 function init_trove {
-    #(Re)Create trove db
+    # (Re)Create trove db
     recreate_database trove utf8
 
-    #Initialize the trove database
+    # Initialize the trove database
     $TROVE_BIN_DIR/trove-manage db_sync
+
+    # Upload the trove-guest image to glance
+    TROVE_GUEST_IMAGE_ID=$(upload_image $TROVE_GUEST_IMAGE_URL $TOKEN | grep ' id ' | get_field 2)
+
+    # Initialize appropriate datastores / datastore versions
+    $TROVE_BIN_DIR/trove-manage datastore_update "$TROVE_DATASTORE_TYPE" ""
+    $TROVE_BIN_DIR/trove-manage datastore_version_update "$TROVE_DATASTORE_TYPE" "$TROVE_DATASTORE_VERSION" "$TROVE_DATASTORE_TYPE" \
+        "$TROVE_GUEST_IMAGE_ID" "$TROVE_DATASTORE_PACKAGE" 1
+    $TROVE_BIN_DIR/trove-manage datastore_version_update "$TROVE_DATASTORE_TYPE" "inactive_version" "inactive_manager" "$TROVE_GUEST_IMAGE_ID" "" 0
+    $TROVE_BIN_DIR/trove-manage datastore_update "$TROVE_DATASTORE_TYPE" "$TROVE_DATASTORE_VERSION"
+    $TROVE_BIN_DIR/trove-manage datastore_update "Inactive_Datastore" ""
 }
 
 # start_trove() - Start running processes, including screen