diff --git a/devstack/lib/magnum b/devstack/lib/magnum index 110779ceab..4374a6d2b7 100644 --- a/devstack/lib/magnum +++ b/devstack/lib/magnum @@ -225,6 +225,7 @@ function create_magnum_conf { # default in magnum.conf default_volume_type=$(iniget /etc/cinder/cinder.conf DEFAULT default_volume_type) iniset $MAGNUM_CONF cinder default_docker_volume_type $default_volume_type + iniset $MAGNUM_CONF drivers send_cluster_metrics False } function create_api_paste_conf { diff --git a/magnum/conf/drivers.py b/magnum/conf/drivers.py index 3bb9891b64..674ab02531 100644 --- a/magnum/conf/drivers.py +++ b/magnum/conf/drivers.py @@ -29,7 +29,11 @@ drivers_opts = [ cfg.StrOpt('openstack_ca_file', default="", 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=True, + help='Allow periodic tasks to pull COE data and send to ' + 'ceilometer.') ] diff --git a/magnum/service/periodic.py b/magnum/service/periodic.py index 7cbd286aee..2191d02593 100755 --- a/magnum/service/periodic.py +++ b/magnum/service/periodic.py @@ -141,6 +141,10 @@ class MagnumPeriodicTasks(periodic_task.PeriodicTasks): @periodic_task.periodic_task(run_immediately=True) @set_context 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 ( diff --git a/magnum/tests/unit/service/test_periodic.py b/magnum/tests/unit/service/test_periodic.py index bb87cfa11d..416305d8c5 100644 --- a/magnum/tests/unit/service/test_periodic.py +++ b/magnum/tests/unit/service/test_periodic.py @@ -332,3 +332,30 @@ class PeriodicTestCase(base.TestCase): 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 + + CONF.set_override('send_cluster_metrics', + False, group='drivers') + + periodic.MagnumPeriodicTasks(CONF)._send_cluster_metrics(self.context) + + self.assertEqual(0, mock_create_monitor.call_count) + self.assertEqual(0, notifier.info.call_count)