charm-rabbitmq-server/hooks/rabbitmq-common

83 lines
2.4 KiB
Bash
Executable File

#!/bin/bash
#
# rabbitmq-common - common formula shell functions and config variables
#
# Copyright (C) 2011 Canonical Ltd.
# Author: Adam Gandelman <adam.gandelman@canonical.com>
#
# This program is free software: you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
# the Free Software Foundation, either version 3 of the License, or
# (at your option) any later version.
#
# This program is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
# GNU General Public License for more details.
#
# You should have received a copy of the GNU General Public License
# along with this program. If not, see <http://www.gnu.org/licenses/>.
set -e
RABBIT_CTL='rabbitmqctl'
ERLANG_COOKIE="/var/lib/rabbitmq/.erlang.cookie"
function user_exists {
$RABBIT_CTL list_users | grep -wq "^$1"
}
function user_is_admin {
$RABBIT_CTL list_users | grep -w "^$1" | grep -q "administrator"
}
function vhost_exists {
$RABBIT_CTL list_vhosts | grep "^$1\$" >/dev/null
}
function create_vhost {
juju-log "Creating vhost: $1"
$RABBIT_CTL add_vhost "$1"
}
function user_create {
local user="$1"
local passwd="$2"
local vhost="$3"
local admin="$4"
juju-log "rabbitmq: Creating user $1 (vhost: $3"
$RABBIT_CTL add_user "$user" "$passwd" || return 1
# grant the user all permissions on the default vhost /
# TODO: investigate sane permissions
juju-log "rabbitmq: Granting permission to $1 on vhost /"
$RABBIT_CTL set_permissions -p "$vhost" "$user" ".*" ".*" ".*"
if [[ "$admin" == "admin" ]] ; then
user_is_admin "$user" && return 0
juju-log "rabbitmq: Granting user $user admin access"
$RABBIT_CTL set_user_tags "$user" administrator || return 1
fi
}
function rabbit_version {
echo "$(dpkg -l | grep rabbitmq-server | awk '{ print $3 }')"
}
##########################################################################
# Description: Query HA interface to determine is cluster is configured
# Returns: 0 if configured, 1 if not configured
##########################################################################
is_clustered() {
for r_id in `relation-ids ha`; do
for unit in `relation-list -r $r_id`; do
clustered=`relation-get -r $r_id clustered $unit`
if [ -n "$clustered" ]; then
return 0
fi
done
done
return 1
}