From 32c5d726470569f9a441346a0969f66fe5caab2a Mon Sep 17 00:00:00 2001 From: Mehdi Abaakouk Date: Mon, 10 Oct 2016 19:24:47 +0200 Subject: [PATCH] messaging: stop using global config Change-Id: I97840aa9d1249deeba91dcdb6a5d23eca2fecdf1 --- ceilometer/agent/manager.py | 2 +- ceilometer/api/hooks.py | 2 +- ceilometer/collector.py | 2 +- ceilometer/messaging.py | 5 ++-- ceilometer/notification.py | 6 ++-- ceilometer/publisher/messaging.py | 2 +- ceilometer/tests/base.py | 2 +- .../publisher/test_messaging_publisher.py | 8 ++--- ceilometer/tests/unit/test_messaging.py | 29 ++++++++++--------- tools/send_test_data.py | 4 +-- 10 files changed, 31 insertions(+), 31 deletions(-) diff --git a/ceilometer/agent/manager.py b/ceilometer/agent/manager.py index 930b0d23a4..eff7e8bf41 100644 --- a/ceilometer/agent/manager.py +++ b/ceilometer/agent/manager.py @@ -290,7 +290,7 @@ class AgentManager(service_base.PipelineBasedService): if group_prefix else namespace_prefix) self.notifier = oslo_messaging.Notifier( - messaging.get_transport(), + messaging.get_transport(cfg.CONF), driver=cfg.CONF.publisher_notifier.telemetry_driver, publisher_id="ceilometer.polling") diff --git a/ceilometer/api/hooks.py b/ceilometer/api/hooks.py index fd3c954b83..1ec5b015a4 100644 --- a/ceilometer/api/hooks.py +++ b/ceilometer/api/hooks.py @@ -80,7 +80,7 @@ class NotifierHook(hooks.PecanHook): """ def __init__(self, conf): - transport = messaging.get_transport() + transport = messaging.get_transport(conf) self.notifier = oslo_messaging.Notifier( transport, driver=conf.publisher_notifier.telemetry_driver, publisher_id="ceilometer.api") diff --git a/ceilometer/collector.py b/ceilometer/collector.py index 63f9993233..642d17f9f1 100644 --- a/ceilometer/collector.py +++ b/ceilometer/collector.py @@ -74,7 +74,7 @@ class CollectorService(cotyledon.Service): if self.conf.collector.udp_address: self.udp_thread = utils.spawn_thread(self.start_udp) - transport = messaging.get_transport(optional=True) + transport = messaging.get_transport(self.conf, optional=True) if transport: if list(self.meter_manager): sample_target = oslo_messaging.Target( diff --git a/ceilometer/messaging.py b/ceilometer/messaging.py index 7b325077d1..8f8211bede 100644 --- a/ceilometer/messaging.py +++ b/ceilometer/messaging.py @@ -13,7 +13,6 @@ # License for the specific language governing permissions and limitations # under the License. -from oslo_config import cfg import oslo_messaging from oslo_messaging import serializer as oslo_serializer @@ -25,14 +24,14 @@ def setup(): oslo_messaging.set_transport_defaults('ceilometer') -def get_transport(url=None, optional=False, cache=True): +def get_transport(conf, url=None, optional=False, cache=True): """Initialise the oslo_messaging layer.""" global TRANSPORTS, DEFAULT_URL cache_key = url or DEFAULT_URL transport = TRANSPORTS.get(cache_key) if not transport or not cache: try: - transport = oslo_messaging.get_transport(cfg.CONF, url) + transport = oslo_messaging.get_transport(conf, url) except (oslo_messaging.InvalidTransportURL, oslo_messaging.DriverLoadFailure): if not optional or url: diff --git a/ceilometer/notification.py b/ceilometer/notification.py index 0bc42a1130..35d9c027ad 100644 --- a/ceilometer/notification.py +++ b/ceilometer/notification.py @@ -160,7 +160,7 @@ class NotificationService(service_base.PipelineBasedService): self.event_pipeline_manager = pipeline.setup_event_pipeline() - self.transport = messaging.get_transport() + self.transport = messaging.get_transport(cfg.CONF) if cfg.CONF.notification.workload_partitioning: self.group_id = self.NOTIFICATION_NAMESPACE @@ -252,7 +252,7 @@ class NotificationService(service_base.PipelineBasedService): urls = cfg.CONF.notification.messaging_urls or [None] for url in urls: - transport = messaging.get_transport(url) + transport = messaging.get_transport(cfg.CONF, url) # NOTE(gordc): ignore batching as we want pull # to maintain sequencing as much as possible. listener = messaging.get_batch_notification_listener( @@ -271,7 +271,7 @@ class NotificationService(service_base.PipelineBasedService): def _configure_pipeline_listener(self): ev_pipes = self.event_pipeline_manager.pipelines pipelines = self.pipeline_manager.pipelines + ev_pipes - transport = messaging.get_transport() + transport = messaging.get_transport(cfg.CONF) partitioned = self.partition_coordinator.extract_my_subset( self.group_id, range(cfg.CONF.notification.pipeline_processing_queues)) diff --git a/ceilometer/publisher/messaging.py b/ceilometer/publisher/messaging.py index dbf1030659..a53e4b281e 100644 --- a/ceilometer/publisher/messaging.py +++ b/ceilometer/publisher/messaging.py @@ -201,7 +201,7 @@ class NotifierPublisher(MessagingPublisher): urlparse.urlencode(options, True), parsed_url.fragment]) self.notifier = oslo_messaging.Notifier( - messaging.get_transport(url), + messaging.get_transport(cfg.CONF, url), driver=cfg.CONF.publisher_notifier.telemetry_driver, publisher_id='telemetry.publisher.%s' % cfg.CONF.host, topics=topic, diff --git a/ceilometer/tests/base.py b/ceilometer/tests/base.py index ca6b0071ac..54f17df065 100644 --- a/ceilometer/tests/base.py +++ b/ceilometer/tests/base.py @@ -38,7 +38,7 @@ class BaseTestCase(base.BaseTestCase): # NOTE(sileht): Ensure a new oslo.messaging driver is loaded # between each tests - self.transport = messaging.get_transport("fake://", cache=False) + self.transport = messaging.get_transport(conf, "fake://", cache=False) self.useFixture(mockpatch.Patch( 'ceilometer.messaging.get_transport', return_value=self.transport)) diff --git a/ceilometer/tests/unit/publisher/test_messaging_publisher.py b/ceilometer/tests/unit/publisher/test_messaging_publisher.py index 9fac8d492d..fbc738598a 100644 --- a/ceilometer/tests/unit/publisher/test_messaging_publisher.py +++ b/ceilometer/tests/unit/publisher/test_messaging_publisher.py @@ -121,24 +121,24 @@ class NotifierOnlyPublisherTest(BasePublisherTestCase): def test_publish_other_host(self, cgt): msg_publisher.SampleNotifierPublisher( netutils.urlsplit('notifier://foo:foo@127.0.0.1:1234')) - cgt.assert_called_with('rabbit://foo:foo@127.0.0.1:1234') + cgt.assert_called_with(self.CONF, 'rabbit://foo:foo@127.0.0.1:1234') msg_publisher.EventNotifierPublisher( netutils.urlsplit('notifier://foo:foo@127.0.0.1:1234')) - cgt.assert_called_with('rabbit://foo:foo@127.0.0.1:1234') + cgt.assert_called_with(self.CONF, 'rabbit://foo:foo@127.0.0.1:1234') @mock.patch('ceilometer.messaging.get_transport') def test_publish_other_host_vhost_and_query(self, cgt): msg_publisher.SampleNotifierPublisher( netutils.urlsplit('notifier://foo:foo@127.0.0.1:1234/foo' '?driver=amqp&amqp_auto_delete=true')) - cgt.assert_called_with('amqp://foo:foo@127.0.0.1:1234/foo' + cgt.assert_called_with(self.CONF, 'amqp://foo:foo@127.0.0.1:1234/foo' '?amqp_auto_delete=true') msg_publisher.EventNotifierPublisher( netutils.urlsplit('notifier://foo:foo@127.0.0.1:1234/foo' '?driver=amqp&amqp_auto_delete=true')) - cgt.assert_called_with('amqp://foo:foo@127.0.0.1:1234/foo' + cgt.assert_called_with(self.CONF, 'amqp://foo:foo@127.0.0.1:1234/foo' '?amqp_auto_delete=true') diff --git a/ceilometer/tests/unit/test_messaging.py b/ceilometer/tests/unit/test_messaging.py index f1d2d00390..8809e94a96 100644 --- a/ceilometer/tests/unit/test_messaging.py +++ b/ceilometer/tests/unit/test_messaging.py @@ -27,39 +27,40 @@ class MessagingTests(base.BaseTestCase): def test_get_transport_invalid_url(self): self.assertRaises(oslo_messaging.InvalidTransportURL, - messaging.get_transport, "notvalid!") + messaging.get_transport, self.CONF, "notvalid!") def test_get_transport_url_caching(self): - t1 = messaging.get_transport('fake://') - t2 = messaging.get_transport('fake://') + t1 = messaging.get_transport(self.CONF, 'fake://') + t2 = messaging.get_transport(self.CONF, 'fake://') self.assertEqual(t1, t2) def test_get_transport_default_url_caching(self): - t1 = messaging.get_transport() - t2 = messaging.get_transport() + t1 = messaging.get_transport(self.CONF) + t2 = messaging.get_transport(self.CONF) self.assertEqual(t1, t2) def test_get_transport_default_url_no_caching(self): - t1 = messaging.get_transport(cache=False) - t2 = messaging.get_transport(cache=False) + t1 = messaging.get_transport(self.CONF, cache=False) + t2 = messaging.get_transport(self.CONF, cache=False) self.assertNotEqual(t1, t2) def test_get_transport_url_no_caching(self): - t1 = messaging.get_transport('fake://', cache=False) - t2 = messaging.get_transport('fake://', cache=False) + t1 = messaging.get_transport(self.CONF, 'fake://', cache=False) + t2 = messaging.get_transport(self.CONF, 'fake://', cache=False) self.assertNotEqual(t1, t2) def test_get_transport_default_url_caching_mix(self): - t1 = messaging.get_transport() - t2 = messaging.get_transport(cache=False) + t1 = messaging.get_transport(self.CONF) + t2 = messaging.get_transport(self.CONF, cache=False) self.assertNotEqual(t1, t2) def test_get_transport_url_caching_mix(self): - t1 = messaging.get_transport('fake://') - t2 = messaging.get_transport('fake://', cache=False) + t1 = messaging.get_transport(self.CONF, 'fake://') + t2 = messaging.get_transport(self.CONF, 'fake://', cache=False) self.assertNotEqual(t1, t2) def test_get_transport_optional(self): self.CONF.set_override('transport_url', 'non-url') - self.assertIsNone(messaging.get_transport(optional=True, + self.assertIsNone(messaging.get_transport(self.CONF, + optional=True, cache=False)) diff --git a/tools/send_test_data.py b/tools/send_test_data.py index 867c34a453..2471b0b500 100755 --- a/tools/send_test_data.py +++ b/tools/send_test_data.py @@ -43,9 +43,9 @@ def send_batch_notifier(notifier, topic, batch): def get_notifier(config_file): - service.prepare_service(argv=['/', '--config-file', config_file]) + conf = service.prepare_service(argv=['/', '--config-file', config_file]) return oslo_messaging.Notifier( - messaging.get_transport(), + messaging.get_transport(conf), driver='messagingv2', publisher_id='telemetry.publisher.test', topics=['metering'],