~niedbalski/charms/trusty/rabbitmq-server/hosts-ipv4

« back to all changes in this revision

Viewing changes to hooks/rabbitmq_server_relations.py

  • Committer: james.page at ubuntu
  • Date: 2014-11-27 11:03:41 UTC
  • mfrom: (55.4.46 ipv6)
  • Revision ID: james.page@ubuntu.com-20141127110341-hlfvklffs56tyu8c
[dosaboy,r=james-page,t=dosaboy,james-page] Add IPv6 support.

Show diffs side-by-side

added added

removed removed

Lines of Context:
21
21
    get_host_ip
22
22
)
23
23
 
 
24
from charmhelpers.contrib.network.ip import (
 
25
    get_ipv6_addr
 
26
)
 
27
 
24
28
import charmhelpers.contrib.storage.linux.ceph as ceph
25
29
from charmhelpers.contrib.openstack.utils import save_script_rc
26
30
 
100
104
                relation_set(relation_id=rel_id, **peerdb_settings)
101
105
        log('amqp_changed(): Deferring amqp_changed'
102
106
            ' to is_elected_leader.')
 
107
 
 
108
        # NOTE: active/active case
 
109
        if config('prefer-ipv6'):
 
110
            relation_settings = {'private-address': get_ipv6_addr()[0]}
 
111
            relation_set(relation_settings=relation_settings)
 
112
 
103
113
        return
104
114
 
105
115
    relation_settings = {}
131
141
                    queues[amqp]['username'],
132
142
                    queues[amqp]['vhost'])
133
143
 
134
 
    relation_settings['hostname'] = unit_get('private-address')
 
144
    if config('prefer-ipv6'):
 
145
        relation_settings['private-address'] = get_ipv6_addr()[0]
 
146
    else:
 
147
        relation_settings['hostname'] = unit_get('private-address')
 
148
 
135
149
    configure_client_ssl(relation_settings)
136
150
 
137
151
    if is_clustered():
144
158
            if config('ha-vip-only') is True:
145
159
                relation_settings['ha-vip-only'] = 'true'
146
160
 
147
 
    if relation_id:
148
 
        relation_settings['rid'] = relation_id
149
 
 
150
161
    # set if need HA queues or not
151
162
    if cmp_pkgrevno('rabbitmq-server', '3.0.1') < 0:
152
163
        relation_settings['ha_queues'] = True
153
 
    peer_store_and_set(relation_settings=relation_settings)
 
164
    peer_store_and_set(relation_id=relation_id,
 
165
                       relation_settings=relation_settings)
154
166
 
155
167
 
156
168
@hooks.hook('cluster-relation-joined')
157
 
def cluster_joined():
 
169
def cluster_joined(relation_id=None):
 
170
    if config('prefer-ipv6'):
 
171
        relation_settings = {'hostname': socket.gethostname(),
 
172
                             'private-address': get_ipv6_addr()[0]}
 
173
        relation_set(relation_id=relation_id,
 
174
                     relation_settings=relation_settings)
 
175
 
158
176
    if is_relation_made('ha') and \
159
177
            config('ha-vip-only') is False:
160
178
        log('hacluster relation is present, skipping native '
180
198
        log('forcing nodename=%s' % nodename)
181
199
        # need to stop it under current nodename
182
200
        service_stop('rabbitmq-server')
183
 
        rabbit.set_node_name('rabbit@%s' % nodename)
 
201
        rabbit.update_rmq_env_conf(hostname='rabbit@%s' % nodename,
 
202
                                   ipv6=config('prefer-ipv6'))
184
203
        service_restart('rabbitmq-server')
185
204
 
186
205
    if is_newer():
202
221
    if 'cookie' not in rdata:
203
222
        log('cluster_joined: cookie not yet set.')
204
223
        return
 
224
 
 
225
    if config('prefer-ipv6') and rdata.get('hostname'):
 
226
        private_address = rdata['private-address']
 
227
        hostname = rdata['hostname']
 
228
        if hostname:
 
229
            rabbit.update_hosts_file({private_address: hostname})
 
230
 
205
231
    # sync passwords
206
 
    peer_echo()
 
232
    blacklist = ['hostname', 'private-address', 'public-address']
 
233
    whitelist = [a for a in rdata.keys() if a not in blacklist]
 
234
    peer_echo(includes=whitelist)
207
235
 
208
236
    # sync cookie
209
237
    cookie = peer_retrieve('cookie')
276
304
    if rabbit.get_node_name() != name and vip_only is False:
277
305
        log('Stopping rabbitmq-server.')
278
306
        service_stop('rabbitmq-server')
279
 
        rabbit.set_node_name('%s@localhost' % SERVICE_NAME)
 
307
        rabbit.update_rmq_env_conf(hostname='%s@localhost' % SERVICE_NAME,
 
308
                                   ipv6=config('prefer-ipv6'))
280
309
    else:
281
310
        log('Node name already set to %s.' % name)
282
311
 
567
596
 
568
597
@hooks.hook('config-changed')
569
598
def config_changed():
 
599
    if config('prefer-ipv6'):
 
600
        rabbit.assert_charm_supports_ipv6()
 
601
 
570
602
    # Add archive source if provided
571
603
    add_source(config('source'), config('key'))
572
604
    apt_update(fatal=True)
583
615
    chown(RABBIT_DIR, rabbit.RABBIT_USER, rabbit.RABBIT_USER)
584
616
    chmod(RABBIT_DIR, 0o775)
585
617
 
 
618
    if config('prefer-ipv6'):
 
619
        service_stop('rabbitmq-server')
 
620
        rabbit.update_rmq_env_conf(ipv6=config('prefer-ipv6'))
 
621
        service_restart('rabbitmq-server')
 
622
 
586
623
    if config('management_plugin') is True:
587
624
        rabbit.enable_plugin(MAN_PLUGIN)
588
625
        open_port(55672)