#!/bin/sh

set -e

if [ -z "${APTGET}" ] ; then
	APTGET="apt-get -o Dpkg::Options::=--force-confnew --allow-downgrades --allow-change-held-packages -y"
fi

# Example: os_preseed_set_dbconfig_conf glance-common glance ${KEYSTONE_SQL_PASS} keystonedb keystone ${MYSQL_PASSWORD}
os_preseed_set_dbconfig_conf () {
	local PKG_NAME TMPL_NAME SQL_PASS DB_NAME DB_USER MYSQL_PASSWORD MYSQL_HOST
	PKG_NAME=${1}
	TMPL_NAME=${2}
	SQL_PASS=${3}
	DB_NAME=${4}
	DB_USER=${5}
	MYSQL_PASSWORD=${6}
	if [ -z "${7}" ] ; then
		MYSQL_HOST=""
	else
		MYSQL_HOST=${7}
	fi
	echo "# automatically generated by the maintainer scripts of ${PKG_NAME}
# any changes you make will be preserved, though your comments
# will be lost!  to change your settings you should edit this
# file and then run \"dpkg-reconfigure ${PKG_NAME}\"

# dbc_install: configure database with dbconfig-common?
#              set to anything but \"true\" to opt out of assistance
dbc_install='true'

# dbc_upgrade: upgrade database with dbconfig-common?
#              set to anything but \"true\" to opt out of assistance
dbc_upgrade='true'

# dbc_remove: deconfigure database with dbconfig-common?
#             set to anything but \"true\" to opt out of assistance
dbc_remove=''

# dbc_dbtype: type of underlying database to use
#	this exists primarily to let dbconfig-common know what database
#	type to use when a package supports multiple database types.  
#	don't change this value unless you know for certain that this
#	package supports multiple database types
dbc_dbtype='mysql'

# dbc_dbuser: database user
#	the name of the user who we will use to connect to the database.
dbc_dbuser='"${DB_USER}"'

# dbc_dbpass: database user password
#	the password to use with the above username when connecting
#	to a database, if one is required
dbc_dbpass='"${SQL_PASS}"'

# dbc_dbserver: database host.  
#	leave unset to use localhost (or a more efficient local method
#	if it exists).
dbc_dbserver='${MYSQL_HOST}'

# dbc_dbport: remote database port
#	leave unset to use the default.  only applicable if you are
#	using a remote database.
dbc_dbport=''

# dbc_dbname: name of database
#	this is the name of your application's database.
dbc_dbname='"${DB_NAME}"'

# dbc_dbadmin: name of the administrative user
#	this is the administrative user that is used to create all of the above
dbc_dbadmin='root'

dbc_dbadmpass='${MYSQL_PASSWORD}'

# dbc_basepath: base directory to hold database files
#	leave unset to use the default.  only applicable if you are
#	using a local (filesystem based) database.    
dbc_basepath=''

##
## postgresql specific settings.  if you don't use postgresql,
## you can safely ignore all of these
##

# dbc_ssl: should we require ssl?
#	set to \"true\" to require that connections use ssl
dbc_ssl=''

# dbc_authmethod_admin: authentication method for admin
# dbc_authmethod_user: authentication method for dbuser
#	see the section titled \"AUTHENTICATION METHODS\" in
#	/usr/share/doc/dbconfig-common/README.pgsql for more info
dbc_authmethod_admin=''
dbc_authmethod_user=''

##
## end postgresql specific settings
##
" > /tmp/${PKG_NAME}.conf
	TMPFILE=$(mktemp -t openstack-preseed-lib.XXXXXX)
	echo "${PKG_NAME} ${TMPL_NAME}/configure_db boolean true
${PKG_NAME} ${TMPL_NAME}/configure_db seen true
${PKG_NAME} ${TMPL_NAME}/dbconfig-install boolean true
${PKG_NAME} ${TMPL_NAME}/dbconfig-install seen true
${PKG_NAME} ${TMPL_NAME}/dbconfig-reinstall boolean true
${PKG_NAME} ${TMPL_NAME}/dbconfig-reinstall seen true
${PKG_NAME} ${TMPL_NAME}/dbconfig-upgrade boolean true
${PKG_NAME} ${TMPL_NAME}/dbconfig-upgrade seen true
${PKG_NAME} ${PKG_NAME}/database-type select mysql
${PKG_NAME} ${PKG_NAME}/database-type seen true
${PKG_NAME} ${PKG_NAME}/mysql/admin-user string root
${PKG_NAME} ${PKG_NAME}/mysql/admin-user seen true
${PKG_NAME} ${PKG_NAME}/mysql/admin-pass string ${MYSQL_PASSWORD}
${PKG_NAME} ${PKG_NAME}/mysql/admin-pass seen true
${PKG_NAME} ${PKG_NAME}/mysql/app-pass password ${SQL_PASS}
${PKG_NAME} ${PKG_NAME}/mysql/app-pass seen true
${PKG_NAME} ${PKG_NAME}/app-password-confirm password ${SQL_PASS}
${PKG_NAME} ${PKG_NAME}/app-password-confirm seen true
${PKG_NAME} ${PKG_NAME}/db/app-user string ${DB_USER}
${PKG_NAME} ${PKG_NAME}/db/app-user seen true
${PKG_NAME} ${PKG_NAME}/db/dbname string ${DB_NAME}
${PKG_NAME} ${PKG_NAME}/db/dbname seen true
${PKG_NAME} ${PKG_NAME}/password-confirm password ${MYSQL_PASSWORD}
${PKG_NAME} ${PKG_NAME}/password-confirm seen true
${PKG_NAME} ${PKG_NAME}/remember-admin-pass boolean true
${PKG_NAME} ${PKG_NAME}/remember-admin-pass seen true
${PKG_NAME} ${PKG_NAME}/dbconfig-reinstall boolean true
${PKG_NAME} ${PKG_NAME}/dbconfig-reinstall seen true
" >${TMPFILE}
	debconf-set-selections ${TMPFILE}
	rm ${TMPFILE}
	if [ "${MYSQL_HOST}" == "127.0.0.1" ] || 
	       [ "${MYSQL_HOST}" == "localhost" ];then
	    echo "${PKG_NAME} ${PKG_NAME}/mysql/method select Unix socket
${PKG_NAME} ${PKG_NAME}/mysql/method seen true
" | 	    debconf-set-selections
	else
	    echo "${PKG_NAME} ${PKG_NAME}/mysql/method select TCP/IP
${PKG_NAME} ${PKG_NAME}/mysql/method seen true
${PKG_NAME} ${PKG_NAME}/remote/newhost string ${MYSQL_HOST}
${PKG_NAME} ${PKG_NAME}/remote/newhost seen true
${PKG_NAME} ${PKG_NAME}/remote/host string ${MYSQL_HOST}
${PKG_NAME} ${PKG_NAME}/remote/host seen true
${PKG_NAME} ${PKG_NAME}/remote/port string
${PKG_NAME} ${PKG_NAME}/remote/port seen true
" 	    | debconf-set-selections
	fi
}

