charm-rabbitmq-server/hooks/rabbitmq-common

59 lines
1.7 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 -ue
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 {
juju-log "rabbitmq: Creating user $1."
$RABBIT_CTL add_user "$1" "$3" || 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 $1 ".*" ".*" ".*"
if [[ "$2" == 'admin' ]] ; then
user_is_admin "$1" && return 0
juju-log "rabbitmq: Granting user $1 admin access"
$RABBIT_CTL set_user_tags "$1" administrator || return 1
fi
}