Set port for mysql connection in Shared-DB

Change-Id: I2e7e95a4ee7d25b520af823085bd8c577e232e30
This commit is contained in:
David Ames 2020-05-05 15:14:51 -07:00
parent 21da52526c
commit 89d60a48df
2 changed files with 21 additions and 8 deletions

View File

@ -458,6 +458,13 @@ class DatabaseRelationAdapter(OpenStackRelationAdapter):
"""
return self.relation.db_host()
@property
def port(self):
"""
Port that should be used to access a database.
"""
return self.relation.db_port()
@property
def type(self):
return 'mysql'
@ -475,19 +482,21 @@ class DatabaseRelationAdapter(OpenStackRelationAdapter):
ch_utils.OPENSTACK_RELEASES.index('stein')):
driver = 'mysql+pymysql'
if prefix:
uri = '{}://{}:{}@{}/{}'.format(
uri = '{}://{}:{}@{}:{}/{}'.format(
driver,
self.relation.username(prefix=prefix),
self.relation.password(prefix=prefix),
self.host,
self.port,
self.relation.database(prefix=prefix),
)
else:
uri = '{}://{}:{}@{}/{}'.format(
uri = '{}://{}:{}@{}:{}/{}'.format(
driver,
self.username,
self.password,
self.host,
self.port,
self.database,
)
try:

View File

@ -373,6 +373,9 @@ class FakeDatabaseRelation():
def db_host(self):
return 'host1'
def db_port(self):
return 3306
def username(self, prefix=''):
return 'username1{}'.format(prefix)
@ -399,16 +402,17 @@ class TestDatabaseRelationAdapter(unittest.TestCase):
fake = FakeDatabaseRelation()
db = adapters.DatabaseRelationAdapter(fake)
self.assertEqual(db.host, 'host1')
self.assertEqual(db.port, 3306)
self.assertEqual(db.type, 'mysql')
self.assertEqual(db.password, 'password1')
self.assertEqual(db.username, 'username1')
self.assertEqual(db.database, 'database1')
self.assertEqual(
db.uri,
'mysql://username1:password1@host1/database1')
'mysql://username1:password1@host1:3306/database1')
self.assertEqual(
db.get_uri('x'),
'mysql://username1x:password1x@host1/database1x')
'mysql://username1x:password1x@host1:3306/database1x')
self.assertEqual(
db.get_password('x'),
'password1x')
@ -416,7 +420,7 @@ class TestDatabaseRelationAdapter(unittest.TestCase):
db = SSLDatabaseRelationAdapter(fake)
self.assertEqual(
db.uri,
'mysql://username1:password1@host1/database1'
'mysql://username1:password1@host1:3306/database1'
'?ssl_ca=my-ca'
'&ssl_cert=my-cert&ssl_key=my-key')
with mock.patch.object(adapters.ch_utils,
@ -426,10 +430,10 @@ class TestDatabaseRelationAdapter(unittest.TestCase):
db = adapters.DatabaseRelationAdapter(fake)
self.assertEqual(
db.uri,
'mysql+pymysql://username1:password1@host1/database1')
'mysql+pymysql://username1:password1@host1:3306/database1')
self.assertEqual(
db.get_uri('x'),
'mysql+pymysql://username1x:password1x@host1/database1x')
'mysql+pymysql://username1x:password1x@host1:3306/database1x')
self.assertEqual(
db.get_password('x'),
'password1x')
@ -437,7 +441,7 @@ class TestDatabaseRelationAdapter(unittest.TestCase):
db = SSLDatabaseRelationAdapter(fake)
self.assertEqual(
db.uri,
'mysql+pymysql://username1:password1@host1/database1'
'mysql+pymysql://username1:password1@host1:3306/database1'
'?ssl_ca=my-ca'
'&ssl_cert=my-cert&ssl_key=my-key')