os_preseed_endpoint () {
	local OSPE_PKG_NAME OSPE_TMPL_NAME OSPE_KEYSTONE_ENDPOINT_IP OSPE_KEYSTONE_REGION OSPE_KEYSTONE_ADMIN_PASS
	OSPE_PKG_NAME=${1}
	OSPE_TMPL_NAME=${2}
	OSPE_KEYSTONE_ENDPOINT_IP=${3}
	OSPE_KEYSTONE_REGION=${4}
	OSPE_KEYSTONE_ADMIN_PASS=${5}

	TMPFILE=$(mktemp -t openstack-preseed-lib.XXXXXX)
	echo "${OSPE_PKG_NAME} ${OSPE_TMPL_NAME}/configure_api-endpoint boolean true
${OSPE_PKG_NAME} ${OSPE_TMPL_NAME}/configure_api-endpoint seen true
${OSPE_PKG_NAME} ${OSPE_TMPL_NAME}/api-keystone-address string ${OSPE_KEYSTONE_ENDPOINT_IP}
${OSPE_PKG_NAME} ${OSPE_TMPL_NAME}/api-keystone-address seen true
${OSPE_PKG_NAME} ${OSPE_TMPL_NAME}/api-keystone-admin-username string admin
${OSPE_PKG_NAME} ${OSPE_TMPL_NAME}/api-keystone-admin-username seen true
${OSPE_PKG_NAME} ${OSPE_TMPL_NAME}/api-keystone-admin-project-name string admin
${OSPE_PKG_NAME} ${OSPE_TMPL_NAME}/api-keystone-admin-project-name seen true
${OSPE_PKG_NAME} ${OSPE_TMPL_NAME}/api-keystone-admin-password string ${OSPE_KEYSTONE_ADMIN_PASS}
${OSPE_PKG_NAME} ${OSPE_TMPL_NAME}/api-keystone-admin-password seen true
${OSPE_PKG_NAME} ${OSPE_TMPL_NAME}/api-endpoint-address string ${OSPE_KEYSTONE_ENDPOINT_IP}
${OSPE_PKG_NAME} ${OSPE_TMPL_NAME}/api-endpoint-address seen true
${OSPE_PKG_NAME} ${OSPE_TMPL_NAME}/api-endpoint-region-name string ${OSPE_KEYSTONE_REGION}
${OSPE_PKG_NAME} ${OSPE_TMPL_NAME}/api-endpoint-region-name seen true
" >${TMPFILE}
	debconf-set-selections ${TMPFILE}
	rm ${TMPFILE}
}

