~charmers/charms/precise/rabbitmq-server/precise

« back to all changes in this revision

Viewing changes to hooks/rabbitmq-relations

  • Committer: Adam Gandelman
  • Date: 2011-07-26 06:05:42 UTC
  • Revision ID: adamg@canonical.com-20110726060542-eq8hcrl46xo98rob
Update amqp interface to allow clients to requests vhost. create if it doesn't exist, along with credentials

Show diffs side-by-side

added added

removed removed

Lines of Context:
26
26
if [[ -e $FORMULA_DIR/rabbitmq-common ]] ; then
27
27
  . $FORMULA_DIR/rabbitmq-common
28
28
else
29
 
  ensemble-log "rabbitmq: ERROR Could not load $FORMULA_DIR/rabbitmq-common"
 
29
  ensemble-log "rabbitmq-server: ERROR Could not load $FORMULA_DIR/rabbitmq-common"
30
30
  exit 1
31
31
fi
32
32
 
33
 
ensemble-log "rabbitmq: Firing hook $ARG0."
 
33
ensemble-log "rabbitmq-server: Firing hook $ARG0."
34
34
 
35
35
function install_hook() {
36
36
  DEFAULT_ETH=$(ip route  | grep default | awk '{ print $5 }')
46
46
  DEBIAN_FRONTEND=noninteractive apt-get -qqy \
47
47
    install --no-install-recommends rabbitmq-server
48
48
  rc=$?
49
 
  ensemble-log "rabbitmq: Installation complete. $rc"
50
49
  service rabbitmq-server stop
51
50
}
52
51
 
53
52
function amqp_changed() {
54
 
  # Connecting clients should request a username.
 
53
  # Connecting clients should request a username and vhost.
55
54
  # In reponse, we generate a password for new users,
56
55
  # grant the user access on the default vhost "/",
57
56
  # and tell it where to reach us.
58
57
  RABBIT_USER=`relation-get username`
59
 
  [[ -z $RABBIT_USER ]] && exit 0
 
58
  VHOST=`relation-get vhost`
 
59
  if [[ -z $RABBIT_USER ]] || [[ -z $VHOST ]] ; then
 
60
    ensemble-log "rabbitmq-server: RABBIT_USER||VHOST not yet received from peer."
 
61
    exit 0
 
62
  fi
60
63
  PASSWD_FILE="/var/run/ensemble/$RABBIT_USER.passwd"
61
64
  if [[ -e $PASSWD_FILE ]] ; then
62
65
    PASSWORD=$(cat $PASSWD_FILE)
65
68
    echo $PASSWORD >$PASSWD_FILE
66
69
    chmod 0400 $PASSWD_FILE
67
70
  fi
 
71
  if ! vhost_exists ; then
 
72
    ensemble-log "rabbitmq-server: Creating vhost $VHOST"
 
73
    create_vhost
 
74
  fi
68
75
  if ! user_exists $RABBIT_USER ; then
 
76
    ensemble-log "rabbitmq-server: Creating user $RABBIT_USER"
69
77
    user_create $RABBIT_USER admin || exit 1
70
78
  else
71
 
    ensemble-log "rabbitmq: user $RABBIT_USER already exists."
 
79
    ensemble-log "rabbitmq-server: user $RABBIT_USER already exists."
72
80
  fi
73
 
  ensemble-log "rabbitmq: Returning credentials for $RABBIT_USER@$HOSTNAME"
 
81
  ensemble-log "rabbitmq-server: Returning credentials for $RABBIT_USER@$HOSTNAME"
74
82
  relation-set hostname=$HOSTNAME
75
83
  relation-set password=$PASSWORD
76
84
}
80
88
  LOCAL_UNIT_ID=$(echo $ENSEMBLE_UNIT_NAME | cut -d/ -f2)
81
89
  [[ $LOCAL_UNIT_ID -gt $REMOTE_UNIT_ID ]] && echo "Relation greater" && exit 0
82
90
  if [[ ! -e $ERLANG_COOKIE ]] ; then
83
 
    ensemble-log "rabbitmq: ERROR Could not find cookie at $ERLANG_COOKIE"
 
91
    ensemble-log "rabbitmq-server: ERROR Could not find cookie at $ERLANG_COOKIE"
84
92
    exit 1
85
93
  fi
86
94
  relation-set cookie=$(cat $ERLANG_COOKIE) host=$HOSTNAME
94
102
  REMOTE_HOST=$(relation-get host)
95
103
  COOKIE_VALUE=$(relation-get cookie)
96
104
  [[ -z $REMOTE_HOST ]] || [[ -z $COOKIE_VALUE ]] && \
97
 
    ensemble-log "rabbimtq REMOTE_HOST||COOKIE_VALUE not yet set." \
 
105
    ensemble-log "rabbimtq-server: REMOTE_HOST||COOKIE_VALUE not yet set." \
98
106
    exit 0
99
107
 
100
108
  service rabbitmq-server stop
116
124
esac
117
125
 
118
126
rc=$?
119
 
ensemble-log "rabbitmq: Hook $ARG0 complete. Exiting $rc"
 
127
ensemble-log "rabbitmq-server: Hook $ARG0 complete. Exiting $rc"
120
128
exit $rc