Remove send_cluster_metrics
This period job has been deprecated since Change I3ca0f2e96fe63870406cc5323f08fa018ac6e8be in Rocky/Stein. As it defaults to disabled, it causes logs like the following to be sent over and over again. Running periodic task MagnumPeriodicTasks._send_cluster_metrics Skip sending cluster metrics _send_cluster_metrics Remove the code totally as it has basically been a noop for a few cycles. Change-Id: Ib9142ab17d562b1d7ccf1409a9e0d934585a094d
This commit is contained in:
parent
d363622bf9
commit
6cdb367cfc
@ -30,13 +30,6 @@ drivers_opts = [
|
|||||||
default="",
|
default="",
|
||||||
help='Path to the OpenStack CA-bundle file to pass and '
|
help='Path to the OpenStack CA-bundle file to pass and '
|
||||||
'install in all cluster nodes.'),
|
'install in all cluster nodes.'),
|
||||||
cfg.BoolOpt('send_cluster_metrics',
|
|
||||||
default=False,
|
|
||||||
deprecated_for_removal=True,
|
|
||||||
deprecated_reason='It does not make sense only collecting '
|
|
||||||
'metrics from the "default" namespcae.',
|
|
||||||
help='Allow periodic tasks to pull COE data and send to '
|
|
||||||
'ceilometer.'),
|
|
||||||
cfg.ListOpt('disabled_drivers',
|
cfg.ListOpt('disabled_drivers',
|
||||||
default=[],
|
default=[],
|
||||||
help='Disabled driver entry points. The default value is []. '
|
help='Disabled driver entry points. The default value is []. '
|
||||||
|
@ -16,7 +16,6 @@
|
|||||||
import functools
|
import functools
|
||||||
|
|
||||||
from oslo_log import log
|
from oslo_log import log
|
||||||
from oslo_log.versionutils import deprecated
|
|
||||||
from oslo_service import loopingcall
|
from oslo_service import loopingcall
|
||||||
from oslo_service import periodic_task
|
from oslo_service import periodic_task
|
||||||
|
|
||||||
@ -227,56 +226,6 @@ class MagnumPeriodicTasks(periodic_task.PeriodicTasks):
|
|||||||
"Ignore error [%s] when syncing up cluster status.",
|
"Ignore error [%s] when syncing up cluster status.",
|
||||||
e, exc_info=True)
|
e, exc_info=True)
|
||||||
|
|
||||||
@periodic_task.periodic_task(run_immediately=True)
|
|
||||||
@set_context
|
|
||||||
@deprecated(as_of=deprecated.ROCKY)
|
|
||||||
def _send_cluster_metrics(self, ctx):
|
|
||||||
if not CONF.drivers.send_cluster_metrics:
|
|
||||||
LOG.debug('Skip sending cluster metrics')
|
|
||||||
return
|
|
||||||
|
|
||||||
LOG.debug('Starting to send cluster metrics')
|
|
||||||
for cluster in objects.Cluster.list(ctx):
|
|
||||||
if cluster.status not in (
|
|
||||||
objects.fields.ClusterStatus.CREATE_COMPLETE,
|
|
||||||
objects.fields.ClusterStatus.UPDATE_COMPLETE):
|
|
||||||
continue
|
|
||||||
|
|
||||||
monitor = monitors.create_monitor(ctx, cluster)
|
|
||||||
if monitor is None:
|
|
||||||
continue
|
|
||||||
|
|
||||||
try:
|
|
||||||
monitor.pull_data()
|
|
||||||
except Exception as e:
|
|
||||||
LOG.warning(
|
|
||||||
"Skip pulling data from cluster %(cluster)s due to "
|
|
||||||
"error: %(e)s",
|
|
||||||
{'e': e, 'cluster': cluster.uuid}, exc_info=True)
|
|
||||||
continue
|
|
||||||
|
|
||||||
metrics = list()
|
|
||||||
for name in monitor.get_metric_names():
|
|
||||||
try:
|
|
||||||
metric = {
|
|
||||||
'name': name,
|
|
||||||
'value': monitor.compute_metric_value(name),
|
|
||||||
'unit': monitor.get_metric_unit(name),
|
|
||||||
}
|
|
||||||
metrics.append(metric)
|
|
||||||
except Exception as e:
|
|
||||||
LOG.warning("Skip adding metric %(name)s due to "
|
|
||||||
"error: %(e)s",
|
|
||||||
{'e': e, 'name': name}, exc_info=True)
|
|
||||||
|
|
||||||
message = dict(metrics=metrics,
|
|
||||||
user_id=cluster.user_id,
|
|
||||||
project_id=cluster.project_id,
|
|
||||||
resource_id=cluster.uuid)
|
|
||||||
LOG.debug("About to send notification: '%s'", message)
|
|
||||||
self.notifier.info(ctx, "magnum.cluster.metrics.update",
|
|
||||||
message)
|
|
||||||
|
|
||||||
|
|
||||||
def setup(conf, tg):
|
def setup(conf, tg):
|
||||||
pt = MagnumPeriodicTasks(conf)
|
pt = MagnumPeriodicTasks(conf)
|
||||||
|
@ -323,152 +323,6 @@ class PeriodicTestCase(base.TestCase):
|
|||||||
notifications = fake_notifier.NOTIFICATIONS
|
notifications = fake_notifier.NOTIFICATIONS
|
||||||
self.assertEqual(5, len(notifications))
|
self.assertEqual(5, len(notifications))
|
||||||
|
|
||||||
@mock.patch('magnum.conductor.monitors.create_monitor')
|
|
||||||
@mock.patch('magnum.objects.Cluster.list')
|
|
||||||
@mock.patch('magnum.common.rpc.get_notifier')
|
|
||||||
@mock.patch('magnum.common.context.make_admin_context')
|
|
||||||
def test_send_cluster_metrics(self, mock_make_admin_context,
|
|
||||||
mock_get_notifier, mock_cluster_list,
|
|
||||||
mock_create_monitor):
|
|
||||||
"""Test if RPC notifier receives the expected message"""
|
|
||||||
CONF.set_override('send_cluster_metrics', True, group='drivers')
|
|
||||||
mock_make_admin_context.return_value = self.context
|
|
||||||
notifier = mock.MagicMock()
|
|
||||||
mock_get_notifier.return_value = notifier
|
|
||||||
mock_cluster_list.return_value = [self.cluster1, self.cluster2,
|
|
||||||
self.cluster3, self.cluster4]
|
|
||||||
self.cluster4.status = cluster_status.CREATE_COMPLETE
|
|
||||||
monitor = mock.MagicMock()
|
|
||||||
monitor.get_metric_names.return_value = ['metric1', 'metric2']
|
|
||||||
monitor.compute_metric_value.return_value = 30
|
|
||||||
monitor.get_metric_unit.return_value = '%'
|
|
||||||
mock_create_monitor.return_value = monitor
|
|
||||||
|
|
||||||
periodic.MagnumPeriodicTasks(CONF)._send_cluster_metrics(self.context)
|
|
||||||
|
|
||||||
expected_event_type = 'magnum.cluster.metrics.update'
|
|
||||||
expected_metrics = [
|
|
||||||
{
|
|
||||||
'name': 'metric1',
|
|
||||||
'value': 30,
|
|
||||||
'unit': '%',
|
|
||||||
},
|
|
||||||
{
|
|
||||||
'name': 'metric2',
|
|
||||||
'value': 30,
|
|
||||||
'unit': '%',
|
|
||||||
},
|
|
||||||
]
|
|
||||||
expected_msg = {
|
|
||||||
'user_id': self.cluster4.user_id,
|
|
||||||
'project_id': self.cluster4.project_id,
|
|
||||||
'resource_id': self.cluster4.uuid,
|
|
||||||
'metrics': expected_metrics
|
|
||||||
}
|
|
||||||
|
|
||||||
self.assertEqual(1, mock_create_monitor.call_count)
|
|
||||||
notifier.info.assert_called_once_with(
|
|
||||||
self.context, expected_event_type, expected_msg)
|
|
||||||
|
|
||||||
@mock.patch('magnum.conductor.monitors.create_monitor')
|
|
||||||
@mock.patch('magnum.objects.Cluster.list')
|
|
||||||
@mock.patch('magnum.common.rpc.get_notifier')
|
|
||||||
@mock.patch('magnum.common.context.make_admin_context')
|
|
||||||
def test_send_cluster_metrics_compute_metric_raise(
|
|
||||||
self, mock_make_admin_context, mock_get_notifier,
|
|
||||||
mock_cluster_list, mock_create_monitor):
|
|
||||||
CONF.set_override('send_cluster_metrics', True, group='drivers')
|
|
||||||
mock_make_admin_context.return_value = self.context
|
|
||||||
notifier = mock.MagicMock()
|
|
||||||
mock_get_notifier.return_value = notifier
|
|
||||||
mock_cluster_list.return_value = [self.cluster4]
|
|
||||||
self.cluster4.status = cluster_status.CREATE_COMPLETE
|
|
||||||
monitor = mock.MagicMock()
|
|
||||||
monitor.get_metric_names.return_value = ['metric1', 'metric2']
|
|
||||||
monitor.compute_metric_value.side_effect = Exception(
|
|
||||||
"error on computing metric")
|
|
||||||
mock_create_monitor.return_value = monitor
|
|
||||||
|
|
||||||
periodic.MagnumPeriodicTasks(CONF)._send_cluster_metrics(self.context)
|
|
||||||
|
|
||||||
expected_event_type = 'magnum.cluster.metrics.update'
|
|
||||||
expected_msg = {
|
|
||||||
'user_id': self.cluster4.user_id,
|
|
||||||
'project_id': self.cluster4.project_id,
|
|
||||||
'resource_id': self.cluster4.uuid,
|
|
||||||
'metrics': []
|
|
||||||
}
|
|
||||||
self.assertEqual(1, mock_create_monitor.call_count)
|
|
||||||
notifier.info.assert_called_once_with(
|
|
||||||
self.context, expected_event_type, expected_msg)
|
|
||||||
|
|
||||||
@mock.patch('magnum.conductor.monitors.create_monitor')
|
|
||||||
@mock.patch('magnum.objects.Cluster.list')
|
|
||||||
@mock.patch('magnum.common.rpc.get_notifier')
|
|
||||||
@mock.patch('magnum.common.context.make_admin_context')
|
|
||||||
def test_send_cluster_metrics_pull_data_raise(
|
|
||||||
self, mock_make_admin_context, mock_get_notifier,
|
|
||||||
mock_cluster_list, mock_create_monitor):
|
|
||||||
CONF.set_override('send_cluster_metrics', True, group='drivers')
|
|
||||||
mock_make_admin_context.return_value = self.context
|
|
||||||
notifier = mock.MagicMock()
|
|
||||||
mock_get_notifier.return_value = notifier
|
|
||||||
mock_cluster_list.return_value = [self.cluster4]
|
|
||||||
self.cluster4.status = cluster_status.CREATE_COMPLETE
|
|
||||||
monitor = mock.MagicMock()
|
|
||||||
monitor.pull_data.side_effect = Exception("error on pulling data")
|
|
||||||
mock_create_monitor.return_value = monitor
|
|
||||||
|
|
||||||
periodic.MagnumPeriodicTasks(CONF)._send_cluster_metrics(self.context)
|
|
||||||
|
|
||||||
self.assertEqual(1, mock_create_monitor.call_count)
|
|
||||||
self.assertEqual(0, notifier.info.call_count)
|
|
||||||
|
|
||||||
@mock.patch('magnum.conductor.monitors.create_monitor')
|
|
||||||
@mock.patch('magnum.objects.Cluster.list')
|
|
||||||
@mock.patch('magnum.common.rpc.get_notifier')
|
|
||||||
@mock.patch('magnum.common.context.make_admin_context')
|
|
||||||
def test_send_cluster_metrics_monitor_none(
|
|
||||||
self, mock_make_admin_context, mock_get_notifier,
|
|
||||||
mock_cluster_list, mock_create_monitor):
|
|
||||||
CONF.set_override('send_cluster_metrics', True, group='drivers')
|
|
||||||
mock_make_admin_context.return_value = self.context
|
|
||||||
notifier = mock.MagicMock()
|
|
||||||
mock_get_notifier.return_value = notifier
|
|
||||||
mock_cluster_list.return_value = [self.cluster4]
|
|
||||||
self.cluster4.status = cluster_status.CREATE_COMPLETE
|
|
||||||
mock_create_monitor.return_value = None
|
|
||||||
|
|
||||||
periodic.MagnumPeriodicTasks(CONF)._send_cluster_metrics(self.context)
|
|
||||||
|
|
||||||
self.assertEqual(1, mock_create_monitor.call_count)
|
|
||||||
self.assertEqual(0, notifier.info.call_count)
|
|
||||||
|
|
||||||
@mock.patch('magnum.conductor.monitors.create_monitor')
|
|
||||||
@mock.patch('magnum.objects.Cluster.list')
|
|
||||||
@mock.patch('magnum.common.rpc.get_notifier')
|
|
||||||
@mock.patch('magnum.common.context.make_admin_context')
|
|
||||||
def test_send_cluster_metrics_disable_pull_data(
|
|
||||||
self, mock_make_admin_context, mock_get_notifier,
|
|
||||||
mock_cluster_list, mock_create_monitor):
|
|
||||||
|
|
||||||
mock_make_admin_context.return_value = self.context
|
|
||||||
notifier = mock.MagicMock()
|
|
||||||
mock_get_notifier.return_value = notifier
|
|
||||||
mock_cluster_list.return_value = [self.cluster1, self.cluster2,
|
|
||||||
self.cluster3, self.cluster4]
|
|
||||||
self.cluster4.status = cluster_status.CREATE_COMPLETE
|
|
||||||
monitor = mock.MagicMock()
|
|
||||||
monitor.get_metric_names.return_value = ['metric1', 'metric2']
|
|
||||||
monitor.compute_metric_value.return_value = 30
|
|
||||||
monitor.get_metric_unit.return_value = '%'
|
|
||||||
mock_create_monitor.return_value = monitor
|
|
||||||
|
|
||||||
periodic.MagnumPeriodicTasks(CONF)._send_cluster_metrics(self.context)
|
|
||||||
|
|
||||||
self.assertEqual(0, mock_create_monitor.call_count)
|
|
||||||
self.assertEqual(0, notifier.info.call_count)
|
|
||||||
|
|
||||||
@mock.patch('oslo_service.loopingcall.FixedIntervalLoopingCall',
|
@mock.patch('oslo_service.loopingcall.FixedIntervalLoopingCall',
|
||||||
new=fakes.FakeLoopingCall)
|
new=fakes.FakeLoopingCall)
|
||||||
@mock.patch('magnum.conductor.monitors.create_monitor')
|
@mock.patch('magnum.conductor.monitors.create_monitor')
|
||||||
|
@ -0,0 +1,5 @@
|
|||||||
|
---
|
||||||
|
deprecations:
|
||||||
|
- |
|
||||||
|
Remove period job send_cluster_metrics. This job has been deprecated since
|
||||||
|
Rocky.
|
Loading…
Reference in New Issue
Block a user