os_preseed_keystone_authtoken () {
	local OSPKO_PKG_NAME OSPKO_TMPL_NAME OSPKO_AUTH_HOST OSPKO_AUTH_REGION OSPKO_AUTH_ADMIN_USERNAME OSPKO_AUTH_ADMIN_PROJECT_NAME OSPKO_AUTH_ADMIN_PASS OSPKO_AUTH_SERVICE_USERNAME OSPKO_AUTH_SERVICE_PROJECT_NAME OSPKO_AUTH_SERVICE_PASS
	OSPKO_PKG_NAME=${1}
	OSPKO_TMPL_NAME=${2}
	OSPKO_AUTH_HOST=${3}
	OSPKO_AUTH_REGION=${4}
	OSPKO_AUTH_ADMIN_USERNAME=${5}
	OSPKO_AUTH_ADMIN_PROJECT_NAME=${6}
	OSPKO_AUTH_ADMIN_PASS=${7}
	OSPKO_AUTH_SERVICE_USERNAME=${8}
	OSPKO_AUTH_SERVICE_PROJECT_NAME=${9}
	OSPKO_AUTH_SERVICE_PASS=${10}

	TMPFILE=$(mktemp -t openstack-preseed-lib.XXXXXX)
	echo "${OSPKO_PKG_NAME} ${OSPKO_TMPL_NAME}/configure_ksat boolean true
${OSPKO_PKG_NAME} ${OSPKO_TMPL_NAME}/configure_ksat seen true
${OSPKO_PKG_NAME} ${OSPKO_TMPL_NAME}/ksat-public-url string http://${OSPKO_AUTH_HOST}:5000
${OSPKO_PKG_NAME} ${OSPKO_TMPL_NAME}/ksat-public-url seen true
${OSPKO_PKG_NAME} ${OSPKO_TMPL_NAME}/ksat-admin-url string http://${OSPKO_AUTH_HOST}:35357
${OSPKO_PKG_NAME} ${OSPKO_TMPL_NAME}/ksat-admin-url seen true
${OSPKO_PKG_NAME} ${OSPKO_TMPL_NAME}/ksat-region string ${OSPKO_AUTH_REGION}
${OSPKO_PKG_NAME} ${OSPKO_TMPL_NAME}/ksat-region seen true
${OSPKO_PKG_NAME} ${OSPKO_TMPL_NAME}/ksat-create-service-user boolean true
${OSPKO_PKG_NAME} ${OSPKO_TMPL_NAME}/ksat-create-service-user seen true
${OSPKO_PKG_NAME} ${OSPKO_TMPL_NAME}/ksat-admin-username string ${OSPKO_AUTH_ADMIN_USERNAME}
${OSPKO_PKG_NAME} ${OSPKO_TMPL_NAME}/ksat-admin-username seen true
${OSPKO_PKG_NAME} ${OSPKO_TMPL_NAME}/ksat-admin-project-name string ${OSPKO_AUTH_ADMIN_PROJECT_NAME}
${OSPKO_PKG_NAME} ${OSPKO_TMPL_NAME}/ksat-admin-project-name seen true
${OSPKO_PKG_NAME} ${OSPKO_TMPL_NAME}/ksat-admin-password password ${OSPKO_AUTH_ADMIN_PASS}
${OSPKO_PKG_NAME} ${OSPKO_TMPL_NAME}/ksat-admin-password seen true
${OSPKO_PKG_NAME} ${OSPKO_TMPL_NAME}/ksat-service-username string ${OSPKO_AUTH_SERVICE_USERNAME}
${OSPKO_PKG_NAME} ${OSPKO_TMPL_NAME}/ksat-service-username seen true
${OSPKO_PKG_NAME} ${OSPKO_TMPL_NAME}/ksat-service-project-name string ${OSPKO_AUTH_SERVICE_PROJECT_NAME}
${OSPKO_PKG_NAME} ${OSPKO_TMPL_NAME}/ksat-service-project-name seen true
${OSPKO_PKG_NAME} ${OSPKO_TMPL_NAME}/ksat-service-password password ${OSPKO_AUTH_SERVICE_PASS}
${OSPKO_PKG_NAME} ${OSPKO_TMPL_NAME}/ksat-service-password seen true
" >${TMPFILE}
	debconf-set-selections ${TMPFILE}
	rm ${TMPFILE}
}

os_preseed_rabbit_creds () {
	local PKG_NAME TMPL_NAME RBT_HOST RBT_LOGIN RBT_PASS
	PKG_NAME=${1}
	TMPL_NAME=${2}
	RBT_HOST=${3}
	RBT_LOGIN=${4}
	RBT_PASS=${5}

	TMPFILE=$(mktemp -t openstack-preseed-lib.XXXXXX)
	echo "${PKG_NAME} ${TMPL_NAME}/configure_rabbit boolean true
${PKG_NAME} ${TMPL_NAME}/configure_rabbit seen true
${PKG_NAME} ${TMPL_NAME}/rabbit-host string ${RBT_HOST}
${PKG_NAME} ${TMPL_NAME}/rabbit-host seen true
${PKG_NAME} ${TMPL_NAME}/rabbit-userid string ${RBT_LOGIN}
${PKG_NAME} ${TMPL_NAME}/rabbit-userid seen true
${PKG_NAME} ${TMPL_NAME}/rabbit-password password ${RBT_PASS}
${PKG_NAME} ${TMPL_NAME}/rabbit-password seen true
" >${TMPFILE}
	debconf-set-selections ${TMPFILE}
	rm ${TMPFILE}
}

