charm-openstack-dashboard/hooks/horizon-common

98 lines
3.4 KiB
Bash

#!/bin/bash
# vim: set ts=2:et
CHARM="openstack-dashboard"
PACKAGES="openstack-dashboard python-keystoneclient python-memcache memcached haproxy python-novaclient"
LOCAL_SETTINGS="/etc/openstack-dashboard/local_settings.py"
HOOKS_DIR="$CHARM_DIR/hooks"
if [[ -e "$HOOKS_DIR/lib/openstack-common" ]] ; then
. $HOOKS_DIR/lib/openstack-common
else
juju-log "ERROR: Couldn't load $HOOKS_DIR/lib/openstack-common." && exit 1
fi
set_or_update() {
# set a key = value option in $LOCAL_SETTINGS
local key=$1 value=$2
[[ -z "$key" ]] || [[ -z "$value" ]] &&
juju-log "$CHARM set_or_update: ERROR - missing parameters" && return 1
if [ "$value" == "True" ] || [ "$value" == "False" ]; then
grep -q "^$key = $value" "$LOCAL_SETTINGS" &&
juju-log "$CHARM set_or_update: $key = $value already set" && return 0
else
grep -q "^$key = \"$value\"" "$LOCAL_SETTINGS" &&
juju-log "$CHARM set_or_update: $key = $value already set" && return 0
fi
if grep -q "^$key = " "$LOCAL_SETTINGS" ; then
juju-log "$CHARM set_or_update: Setting $key = $value"
cp "$LOCAL_SETTINGS" /etc/openstack-dashboard/local_settings.last
if [ "$value" == "True" ] || [ "$value" == "False" ]; then
sed -i "s|\(^$key = \).*|\1$value|g" "$LOCAL_SETTINGS" || return 1
else
sed -i "s|\(^$key = \).*|\1\"$value\"|g" "$LOCAL_SETTINGS" || return 1
fi
else
juju-log "$CHARM set_or_update: Adding $key = $value"
if [ "$value" == "True" ] || [ "$value" == "False" ]; then
echo "$key = $value" >>$LOCAL_SETTINGS || return 1
else
echo "$key = \"$value\"" >>$LOCAL_SETTINGS || return 1
fi
fi
return 0
}
do_openstack_upgrade() {
local rel="$1"
shift
local packages=$@
# Setup apt repository access and kick off the actual package upgrade.
configure_install_source "$rel"
apt-get update
DEBIAN_FRONTEND=noninteractive apt-get --option Dpkg::Options::=--force-confnew -y \
install $packages
# Configure new config files for access to keystone, if a relation exists.
r_id=$(relation-ids identity-service | head -n1)
if [[ -n "$r_id" ]] ; then
export JUJU_REMOTE_UNIT=$(relation-list -r $r_id | head -n1)
export JUJU_RELATION="identity-service"
export JUJU_RELATION_ID="$r_id"
local service_host=$(relation-get -r $r_id service_host)
local service_port=$(relation-get -r $r_id service_port)
if [[ -n "$service_host" ]] && [[ -n "$service_port" ]] ; then
service_url="http://$service_host:$service_port/v2.0"
set_or_update OPENSTACK_KEYSTONE_URL "$service_url"
fi
fi
}
configure_apache() {
# Reconfigure to listen on provided port
a2ensite default-ssl || :
a2enmod ssl || :
for ports in $@; do
from_port=$(echo $ports | cut -d : -f 1)
to_port=$(echo $ports | cut -d : -f 2)
sed -i -e "s/$from_port/$to_port/g" /etc/apache2/ports.conf
for site in $(ls -1 /etc/apache2/sites-available); do
sed -i -e "s/$from_port/$to_port/g" \
/etc/apache2/sites-available/$site
done
done
}
configure_apache_cert() {
cert=$1
key=$2
echo $cert | base64 -di > /etc/ssl/certs/dashboard.cert
echo $key | base64 -di > /etc/ssl/private/dashboard.key
chmod 0600 /etc/ssl/private/dashboard.key
sed -i -e "s|\(.*SSLCertificateFile\).*|\1 /etc/ssl/certs/dashboard.cert|g" \
-e "s|\(.*SSLCertificateKeyFile\).*|\1 /etc/ssl/private/dashboard.key|g" \
/etc/apache2/sites-available/default-ssl
}