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(
|
return '/var/lib/charm/{}/rabbit-client-ca.pem'.format(
|
||||||
hookenv.service_name())
|
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):
|
class PeerHARelationAdapter(OpenStackRelationAdapter):
|
||||||
"""
|
"""
|
||||||
|
|
|
@ -124,7 +124,7 @@ class TestMemcacheRelationAdapter(unittest.TestCase):
|
||||||
|
|
||||||
class FakeRabbitMQRelation():
|
class FakeRabbitMQRelation():
|
||||||
|
|
||||||
auto_accessors = ['vip', 'private_address']
|
auto_accessors = ['vip', 'private_address', 'password']
|
||||||
relation_name = 'amqp'
|
relation_name = 'amqp'
|
||||||
|
|
||||||
def __init__(self, vip=None):
|
def __init__(self, vip=None):
|
||||||
|
@ -145,11 +145,15 @@ class FakeRabbitMQRelation():
|
||||||
def username(self):
|
def username(self):
|
||||||
return 'fakename'
|
return 'fakename'
|
||||||
|
|
||||||
|
def password(self):
|
||||||
|
return 'password'
|
||||||
|
|
||||||
|
|
||||||
class TestRabbitMQRelationAdapter(unittest.TestCase):
|
class TestRabbitMQRelationAdapter(unittest.TestCase):
|
||||||
|
|
||||||
def test_class(self):
|
def test_class(self):
|
||||||
fake = FakeRabbitMQRelation(None)
|
fake = FakeRabbitMQRelation(None)
|
||||||
|
adapters.ch_ip.format_ipv6_addr.side_effect = lambda x: x
|
||||||
mq = adapters.RabbitMQRelationAdapter(fake)
|
mq = adapters.RabbitMQRelationAdapter(fake)
|
||||||
self.assertEqual(mq.vhost, 'vhost')
|
self.assertEqual(mq.vhost, 'vhost')
|
||||||
self.assertEqual(mq.username, 'fakename')
|
self.assertEqual(mq.username, 'fakename')
|
||||||
|
@ -158,6 +162,11 @@ class TestRabbitMQRelationAdapter(unittest.TestCase):
|
||||||
# fake._vip = 'vip1'
|
# fake._vip = 'vip1'
|
||||||
# self.assertEqual(mq.host, 'vip1')
|
# self.assertEqual(mq.host, 'vip1')
|
||||||
self.assertEqual(mq.hosts, 'host1,host2')
|
self.assertEqual(mq.hosts, 'host1,host2')
|
||||||
|
self.assertEqual(
|
||||||
|
mq.transport_url,
|
||||||
|
'rabbit://fakename:password@host1:5672,'
|
||||||
|
'fakename:password@host2:5672/vhost'
|
||||||
|
)
|
||||||
|
|
||||||
|
|
||||||
class FakeAPIConfigAdapter():
|
class FakeAPIConfigAdapter():
|
||||||
|
|
Loading…
Reference in New Issue