os_pressed_debconf_and_dbconfig_common () {
	$APTGET install -y debconf dbconfig-common
	echo "debconf debconf/priority select medium
debconf debconf/priority seen true
debconf debconf-apt-progress/title string fake
debconf debconf-apt-progress/title seen true  
debconf debconf-apt-progress/preparing string fake
debconf debconf-apt-progress/preparing seen true
" | debconf-set-selections
	dpkg-reconfigure -f noninteractive debconf

	echo "dbconfig-common dbconfig-common/remote-questions-default boolean true
dbconfig-common dbconfig-common/remote-questions-default seen true
dbconfig-common dbconfig-common/remember-admin-pass boolean true
dbconfig-common dbconfig-common/remember-admin-pass seen true
" | debconf-set-selections
	$APTGET install -y debconf dbconfig-common
}

os_pressed_man_db () {
	echo "man-db man-db/install-setuid boolean false
man-db man-db/install-setuid seen true
" | debconf-set-selections || true
}

os_pressed_ca_certs () {
	echo "ca-certificates ca-certificates/trust_new_crts seen true
ca-certificates ca-certificates/trust_new_crts select yes
" | debconf-set-selections
}

os_preseed_ntfs_3g () {
	echo "ntfs-3g ntfs-3g/setuid-root boolean false
ntfs-3g ntfs-3g/setuid-root seen true
ntfs-3g ntfs-3g/initramfs boolean false
ntfs-3g ntfs-3g/initramfs seen true
" | debconf-set-selections
}

os_pressed_libguestfs0 () {
	echo "libguestfs0 libguestfs/update-appliance boolean true
libguestfs0 libguestfs/update-appliance seen true
" | debconf-set-selections
}

os_pressed_misc () {
	os_pressed_debconf_and_dbconfig_common
	os_pressed_man_db
	#os_pressed_ca_certs
	os_preseed_ntfs_3g
	os_pressed_libguestfs0
}

# Preseed and install keystone
# Usage: os_install_keystone auth_token service_pass endpoint_ip_addr region keystone_sql_pass mysql_root_pass
os_install_keystone () {
	local KEYSTONE_AUTH_TOKEN KEYSTONE_AUTH_TOKEN KEYSTONE_ADM_PASS KEYSTONE_ENDPOINT_IP KEYSTONE_REGION KEYSTONE_SQL_PASS MYSQL_PASSWORD MYSQL_HOST
	KEYSTONE_AUTH_TOKEN=${1}
	KEYSTONE_ADM_PASS=${2}
	KEYSTONE_ENDPOINT_IP=${3}
	KEYSTONE_REGION=${4}
	KEYSTONE_SQL_PASS=${5}
	MYSQL_PASSWORD=${6}
	MYSQL_HOST=${7}

	TMPFILE=$(mktemp -t openstack-preseed-lib.XXXXXX)
	echo "keystone keystone/configure_db boolean true
keystone keystone/configure_db seen true
keystone keystone/auth-token password ${KEYSTONE_AUTH_TOKEN}
keystone keystone/auth-token seen true
keystone keystone/create-admin-tenant boolean true
keystone keystone/create-admin-tenant seen true
keystone keystone/admin-user string admin
keystone keystone/admin-user seen true
keystone keystone/admin-email string root@localhost
keystone keystone/admin-email seen true
keystone keystone/admin-password password ${KEYSTONE_ADM_PASS}
keystone keystone/admin-password seen true
keystone keystone/admin-password-confirm password ${KEYSTONE_ADM_PASS}
keystone keystone/admin-password-confirm seen true
keystone keystone/admin-role-name string admin
keystone keystone/admin-role-name seen true
keystone keystone/admin-tenant-name string admin
keystone keystone/admin-tenant-name seen true
keystone keystone/register-endpoint boolean true
keystone keystone/register-endpoint seen true
keystone keystone/endpoint-ip string ${KEYSTONE_ENDPOINT_IP}
keystone keystone/endpoint-ip seen true
keystone keystone/region-name string ${KEYSTONE_REGION}
keystone keystone/region-name seen true
" >${TMPFILE}
	debconf-set-selections ${TMPFILE}
	rm ${TMPFILE}

	os_preseed_set_dbconfig_conf keystone keystone ${KEYSTONE_SQL_PASS} keystonedb keystone ${MYSQL_PASSWORD} ${MYSQL_HOST}
	#DEBIAN_FRONTEND=noninteractive $APTGET install -y keystone
}

