#!/bin/bash # This is the database-relation-joined hook for the Openbook Charm. # The MySQL database and username are created for you. This hook # only for changing the default encoding (UTF-8) if needed. # If any command fails, stop execution of the hook with that error set -e # Show the commands that are getting executed. set -x container=tomcat7 if [[ -e /var/lib/tomcat7 ]]; then container=tomcat7 elif [[ -e /var/lib/tomcat6 ]]; then container=tomcat6 fi # Get the database values from the relation change. db_user=`relation-get user` #db_db=`relation-get database` db_pass=`relation-get password` db_host=`relation-get private-address` if [ -z "${db_user}" ]; then juju-log "No database user information sent yet. Silently exiting" exit 0 fi juju-log "db_user=${db_user} db_pass=${db_pass} db_host=${db_host}" openbook_directory="/usr/share/${container}/.Openbook" Result=`mysql -h${db_host} -P3306 -u${db_user} -p${db_pass} --skip-column-names -e "show databases like 'openbook'"` if [ "$Result" != "openbook" ]; then juju-log "Openbook database does not exist. Creating database objects..." juju-log "Use MySQL client to create initial database objects." mysqladmin -h ${db_host} -u ${db_user} --password=${db_pass} create "openbook" mysqladmin -h ${db_host} -u ${db_user} --password=${db_pass} create "openbook_jobs" mysqladmin -h ${db_host} -u ${db_user} --password=${db_pass} create "openbook_workflow" juju-log "Use MySQL client to create tables and indexes." mysql -h${db_host} -P3306 -u${db_user} -p${db_pass} --execute="source $CHARM_DIR/templates/openbook.sql" juju-log "$CHARM_NAME updated database schema successfully." fi # Shut down Tomcat. $CHARM_DIR/hooks/stop juju-log "Extracting properties file" fastjar -xf ${openbook_directory}/Openbook.war WEB-INF/classes/openbook.properties sed -i "s/DB_USER.*/DB_USER = ${db_user}/g" WEB-INF/classes/openbook.properties sed -i "s/DB_PASSWORD.*/DB_PASSWORD = ${db_pass}/g" WEB-INF/classes/openbook.properties sed -i "s/DB_ENTITY_HOST.*/DB_ENTITY_HOST = ${db_host}/g" WEB-INF/classes/openbook.properties sed -i "s/DB_WORKFLOW_HOST.*/DB_WORKFLOW_HOST = ${db_host}/g" WEB-INF/classes/openbook.properties sed -i "s/DB_JOBS_HOST.*/DB_JOBS_HOST = ${db_host}/g" WEB-INF/classes/openbook.properties juju-log "Injecting database settings into Openbook war file." fastjar -uf ${openbook_directory}/Openbook.war WEB-INF/classes/openbook.properties juju-log "Cleanup" rm -fr WEB-INF # To achieve idempotency, delete the previous war file if one already exists. if [[ -f /var/lib/${container}/webapps/Openbook.war ]]; then rm /var/lib/${container}/webapps/Openbook.war fi # Tomcat may expand the openbook.war file into a directory, delete that too. if [[ -d /var/lib/${container}/webapps/Openbook ]]; then rm -rf /var/lib/${container}/webapps/Openbook fi # Copy the Web application ARchive (WAR) to the Tomcat webapps directory. juju-log "Copying ${openbook_directory}/Openbook.war to /var/lib/${container}/webapps/" cp ${openbook_directory}/Openbook.war /var/lib/${container}/webapps/ # Restart Tomcat. $CHARM_DIR/hooks/start juju-log "$CHARM_NAME Database relation setup and ready."