Completes upgrade check for monasca webhook data source

Results in warning (schema change) if a monasca webhook data source
is configured.

Change-Id: I7ccb2f2804f3957bbeb84a700583ae666f2dd0af
This commit is contained in:
Eric K 2019-03-13 19:15:40 -07:00
parent e84057a6f5
commit c15f2dd04f
2 changed files with 46 additions and 12 deletions

View File

@ -17,6 +17,9 @@ import sys
from oslo_config import cfg
from oslo_upgradecheck import upgradecheck
from congress.db import api as db
CONF = cfg.CONF
@ -28,17 +31,30 @@ class Checks(upgradecheck.UpgradeCommands):
and added to _upgrade_checks tuple.
"""
def _sample_check(self):
"""This is sample check added to test the upgrade check framework
It needs to be removed after adding any real upgrade check
"""
return upgradecheck.Result(upgradecheck.Code.SUCCESS, 'Sample detail')
def _check_monasca_webhook_driver(self):
"""Check existence of monasca webhook datasource"""
session = db.get_session()
result = session.execute(
"SELECT count(*) FROM datasources WHERE driver = 'monasca_webhook'"
).scalar()
if result == 0:
return upgradecheck.Result(
upgradecheck.Code.SUCCESS,
'No currently configured data source uses the Monasca Webhook '
'data source driver, which contains backward-incompatible '
'schema changes.')
else:
return upgradecheck.Result(
upgradecheck.Code.WARNING,
'There are currently {} configured data source which use the '
'Monasca Webhook data source driver. Because this version of '
'Congress includes backward-incompatible schema changes to '
'the driver, Congress policies referring to Monasca Webhook '
'data may need to be adapted to the new schema.'.format(
result))
_upgrade_checks = (
# Sample check added for now.
# Whereas in future real checks must be added here in tuple
('Sample Check', _sample_check),
('Monasca Webhook Driver', _check_monasca_webhook_driver),
)

View File

@ -15,16 +15,34 @@
from oslo_upgradecheck.upgradecheck import Code
from congress.cmd import status
from congress.tests.api import base as api_base
from congress.tests import base
class TestUpgradeChecks(base.TestCase):
class TestUpgradeChecks(base.SqlTestCase):
def setUp(self):
super(TestUpgradeChecks, self).setUp()
self.cmd = status.Checks()
def test__sample_check(self):
check_result = self.cmd._sample_check()
def test__check_monasca_webhook_driver_success(self):
check_result = self.cmd._check_monasca_webhook_driver()
self.assertEqual(
Code.SUCCESS, check_result.code)
def test__check_monasca_webhook_driver_warning(self):
services = api_base.setup_config(with_fake_datasource=False)
self.datasource_model = services['api']['api-datasource']
self.data = services['data']
self.node = services['node']
self.engine = services['engine']
self.ds_manager = services['ds_manager']
monasca_setting = {
'name': 'datasource_name',
'driver': 'monasca_webhook',
'config': None,
}
self.ds_manager.add_datasource(monasca_setting)
check_result = self.cmd._check_monasca_webhook_driver()
self.assertEqual(
Code.WARNING, check_result.code)