os_preseed_glance () {
	local GLANCE_SQL_PASS MYSQL_PASSWORD KEYSTONE_ENDPOINT_IP KEYSTONE_REGION KEYSTONE_ADMIN_PASS KEYSTONE_AUTH_TOKEN RBT_HOST RBT_LOGIN RBT_PASS
	GLANCE_SQL_PASS=${1}
	MYSQL_PASSWORD=${2}
	MYSQL_HOST=${3}
	KEYSTONE_ENDPOINT_IP=${4}
	KEYSTONE_REGION=${5}
	KEYSTONE_ADMIN_PASS=${6}
	KEYSTONE_AUTH_TOKEN=${7}
	RBT_HOST=${8}
	RBT_LOGIN=${9}
	RBT_PASS=${10}

	echo "glance-common glance/paste-flavor select keystone
glance-common glance/paste-flavor seen true
" | debconf-set-selections
	os_preseed_set_dbconfig_conf glance-common glance ${GLANCE_SQL_PASS} glancedb glance ${MYSQL_PASSWORD} ${MYSQL_HOST}
	os_preseed_endpoint glance-api glance ${KEYSTONE_ENDPOINT_IP} ${KEYSTONE_REGION} ${KEYSTONE_ADMIN_PASS}
	os_preseed_keystone_authtoken glance-common glance ${KEYSTONE_ENDPOINT_IP} ${KEYSTONE_REGION} admin admin ${KEYSTONE_ADMIN_PASS} glance service $(dd if=/dev/random bs=64 count=1 2>|/dev/null | md5sum | awk '{print $1}')
	os_preseed_rabbit_creds glance-common glance ${RBT_HOST} ${RBT_LOGIN} ${RBT_PASS}
}

os_preseed_nova () {
	local NOVA_SQL_PASS NOVA_API_SQL_PASS MYSQL_PASSWORD MYSQL_HOST KEYSTONE_ENDPOINT_IP KEYSTONE_REGION KEYSTONE_ADMIN_PASS KEYSTONE_AUTH_TOKEN RBT_HOST RBT_LOGIN RBT_PASS NOVA_SERVICE_PASS
	NOVA_SQL_PASS=${1}
	NOVA_API_SQL_PASS=${2}
	MYSQL_PASSWORD=${3}
	MYSQL_HOST=${4}
	KEYSTONE_ENDPOINT_IP=${5}
	KEYSTONE_REGION=${6}
	KEYSTONE_ADMIN_PASS=${7}
	KEYSTONE_AUTH_TOKEN=${8}
	RBT_HOST=${9}
	RBT_LOGIN=${10}
	RBT_PASS=${11}
	METADATA_SHARED_SECRET=${12}
	NOVA_SERVICE_PASS=${13}

	TMPFILE=$(mktemp -t openstack-preseed-lib.XXXXXX)
	echo "nova-common nova/active-api multiselect osapi_compute, metadata
nova-common nova/active-api seen true
nova-consoleproxy nova-consoleproxy/daemon_type select spicehtml5
nova-consoleproxy nova-consoleproxy/daemon_type seen true
nova-common nova/neutron_url string http://${KEYSTONE_ENDPOINT_IP}:9696
nova-common nova/neutron_url seen true
nova-common nova/neutron_admin_tenant_name string admin
nova-common nova/neutron_admin_tenant_name seen true
nova-common nova/neutron_admin_username string admin
nova-common nova/neutron_admin_username seen true
nova-common nova/neutron_admin_password password ${KEYSTONE_ADMIN_PASS}
nova-common nova/neutron_admin_password seen true
nova-common nova/metadata_secret password ${METADATA_SHARED_SECRET}
nova-common nova/metadata_secret seen true 
nova-common nova/my-ip string ${KEYSTONE_ENDPOINT_IP}
nova-common nova/my-ip seen true
nova-common nova/placement_admin_password password  ${KEYSTONE_ADMIN_PASS}
nova-common nova/placement_admin_password seen true
nova-common nova/placement_admin_tenant_name string service
nova-common nova/placement_admin_tenant_name seen true
nova-common nova/placement_os_region_name   string  ${KEYSTONE_REGION}
nova-common nova/placement_os_region_name   seen true
nova-common nova/placement_admin_username   string  placement
nova-common nova/placement_admin_username seen true
nova-common nova/cinder_os_region_name   string  ${KEYSTONE_REGION}
nova-common nova/cinder_os_region_name seen true
nova-common nova/glance_api_servers string http://${KEYSTONE_ENDPOINT_IP}:9292
nova-common nova/glance_api_servers seen true
nova-api    novaapi/configure_db boolean true
nova-api    novaapi/configure_db seen true
nova-placement-api      nova-placement-api/configure_db boolean false
nova-placement-api      nova-placement-api/configure_db seen true
" >${TMPFILE}
	debconf-set-selections ${TMPFILE}
	rm ${TMPFILE}

	os_preseed_set_dbconfig_conf nova-common        nova               ${NOVA_SQL_PASS}     novadb          nova          ${MYSQL_PASSWORD} ${MYSQL_HOST}
	os_preseed_set_dbconfig_conf nova-api           nova-api           ${NOVA_API_SQL_PASS} novaapidb       novaapi       ${MYSQL_PASSWORD} ${MYSQL_HOST}
	os_preseed_set_dbconfig_conf nova-placement-api nova-placement-api ${NOVA_API_SQL_PASS} novaplacementdb novaplacement ${MYSQL_PASSWORD} ${MYSQL_HOST}
	os_preseed_endpoint nova-api nova ${KEYSTONE_ENDPOINT_IP} ${KEYSTONE_REGION} ${KEYSTONE_ADMIN_PASS}
	os_preseed_endpoint nova-placement-api nova-placement-api ${KEYSTONE_ENDPOINT_IP} ${KEYSTONE_REGION} ${KEYSTONE_ADMIN_PASS}
	os_preseed_keystone_authtoken nova-common nova ${KEYSTONE_ENDPOINT_IP} ${KEYSTONE_REGION} admin admin ${KEYSTONE_ADMIN_PASS} nova service ${NOVA_SERVICE_PASS}
	os_preseed_rabbit_creds nova-common nova ${RBT_HOST} ${RBT_LOGIN} ${RBT_PASS}
}

