Determine amqp port from relation data
The non-SSL port 5672 was hard coded. Set the amqp port based on relation data. Change-Id: Ic48aabb3650a7198ef8298aa0eef152b4851e9a3 Closes-Bug: #1838783
This commit is contained in:
parent
032ae3dbe2
commit
405b4b75bc
@ -196,6 +196,7 @@ class RabbitMQRelationAdapter(OpenStackRelationAdapter):
|
||||
"""
|
||||
|
||||
interface_type = "messaging"
|
||||
DEFAULT_PORT = "5672"
|
||||
|
||||
def __init__(self, relation):
|
||||
add_accessors = ['vhost', 'username']
|
||||
@ -232,6 +233,15 @@ class RabbitMQRelationAdapter(OpenStackRelationAdapter):
|
||||
return '/var/lib/charm/{}/rabbit-client-ca.pem'.format(
|
||||
hookenv.service_name())
|
||||
|
||||
@property
|
||||
def port(self):
|
||||
"""Return the AMQP port
|
||||
|
||||
:returns: AMQP port number
|
||||
:rtype: string
|
||||
"""
|
||||
return self.ssl_port or self.DEFAULT_PORT
|
||||
|
||||
@property
|
||||
def transport_url(self):
|
||||
"""
|
||||
@ -242,9 +252,10 @@ class RabbitMQRelationAdapter(OpenStackRelationAdapter):
|
||||
"""
|
||||
hosts = self.relation.rabbitmq_hosts()
|
||||
transport_url_hosts = ','.join([
|
||||
"{}:{}@{}:5672".format(self.username,
|
||||
self.password,
|
||||
ch_ip.format_ipv6_addr(host_) or host_)
|
||||
"{}:{}@{}:{}".format(self.username,
|
||||
self.password,
|
||||
ch_ip.format_ipv6_addr(host_) or host_,
|
||||
self.port)
|
||||
for host_ in hosts
|
||||
])
|
||||
return "rabbit://{}/{}".format(transport_url_hosts, self.vhost)
|
||||
|
@ -151,11 +151,12 @@ class TestMemcacheRelationAdapter(unittest.TestCase):
|
||||
|
||||
class FakeRabbitMQRelation():
|
||||
|
||||
auto_accessors = ['vip', 'private_address', 'password']
|
||||
auto_accessors = ['vip', 'private_address', 'password', 'ssl_port']
|
||||
relation_name = 'amqp'
|
||||
|
||||
def __init__(self, vip=None):
|
||||
def __init__(self, vip=None, ssl=False):
|
||||
self._vip = vip
|
||||
self._ssl = ssl
|
||||
|
||||
def vip(self):
|
||||
return self._vip
|
||||
@ -175,6 +176,11 @@ class FakeRabbitMQRelation():
|
||||
def password(self):
|
||||
return 'password'
|
||||
|
||||
def ssl_port(self):
|
||||
if self._ssl:
|
||||
return '5671'
|
||||
return None
|
||||
|
||||
|
||||
class TestRabbitMQRelationAdapter(unittest.TestCase):
|
||||
|
||||
@ -195,6 +201,23 @@ class TestRabbitMQRelationAdapter(unittest.TestCase):
|
||||
'fakename:password@host2:5672/vhost'
|
||||
)
|
||||
|
||||
def test_class_ssl(self):
|
||||
fake = FakeRabbitMQRelation(ssl=True)
|
||||
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')
|
||||
self.assertEqual(mq.host, 'private-address')
|
||||
# TODO: can't do the following 2 lines as not dynamic accessors
|
||||
# fake._vip = 'vip1'
|
||||
# self.assertEqual(mq.host, 'vip1')
|
||||
self.assertEqual(mq.hosts, 'host1,host2')
|
||||
self.assertEqual(
|
||||
mq.transport_url,
|
||||
'rabbit://fakename:password@host1:5671,'
|
||||
'fakename:password@host2:5671/vhost'
|
||||
)
|
||||
|
||||
|
||||
class FakeAPIConfigAdapter():
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user