Add transport_url property to AMQP adapter
To support oslo.messaging switch to use of transport_url, provide a formatted transport_url attribute on the AMQP relation adapter. Change-Id: I02513dbef01f7fde7db65702d2ad64d2aa72ed0f Closes-Bug: 1817672
This commit is contained in:
parent
341b879cc1
commit
93f4831605
|
@ -206,6 +206,23 @@ class RabbitMQRelationAdapter(OpenStackRelationAdapter):
|
|||
return '/var/lib/charm/{}/rabbit-client-ca.pem'.format(
|
||||
hookenv.service_name())
|
||||
|
||||
@property
|
||||
def transport_url(self):
|
||||
"""
|
||||
oslo.messaging formatted transport URL
|
||||
|
||||
:returns: oslo.messaging formatted transport URL
|
||||
:rtype: string
|
||||
"""
|
||||
hosts = self.relation.rabbitmq_hosts()
|
||||
transport_url_hosts = ','.join([
|
||||
"{}:{}@{}:5672".format(self.username,
|
||||
self.password,
|
||||
ch_ip.format_ipv6_addr(host_) or host_)
|
||||
for host_ in hosts
|
||||
])
|
||||
return "rabbit://{}/{}".format(transport_url_hosts, self.vhost)
|
||||
|
||||
|
||||
class PeerHARelationAdapter(OpenStackRelationAdapter):
|
||||
"""
|
||||
|
|
|
@ -124,7 +124,7 @@ class TestMemcacheRelationAdapter(unittest.TestCase):
|
|||
|
||||
class FakeRabbitMQRelation():
|
||||
|
||||
auto_accessors = ['vip', 'private_address']
|
||||
auto_accessors = ['vip', 'private_address', 'password']
|
||||
relation_name = 'amqp'
|
||||
|
||||
def __init__(self, vip=None):
|
||||
|
@ -145,11 +145,15 @@ class FakeRabbitMQRelation():
|
|||
def username(self):
|
||||
return 'fakename'
|
||||
|
||||
def password(self):
|
||||
return 'password'
|
||||
|
||||
|
||||
class TestRabbitMQRelationAdapter(unittest.TestCase):
|
||||
|
||||
def test_class(self):
|
||||
fake = FakeRabbitMQRelation(None)
|
||||
adapters.ch_ip.format_ipv6_addr.side_effect = lambda x: x
|
||||
mq = adapters.RabbitMQRelationAdapter(fake)
|
||||
self.assertEqual(mq.vhost, 'vhost')
|
||||
self.assertEqual(mq.username, 'fakename')
|
||||
|
@ -158,6 +162,11 @@ class TestRabbitMQRelationAdapter(unittest.TestCase):
|
|||
# fake._vip = 'vip1'
|
||||
# self.assertEqual(mq.host, 'vip1')
|
||||
self.assertEqual(mq.hosts, 'host1,host2')
|
||||
self.assertEqual(
|
||||
mq.transport_url,
|
||||
'rabbit://fakename:password@host1:5672,'
|
||||
'fakename:password@host2:5672/vhost'
|
||||
)
|
||||
|
||||
|
||||
class FakeAPIConfigAdapter():
|
||||
|
|
Loading…
Reference in New Issue