os_preseed_neutron () {
	local NEUTRON_SQL_PASS MYSQL_PASSWORD MYSQL_HOST KEYSTONE_ENDPOINT_IP KEYSTONE_REGION KEYSTONE_ADMIN_PASS KEYSTONE_AUTH_TOKEN RBT_HOST RBT_LOGIN RBT_PASS NOVA_SERVICE_PASS
	NEUTRON_SQL_PASS=${1}
	MYSQL_PASSWORD=${2}
	MYSQL_HOST=${3}
	KEYSTONE_ENDPOINT_IP=${4}
	KEYSTONE_REGION=${5}
	KEYSTONE_ADMIN_PASS=${6}
	KEYSTONE_AUTH_TOKEN=${7}
	RBT_HOST=${8}
	RBT_LOGIN=${9}
	RBT_PASS=${10}
	METADATA_SHARED_SECRET=${11}
	NOVA_URL=${12}
	NOVA_TENANT_ID=${13}
	NOVA_SERVICE_PASS=${14}
	INSTALL_TYPE="multi-node"
	if [ "${INSTALL_TYPE}" = "single-node" ] ; then
		NETWORK_TYPE="local"
		TUNNELING="True"
	else
		NETWORK_TYPE="gre"
		TUNNELING="False"
	fi

	TMPFILE=$(mktemp -t openstack-preseed-lib.XXXXXX)
	echo "neutron-common neutron/tenant_network_type select ${NETWORK_TYPE}
neutron-common neutron/tenant_network_type seen true
neutron-common neutron/enable_tunneling select ${TUNNELING}
neutron-common neutron/enable_tunneling seen true
neutron-common neutron/tunnel_id_ranges string 1:1000
neutron-common neutron/tunnel_id_ranges seen true
neutron-common neutron/plugin-select select ml2
neutron-common neutron/plugin-select seen true
neutron-metadata-agent neutron-metadata/metadata_secret password ${METADATA_SHARED_SECRET}
neutron-metadata-agent neutron-metadata/metadata_secret seen true
neutron-common neutron/nova_url string ${NOVA_URL}
neutron-common neutron/nova_url seen true
neutron-common neutron/nova_auth_url string http://${KEYSTONE_ENDPOINT_IP}:5000
neutron-common neutron/nova_auth_url seen true
neutron-common neutron/nova_region string ${KEYSTONE_REGION}
neutron-common neutron/nova_region seen true
neutron-common neutron/nova_admin_tenant_id string ${NOVA_TENANT_ID}
neutron-common neutron/nova_admin_tenant_id seen true
neutron-common neutron/nova_admin_username string admin
neutron-common neutron/nova_admin_username seen true
neutron-common neutron/nova_admin_password password ${KEYSTONE_ADMIN_PASS}
neutron-common neutron/nova_admin_password seen true
neutron-common neutron/nova_service_password password ${NOVA_SERVICE_PASS}
neutron-common neutron/nova_service_password seen true
" >${TMPFILE}
	debconf-set-selections ${TMPFILE}
	rm ${TMPFILE}

	os_preseed_set_dbconfig_conf neutron-common neutron ${NEUTRON_SQL_PASS} neutrondb neutron ${MYSQL_PASSWORD} ${MYSQL_HOST}
	os_preseed_endpoint neutron-server neutron ${KEYSTONE_ENDPOINT_IP} ${KEYSTONE_REGION} ${KEYSTONE_ADMIN_PASS}
	os_preseed_keystone_authtoken neutron-common neutron ${KEYSTONE_ENDPOINT_IP} ${KEYSTONE_REGION} admin admin ${KEYSTONE_ADMIN_PASS} neutron service $(dd if=/dev/random bs=64 count=1 2>|/dev/null | md5sum | awk '{print $1}')
	os_preseed_keystone_authtoken neutron-metadata-agent neutron-metadata ${KEYSTONE_ENDPOINT_IP} ${KEYSTONE_REGION} admin admin ${KEYSTONE_ADMIN_PASS} neutronmetadata service $(dd if=/dev/random bs=64 count=1 2>|/dev/null | md5sum | awk '{print $1}')
	os_preseed_rabbit_creds neutron-common neutron ${RBT_HOST} ${RBT_LOGIN} ${RBT_PASS}
}

