Refactor loop from code review feedback. Address possibility of the remote

value not being set prior to being used.
This commit is contained in:
Billy Olsen 2014-12-03 16:23:51 -07:00
parent f8962a5c94
commit ff2291756e
3 changed files with 31 additions and 15 deletions

View File

@ -42,28 +42,29 @@ class MongoDBContext(OSContextGenerator):
host = relation_get('hostname', unit, relid)
port = relation_get('port', unit, relid)
conf = {
"db_host": host,
"db_port": port,
"db_name": CEILOMETER_DB
}
if not context_complete(conf):
continue
if not use_replset:
conf = {
"db_host": host,
"db_port": port,
"db_name": CEILOMETER_DB
}
return conf
if context_complete(conf):
return conf
else:
if replset is None:
replset = relation_get('replset', unit, relid)
if replset is None:
replset = relation_get('replset', unit, relid)
mongo_servers.append('{}:{}'.format(host, port))
mongo_servers.append('{}:{}'.format(host, port))
if mongo_servers:
conf = {
return {
'db_mongo_servers': ','.join(mongo_servers),
'db_name': CEILOMETER_DB,
'db_replset': replset
}
return conf
return {}

View File

@ -0,0 +1 @@
ceilometer_hooks.py

View File

@ -6,11 +6,11 @@ import ceilometer_utils as utils
from test_utils import CharmTestCase, mock_open
TO_PATCH = [
'config',
'relation_get',
'relation_ids',
'related_units',
'config',
'os_release'
'os_release',
]
@ -69,6 +69,20 @@ class CeilometerContextsTest(CharmTestCase):
{'db_host': 'mongodb-0', 'db_port': 8090,
'db_name': 'ceilometer'})
@patch.object(contexts, 'context_complete')
def test_mongodb_context_related_replset_missing_values(self, mock_ctxcmp):
mock_ctxcmp.return_value = False
self.relation_ids.return_value = ['shared-db:0']
self.related_units.return_value = ['mongodb/0']
data = {
'hostname': None,
'port': 8090,
'replset': 'replset-1'
}
self.test_relation.set(data)
self.os_release.return_value = 'icehouse'
self.assertEquals(contexts.MongoDBContext()(), {})
def test_mongodb_context_related_replset_multiple_mongo(self):
self.relation_ids.return_value = ['shared-db:0']
related_units = {