os_preseed_cinder () {
	local CINDER_SQL_PASS MYSQL_PASSWORD MYSQL_HOST KEYSTONE_ENDPOINT_IP KEYSTONE_REGION KEYSTONE_ADMIN_PASS KEYSTONE_AUTH_TOKEN RBT_HOST RBT_LOGIN RBT_PASS
	CINDER_SQL_PASS=${1}
	MYSQL_PASSWORD=${2}
	MYSQL_HOST=${3}
	KEYSTONE_ENDPOINT_IP=${4}
	KEYSTONE_REGION=${5}
	KEYSTONE_ADMIN_PASS=${6}
	KEYSTONE_AUTH_TOKEN=${7}
	RBT_HOST=${8}
	RBT_LOGIN=${9}
	RBT_PASS=${10}

	os_preseed_set_dbconfig_conf cinder-common cinder ${CINDER_SQL_PASS} cinderdb cinder ${MYSQL_PASSWORD} ${MYSQL_HOST}
	os_preseed_endpoint cinder-api cinder ${KEYSTONE_ENDPOINT_IP} ${KEYSTONE_REGION} ${KEYSTONE_ADMIN_PASS}
	os_preseed_keystone_authtoken cinder-common cinder ${KEYSTONE_ENDPOINT_IP} ${KEYSTONE_REGION} admin admin ${KEYSTONE_ADMIN_PASS} cinder service $(dd if=/dev/random bs=64 count=1 2>|/dev/null | md5sum | awk '{print $1}')
	os_preseed_rabbit_creds cinder-common cinder ${RBT_HOST} ${RBT_LOGIN} ${RBT_PASS}
}

os_preseed_ceilometer () {
	local KEYSTONE_ENDPOINT_IP KEYSTONE_REGION KEYSTONE_ADMIN_PASS KEYSTONE_AUTH_TOKEN RBT_HOST RBT_LOGIN RBT_PASS
	KEYSTONE_ENDPOINT_IP=${1}
	KEYSTONE_REGION=${2}
	KEYSTONE_ADMIN_PASS=${3}
	KEYSTONE_AUTH_TOKEN=${4}
	RBT_HOST=${5}
	RBT_LOGIN=${6}
	RBT_PASS=${7}

	os_preseed_keystone_authtoken ceilometer-common ceilometer ${KEYSTONE_ENDPOINT_IP} ${KEYSTONE_REGION} admin admin ${KEYSTONE_ADMIN_PASS} ceilometer service $(dd if=/dev/random bs=64 count=1 2>|/dev/null | md5sum | awk '{print $1}')
	os_preseed_rabbit_creds ceilometer-common ceilometer ${RBT_HOST} ${RBT_LOGIN} ${RBT_PASS}
}

os_preseed_heat () {
	local HEAT_SQL_PASS MYSQL_PASSWORD MYSQL_HOST KEYSTONE_ENDPOINT_IP KEYSTONE_REGION KEYSTONE_ADMIN_PASS KEYSTONE_AUTH_TOKEN RBT_HOST RBT_LOGIN RBT_PASS
	HEAT_SQL_PASS=${1}
	MYSQL_PASSWORD=${2}
	MYSQL_HOST=${3}
	KEYSTONE_ENDPOINT_IP=${4}
	KEYSTONE_REGION=${5}
	KEYSTONE_ADMIN_PASS=${6}
	KEYSTONE_AUTH_TOKEN=${7}
	RBT_HOST=${8}
	RBT_LOGIN=${9}
	RBT_PASS=${10}

	TMPFILE=$(mktemp -t openstack-preseed-lib.XXXXXX)
	echo "heat-api      heat/configure_api-endpoint     boolean true
heat-api      heat/configure_api-endpoint     seen true
heat-api-cfn  heat-api-cfn/api-keystone-admin-password password ${KEYSTONE_ADMIN_PASS}
heat-api-cfn  heat-api-cfn/api-keystone-admin-password seen true
heat-api-cfn  heat-api-cfn/configure_api-endpoint     boolean true
heat-api-cfn  heat-api-cfn/configure_api-endpoint     seen true
heat-common   heat/heat_domain_admin_password password ${KEYSTONE_ADMIN_PASS}
heat-common   heat/heat_domain_admin_password seen true
" >${TMPFILE}
	debconf-set-selections ${TMPFILE}
	rm ${TMPFILE}

	os_preseed_set_dbconfig_conf heat-common heat ${HEAT_SQL_PASS} heatdb heat ${MYSQL_PASSWORD} ${MYSQL_HOST}
	os_preseed_endpoint heat-api heat ${KEYSTONE_ENDPOINT_IP} ${KEYSTONE_REGION} ${KEYSTONE_ADMIN_PASS}
	os_preseed_endpoint heat-api-cfn heat-api-cfn ${KEYSTONE_ENDPOINT_IP} ${KEYSTONE_REGION} ${KEYSTONE_ADMIN_PASS}
	os_preseed_keystone_authtoken heat-common heat ${KEYSTONE_ENDPOINT_IP} ${KEYSTONE_REGION} admin admin ${KEYSTONE_ADMIN_PASS} heat service $(dd if=/dev/random bs=64 count=1 2>|/dev/null | md5sum | awk '{print $1}')
	os_preseed_rabbit_creds heat-common heat ${RBT_HOST} ${RBT_LOGIN} ${RBT_PASS}
}

os_preseed_aodh () {
	local AODH_SQL_PASS MYSQL_PASSWORD MYSQL_HOST KEYSTONE_ENDPOINT_IP KEYSTONE_REGION KEYSTONE_ADMIN_PASS KEYSTONE_AUTH_TOKEN RBT_HOST RBT_LOGIN RBT_PASS
	AODH_SQL_PASS=${1}
	MYSQL_PASSWORD=${2}
	MYSQL_HOST=${3}
	KEYSTONE_ENDPOINT_IP=${4}
	KEYSTONE_REGION=${5}
	KEYSTONE_ADMIN_PASS=${6}
	KEYSTONE_AUTH_TOKEN=${7}
	RBT_HOST=${8}
	RBT_LOGIN=${9}
	RBT_PASS=${10}

	os_preseed_set_dbconfig_conf aodh-common aodh ${AODH_SQL_PASS} aodhdb aodh ${MYSQL_PASSWORD} ${MYSQL_HOST}
	os_preseed_endpoint aodh-api aodh ${KEYSTONE_ENDPOINT_IP} ${KEYSTONE_REGION} ${KEYSTONE_ADMIN_PASS}
	os_preseed_keystone_authtoken aodh-common aodh ${KEYSTONE_ENDPOINT_IP} ${KEYSTONE_REGION} admin admin ${KEYSTONE_ADMIN_PASS} aodh service $(dd if=/dev/random bs=64 count=1 2>|/dev/null | md5sum | awk '{print $1}')
	os_preseed_rabbit_creds aodh-common aodh ${RBT_HOST} ${RBT_LOGIN} ${RBT_PASS}
}

os_pressed_horizon () {
	echo "openstack-dashboard-apache horizon/activate_vhost boolean true
openstack-dashboard-apache horizon/activate_vhost seen true
openstack-dashboard-apache horizon/use_ssl boolean true
openstack-dashboard-apache horizon/use_ssl seen true
" | debconf-set-selections
}

os_preseed_standard () {
	local APP_NAME APP_NAME APP_SQL_PASS MYSQL_PASSWORD MYSQL_HOST KEYSTONE_ENDPOINT_IP KEYSTONE_REGION KEYSTONE_ADMIN_PASS KEYSTONE_AUTH_TOKEN RBT_HOST RBT_LOGIN RBT_PASS
	APP_NAME=${1}
	APP_SQL_PASS=${2}
	MYSQL_PASSWORD=${3}
	MYSQL_HOST=${4}
	KEYSTONE_ENDPOINT_IP=${5}
	KEYSTONE_REGION=${6}
	KEYSTONE_ADMIN_PASS=${7}
	KEYSTONE_AUTH_TOKEN=${8}
	RBT_HOST=${9}
	RBT_LOGIN=${10}
	RBT_PASS=${11}

	os_preseed_set_dbconfig_conf ${APP_NAME}-common ${APP_NAME} ${APP_SQL_PASS} ${APP_NAME}db ${APP_NAME} ${MYSQL_PASSWORD} ${MYSQL_HOST}
	os_preseed_endpoint ${APP_NAME}-api ${APP_NAME} ${KEYSTONE_ENDPOINT_IP} ${KEYSTONE_REGION} ${KEYSTONE_ADMIN_PASS}
	os_preseed_rabbit_creds ${APP_NAME}-common ${APP_NAME} ${RBT_HOST} ${RBT_LOGIN} ${RBT_PASS}
}

os_preseed_designate () {
	os_preseed_standard designate $@
}

os_preseed_barbican () {
	os_preseed_standard barbican $@
}

os_preseed_manila () {
	os_preseed_standard manila $@
}

os_preseed_mistral () {
	os_preseed_standard mistral $@
}

os_preseed_trove () {
	os_preseed_standard trove $@
}

os_preseed_sahara () {
	os_preseed_standard sahara $@
}

os_preseed_murano () {
	os_preseed_standard murano $@
}

os_preseed_congress () {
	local CONGRESS_SQL_PASS MYSQL_PASSWORD MYSQL_HOST KEYSTONE_ENDPOINT_IP KEYSTONE_REGION KEYSTONE_ADMIN_PASS KEYSTONE_AUTH_TOKEN
	CONGRESS_SQL_PASS=${1}
	MYSQL_PASSWORD=${2}
	MYSQL_HOST=${3}
	KEYSTONE_ENDPOINT_IP=${4}
	KEYSTONE_REGION=${5}
	KEYSTONE_ADMIN_PASS=${6}
	KEYSTONE_AUTH_TOKEN=${7}
	os_preseed_set_dbconfig_conf congress-server congress ${CONGRESS_SQL_PASS} congressdb congress ${MYSQL_PASSWORD} ${MYSQL_HOST}
	os_preseed_endpoint congress-server congress ${KEYSTONE_ENDPOINT_IP} ${KEYSTONE_REGION} ${KEYSTONE_ADMIN_PASS}
	os_preseed_keystone_authtoken congress-common congress ${KEYSTONE_ENDPOINT_IP} ${KEYSTONE_REGION} admin admin ${KEYSTONE_ADMIN_PASS} congress service $(dd if=/dev/random bs=64 count=1 2>|/dev/null | md5sum | awk '{print $1}')
}
