Example #1
0
 def __init__(self):
     super(EventsNotificationEndpoint, self).__init__()
     self.dispatcher_manager = dispatcher.load_dispatcher_manager()
     LOG.debug(_('Loading event definitions'))
     self.event_converter = event_converter.setup_events(
         extension.ExtensionManager(
             namespace='ceilometer.event.trait_plugin'))
Example #2
0
    def start(self):
        """Bind the UDP socket and handle incoming data."""
        # ensure dispatcher is configured before starting other services
        self.dispatcher_manager = dispatcher.load_dispatcher_manager()
        self.rpc_server = None
        self.notification_server = None
        super(CollectorService, self).start()

        if cfg.CONF.collector.udp_address:
            self.tg.add_thread(self.start_udp)

        allow_requeue = cfg.CONF.collector.requeue_sample_on_dispatcher_error
        transport = messaging.get_transport(optional=True)
        if transport:
            self.rpc_server = messaging.get_rpc_server(
                transport, cfg.CONF.publisher_rpc.metering_topic, self)

            target = oslo.messaging.Target(
                topic=cfg.CONF.publisher_notifier.metering_topic)
            self.notification_server = messaging.get_notification_listener(
                transport, [target], [self],
                allow_requeue=allow_requeue)

            self.rpc_server.start()
            self.notification_server.start()

            if not cfg.CONF.collector.udp_address:
                # Add a dummy thread to have wait() working
                self.tg.add_timer(604800, lambda: None)
Example #3
0
 def test_record_metering_data(self):
     mock_dispatcher = self._setup_fake_dispatcher()
     dps = dispatcher.load_dispatcher_manager()
     (self.srv.meter_manager, self.srv.manager) = dps
     self.srv.record_metering_data(None, self.counter)
     mock_dispatcher.record_metering_data.assert_called_once_with(
         data=self.counter)
Example #4
0
 def __init__(self):
     super(EventsNotificationEndpoint, self).__init__()
     self.dispatcher_manager = dispatcher.load_dispatcher_manager()
     LOG.debug(_('Loading event definitions'))
     self.event_converter = event_converter.setup_events(
         extension.ExtensionManager(
             namespace='ceilometer.event.trait_plugin'))
 def test_record_metering_data(self):
     mock_dispatcher = self._setup_fake_dispatcher()
     dps = dispatcher.load_dispatcher_manager()
     (self.srv.meter_manager, self.srv.manager) = dps
     self.srv.record_metering_data(None, self.counter)
     mock_dispatcher.record_metering_data.assert_called_once_with(
         data=self.counter)
Example #6
0
 def __init__(self, worker_id, conf):
     super(CollectorService, self).__init__(worker_id)
     self.conf = conf
     # ensure dispatcher is configured before starting other services
     dispatcher_managers = dispatcher.load_dispatcher_manager(conf)
     (self.meter_manager, self.event_manager) = dispatcher_managers
     self.sample_listener = None
     self.event_listener = None
     self.udp_thread = None
Example #7
0
 def __init__(self, worker_id, conf):
     super(CollectorService, self).__init__(worker_id)
     self.conf = conf
     # ensure dispatcher is configured before starting other services
     dispatcher_managers = dispatcher.load_dispatcher_manager(conf)
     (self.meter_manager, self.event_manager) = dispatcher_managers
     self.sample_listener = None
     self.event_listener = None
     self.udp_thread = None
    def _test_collector_requeue(self, listener):

        mock_dispatcher = self._setup_fake_dispatcher()
        self.srv.dispatcher_manager = dispatcher.load_dispatcher_manager()
        mock_dispatcher.record_metering_data.side_effect = Exception('boom')
        mock_dispatcher.record_events.side_effect = Exception('boom')

        self.srv.start()
        endp = getattr(self.srv, listener).dispatcher.endpoints[0]
        ret = endp.sample({}, 'pub_id', 'event', {}, {})
        self.assertEqual(oslo_messaging.NotificationResult.REQUEUE, ret)
    def _test_collector_no_requeue(self, listener):
        mock_dispatcher = self._setup_fake_dispatcher()
        self.srv.dispatcher_manager = dispatcher.load_dispatcher_manager()
        mock_dispatcher.record_metering_data.side_effect = (
            FakeException('boom'))
        mock_dispatcher.record_events.side_effect = (FakeException('boom'))

        self.srv.start()
        endp = getattr(self.srv, listener).dispatcher.endpoints[0]
        self.assertRaises(FakeException, endp.sample, {}, 'pub_id', 'event',
                          {}, {})
Example #10
0
    def _test_collector_no_requeue(self, listener):
        mock_dispatcher = self._setup_fake_dispatcher()
        self.srv.dispatcher_manager = dispatcher.load_dispatcher_manager()
        mock_dispatcher.record_metering_data.side_effect = (FakeException
                                                            ('boom'))
        mock_dispatcher.record_events.side_effect = (FakeException
                                                     ('boom'))

        self.srv.start()
        endp = getattr(self.srv, listener).dispatcher.endpoints[0]
        self.assertRaises(FakeException, endp.sample, {}, 'pub_id',
                          'event', {}, {})
Example #11
0
    def _test_collector_requeue(self, listener):

        mock_dispatcher = self._setup_fake_dispatcher()
        self.srv.dispatcher_manager = dispatcher.load_dispatcher_manager()
        mock_dispatcher.record_metering_data.side_effect = Exception('boom')
        mock_dispatcher.record_events.side_effect = Exception('boom')

        self.srv.start()
        endp = getattr(self.srv, listener).dispatcher.endpoints[0]
        ret = endp.sample({}, 'pub_id', 'event', {}, {})
        self.assertEqual(oslo_messaging.NotificationResult.REQUEUE,
                         ret)
Example #12
0
    def _test_collector_no_requeue(self, listener):
        mock_dispatcher = self._setup_fake_dispatcher()
        self.srv.dispatcher_manager = dispatcher.load_dispatcher_manager()
        mock_dispatcher.record_metering_data.side_effect = FakeException("boom")
        mock_dispatcher.record_events.side_effect = FakeException("boom")

        self.srv.start()
        endp = getattr(self.srv, listener).dispatcher.endpoints[0]
        self.assertRaises(
            FakeException,
            endp.sample,
            [{"ctxt": {}, "publisher_id": "pub_id", "event_type": "event", "payload": {}, "metadata": {}}],
        )
Example #13
0
    def _test_collector_requeue(self, listener, batch_listener=False):

        mock_dispatcher = self._setup_fake_dispatcher()
        self.srv.dispatcher_manager = dispatcher.load_dispatcher_manager()
        mock_dispatcher.record_metering_data.side_effect = Exception("boom")
        mock_dispatcher.record_events.side_effect = Exception("boom")

        self.srv.start()
        endp = getattr(self.srv, listener).dispatcher.endpoints[0]
        ret = endp.sample(
            [{"ctxt": {}, "publisher_id": "pub_id", "event_type": "event", "payload": {}, "metadata": {}}]
        )
        self.assertEqual(oslo_messaging.NotificationResult.REQUEUE, ret)
 def test_sample_with_bad_signature(self, mocked_verify):
     def _fake_verify(ev, secret):
         return ev.get('message_signature') != 'bad_signature'
     mocked_verify.side_effect = _fake_verify
     sample = {"payload": [{"message_signature": "bad_signature"}]}
     manager = dispatcher.load_dispatcher_manager(self.conf)[1]
     v = collector.EventEndpoint("secret", manager)
     v.sample([sample])
     self.assertEqual([], manager['file'].obj.events)
     del sample['payload'][0]['message_signature']
     sample['payload'][0]['message_signature'] = utils.compute_signature(
         sample['payload'][0], "secret")
     v.sample([sample])
     self.assertEqual(sample['payload'], manager['file'].obj.events)
Example #15
0
 def test_sample_with_bad_signature(self, mocked_verify):
     def _fake_verify(ev, secret):
         return ev.get('message_signature') != 'bad_signature'
     mocked_verify.side_effect = _fake_verify
     sample = {"payload": [{"message_signature": "bad_signature"}]}
     manager = dispatcher.load_dispatcher_manager()[0]
     v = collector.EventEndpoint("secret", manager)
     v.sample([sample])
     self.assertEqual([], manager['database'].obj.events)
     del sample['payload'][0]['message_signature']
     sample['payload'][0]['message_signature'] = utils.compute_signature(
         sample['payload'][0], "secret")
     v.sample([sample])
     self.assertEqual(sample['payload'], manager['database'].obj.events)
Example #16
0
    def __init__(self, worker_id, conf):
        super(CollectorService, self).__init__(worker_id)
        self.conf = conf
        # ensure dispatcher is configured before starting other services
        dispatcher_managers = dispatcher.load_dispatcher_manager(conf)
        (self.meter_manager, self.event_manager) = dispatcher_managers
        self.sample_listener = None
        self.event_listener = None
        self.udp_thread = None

        import debtcollector
        debtcollector.deprecate("Ceilometer collector service is deprecated."
                                "Use publishers to push data instead",
                                version="9.0", removal_version="10.0")
Example #17
0
    def _test_collector_requeue(self, listener, batch_listener=False):

        self.srv.dispatcher_manager = dispatcher.load_dispatcher_manager()
        mock_record = self.mock_dispatcher.record_metering_data
        mock_record.side_effect = Exception('boom')
        self.mock_dispatcher.record_events.side_effect = Exception('boom')

        self.srv.run()
        self.addCleanup(self.srv.terminate)
        endp = getattr(self.srv, listener).dispatcher.endpoints[0]
        ret = endp.sample([{'ctxt': {}, 'publisher_id': 'pub_id',
                            'event_type': 'event', 'payload': {},
                            'metadata': {}}])
        self.assertEqual(oslo_messaging.NotificationResult.REQUEUE,
                         ret)
Example #18
0
    def _test_collector_requeue(self, listener, batch_listener=False):

        self.srv.dispatcher_manager = dispatcher.load_dispatcher_manager()
        mock_record = self.mock_dispatcher.record_metering_data
        mock_record.side_effect = Exception('boom')
        self.mock_dispatcher.record_events.side_effect = Exception('boom')

        self.srv.run()
        self.addCleanup(self.srv.terminate)
        endp = getattr(self.srv, listener).dispatcher.endpoints[0]
        ret = endp.sample([{'ctxt': {}, 'publisher_id': 'pub_id',
                            'event_type': 'event', 'payload': {},
                            'metadata': {}}])
        self.assertEqual(oslo_messaging.NotificationResult.REQUEUE,
                         ret)
Example #19
0
    def start(self):
        """Bind the UDP socket and handle incoming data."""
        # ensure dispatcher is configured before starting other services
        self.dispatcher_manager = dispatcher.load_dispatcher_manager()
        super(CollectorService, self).start()
        if cfg.CONF.collector.udp_address:
            self.tg.add_thread(self.start_udp)

        if self.rpc_enabled():
            self.rpc_server = messaging.get_rpc_server(
                cfg.CONF.publisher_rpc.metering_topic, self)
            self.rpc_server.start()

            if not cfg.CONF.collector.udp_address:
                # Add a dummy thread to have wait() working
                self.tg.add_timer(604800, lambda: None)
Example #20
0
    def __init__(self, worker_id, conf):
        super(CollectorService, self).__init__(worker_id)
        self.conf = conf
        # ensure dispatcher is configured before starting other services
        dispatcher_managers = dispatcher.load_dispatcher_manager(conf)
        (self.meter_manager, self.event_manager) = dispatcher_managers
        self.sample_listener = None
        self.event_listener = None
        self.udp_thread = None

        import debtcollector
        debtcollector.deprecate(
            "Ceilometer collector service is deprecated."
            "Use publishers to push data instead",
            version="9.0",
            removal_version="10.0")
Example #21
0
    def start(self):
        """Bind the UDP socket and handle incoming data."""
        # ensure dispatcher is configured before starting other services
        dispatcher_managers = dispatcher.load_dispatcher_manager()
        (self.meter_manager, self.event_manager) = dispatcher_managers
        self.rpc_server = None
        self.sample_listener = None
        self.event_listener = None
        super(CollectorService, self).start()

        if cfg.CONF.collector.udp_address:
            self.tg.add_thread(self.start_udp)

        transport = messaging.get_transport(optional=True)
        if transport:
            if cfg.CONF.collector.enable_rpc:
                LOG.warning('RPC collector is deprecated in favour of queues. '
                            'Please switch to notifier publisher.')
                self.rpc_server = messaging.get_rpc_server(
                    transport, cfg.CONF.publisher_rpc.metering_topic, self)

            if list(self.meter_manager):
                sample_target = oslo_messaging.Target(
                    topic=cfg.CONF.publisher_notifier.metering_topic)
                self.sample_listener = messaging.get_notification_listener(
                    transport, [sample_target],
                    [SampleEndpoint(self.meter_manager)],
                    allow_requeue=(cfg.CONF.collector.
                                   requeue_sample_on_dispatcher_error))
                self.sample_listener.start()

            if cfg.CONF.notification.store_events and list(self.event_manager):
                event_target = oslo_messaging.Target(
                    topic=cfg.CONF.publisher_notifier.event_topic)
                self.event_listener = messaging.get_notification_listener(
                    transport, [event_target],
                    [EventEndpoint(self.event_manager)],
                    allow_requeue=(cfg.CONF.collector.
                                   requeue_event_on_dispatcher_error))
                self.event_listener.start()

            if cfg.CONF.collector.enable_rpc:
                self.rpc_server.start()

            if not cfg.CONF.collector.udp_address:
                # Add a dummy thread to have wait() working
                self.tg.add_timer(604800, lambda: None)
Example #22
0
    def start(self):
        """Bind the UDP socket and handle incoming data."""
        # ensure dispatcher is configured before starting other services
        dispatcher_managers = dispatcher.load_dispatcher_manager()
        (self.meter_manager, self.event_manager) = dispatcher_managers
        self.sample_listener = None
        self.event_listener = None
        self.udp_thread = None
        super(CollectorService, self).start()

        if cfg.CONF.collector.udp_address:
            self.udp_thread = threading.Thread(target=self.start_udp)
            self.udp_thread.daemon = True
            self.udp_thread.start()

        transport = messaging.get_transport(optional=True)
        if transport:
            if list(self.meter_manager):
                sample_target = oslo_messaging.Target(
                    topic=cfg.CONF.publisher_notifier.metering_topic)
                self.sample_listener = (
                    messaging.get_batch_notification_listener(
                        transport, [sample_target],
                        [SampleEndpoint(self.meter_manager)],
                        allow_requeue=True,
                        batch_size=cfg.CONF.collector.batch_size,
                        batch_timeout=cfg.CONF.collector.batch_timeout))
                self.sample_listener.start()

            if cfg.CONF.notification.store_events and list(self.event_manager):
                event_target = oslo_messaging.Target(
                    topic=cfg.CONF.publisher_notifier.event_topic)
                self.event_listener = (
                    messaging.get_batch_notification_listener(
                        transport, [event_target],
                        [EventEndpoint(self.event_manager)],
                        allow_requeue=True,
                        batch_size=cfg.CONF.collector.batch_size,
                        batch_timeout=cfg.CONF.collector.batch_timeout))
                self.event_listener.start()

            if not cfg.CONF.collector.udp_address:
                # NOTE(sileht): We have to drop oslo.service to remove this
                # last eventlet thread
                # Add a dummy thread to have wait() working
                self.tg.add_timer(604800, lambda: None)
Example #23
0
    def start(self):
        """Bind the UDP socket and handle incoming data."""
        # ensure dispatcher is configured before starting other services
        self.dispatcher_manager = dispatcher.load_dispatcher_manager()
        self.rpc_server = None
        self.sample_listener = None
        self.event_listener = None
        super(CollectorService, self).start()

        if cfg.CONF.collector.udp_address:
            self.tg.add_thread(self.start_udp)

        transport = messaging.get_transport(optional=True)
        if transport:
            if cfg.CONF.collector.enable_rpc:
                LOG.warning('RPC collector is deprecated in favour of queues. '
                            'Please switch to notifier publisher.')
                self.rpc_server = messaging.get_rpc_server(
                    transport, cfg.CONF.publisher_rpc.metering_topic, self)

            sample_target = oslo_messaging.Target(
                topic=cfg.CONF.publisher_notifier.metering_topic)
            self.sample_listener = messaging.get_notification_listener(
                transport, [sample_target],
                [SampleEndpoint(self.dispatcher_manager)],
                allow_requeue=(
                    cfg.CONF.collector.requeue_sample_on_dispatcher_error))

            if cfg.CONF.notification.store_events:
                event_target = oslo_messaging.Target(
                    topic=cfg.CONF.publisher_notifier.event_topic)
                self.event_listener = messaging.get_notification_listener(
                    transport, [event_target],
                    [EventEndpoint(self.dispatcher_manager)],
                    allow_requeue=(
                        cfg.CONF.collector.requeue_event_on_dispatcher_error))
                self.event_listener.start()

            if cfg.CONF.collector.enable_rpc:
                self.rpc_server.start()
            self.sample_listener.start()

            if not cfg.CONF.collector.udp_address:
                # Add a dummy thread to have wait() working
                self.tg.add_timer(604800, lambda: None)
Example #24
0
    def run(self):
        """Bind the UDP socket and handle incoming data."""
        super(CollectorService, self).run()
        # ensure dispatcher is configured before starting other services
        dispatcher_managers = dispatcher.load_dispatcher_manager()
        (self.meter_manager, self.event_manager) = dispatcher_managers
        self.sample_listener = None
        self.event_listener = None
        self.udp_thread = None

        if cfg.CONF.collector.udp_address:
            self.udp_thread = utils.spawn_thread(self.start_udp)

        transport = messaging.get_transport(optional=True)
        if transport:
            if list(self.meter_manager):
                sample_target = oslo_messaging.Target(
                    topic=cfg.CONF.publisher_notifier.metering_topic)
                self.sample_listener = (
                    messaging.get_batch_notification_listener(
                        transport, [sample_target], [
                            SampleEndpoint(cfg.CONF.publisher.telemetry_secret,
                                           self.meter_manager)
                        ],
                        allow_requeue=True,
                        batch_size=cfg.CONF.collector.batch_size,
                        batch_timeout=cfg.CONF.collector.batch_timeout))
                self.sample_listener.start()

            if cfg.CONF.notification.store_events and list(self.event_manager):
                event_target = oslo_messaging.Target(
                    topic=cfg.CONF.publisher_notifier.event_topic)
                self.event_listener = (
                    messaging.get_batch_notification_listener(
                        transport, [event_target], [
                            EventEndpoint(cfg.CONF.publisher.telemetry_secret,
                                          self.event_manager)
                        ],
                        allow_requeue=True,
                        batch_size=cfg.CONF.collector.batch_size,
                        batch_timeout=cfg.CONF.collector.batch_timeout))
                self.event_listener.start()
Example #25
0
    def start(self):
        self.dispatcher_manager = dispatcher.load_dispatcher_manager()
        self.notification_server = None
        super(ConsumerService, self).start()

        allow_requeue = cfg.CONF.consumer.requeue_on_error
        transport = messaging.get_transport(optional=True)
        if transport:
            self.rpc_server = messaging.get_rpc_server(
                transport, cfg.CONF.consumer.topic, self)

            target = oslo.messaging.Target(
                topic=cfg.CONF.consumer.topic)
            self.notification_server = messaging.get_notification_listener(
                transport, [target],
                [ConsumerEndpoint(self.dispatcher_manager,
                                  'record_metering_data',
                                  cfg.CONF.consumer.priority)],
                allow_requeue=allow_requeue)

            self.notification_server.start()
Example #26
0
    def start(self):
        """Bind the UDP socket and handle incoming data."""
        # ensure dispatcher is configured before starting other services
        dispatcher_managers = dispatcher.load_dispatcher_manager()
        (self.meter_manager, self.event_manager) = dispatcher_managers
        self.sample_listener = None
        self.event_listener = None
        self.udp_thread = None
        super(CollectorService, self).start()

        if cfg.CONF.collector.udp_address:
            self.udp_thread = utils.spawn_thread(self.start_udp)

        transport = messaging.get_transport(optional=True)
        if transport:
            if list(self.meter_manager):
                sample_target = oslo_messaging.Target(
                    topic=cfg.CONF.publisher_notifier.metering_topic)
                self.sample_listener = (
                    messaging.get_batch_notification_listener(
                        transport, [sample_target],
                        [SampleEndpoint(cfg.CONF.publisher.telemetry_secret,
                                        self.meter_manager)],
                        allow_requeue=True,
                        batch_size=cfg.CONF.collector.batch_size,
                        batch_timeout=cfg.CONF.collector.batch_timeout))
                self.sample_listener.start()

            if cfg.CONF.notification.store_events and list(self.event_manager):
                event_target = oslo_messaging.Target(
                    topic=cfg.CONF.publisher_notifier.event_topic)
                self.event_listener = (
                    messaging.get_batch_notification_listener(
                        transport, [event_target],
                        [EventEndpoint(cfg.CONF.publisher.telemetry_secret,
                                       self.event_manager)],
                        allow_requeue=True,
                        batch_size=cfg.CONF.collector.batch_size,
                        batch_timeout=cfg.CONF.collector.batch_timeout))
                self.event_listener.start()
Example #27
0
    def start(self):
        self.dispatcher_manager = dispatcher.load_dispatcher_manager()
        self.notification_server = None
        super(ConsumerService, self).start()

        allow_requeue = cfg.CONF.consumer.requeue_on_error
        transport = messaging.get_transport(optional=True)
        if transport:
            self.rpc_server = messaging.get_rpc_server(transport,
                                                       cfg.CONF.consumer.topic,
                                                       self)

            target = oslo.messaging.Target(topic=cfg.CONF.consumer.topic)
            self.notification_server = messaging.get_notification_listener(
                transport, [target], [
                    ConsumerEndpoint(self.dispatcher_manager,
                                     'record_metering_data',
                                     cfg.CONF.consumer.priority)
                ],
                allow_requeue=allow_requeue)

            self.notification_server.start()
Example #28
0
    def start(self):
        """Bind the UDP socket and handle incoming data."""
        # ensure dispatcher is configured before starting other services
        dispatcher_managers = dispatcher.load_dispatcher_manager()
        (self.meter_manager, self.event_manager) = dispatcher_managers
        self.sample_listener = None
        self.event_listener = None
        super(CollectorService, self).start()

        if cfg.CONF.collector.udp_address:
            self.tg.add_thread(self.start_udp)

        transport = messaging.get_transport(optional=True)
        if transport:
            if list(self.meter_manager):
                sample_target = oslo_messaging.Target(
                    topic=cfg.CONF.publisher_notifier.metering_topic)
                self.sample_listener = messaging.get_notification_listener(
                    transport, [sample_target],
                    [SampleEndpoint(self.meter_manager)],
                    allow_requeue=(
                        cfg.CONF.collector.requeue_sample_on_dispatcher_error))
                self.sample_listener.start()

            if cfg.CONF.notification.store_events and list(self.event_manager):
                event_target = oslo_messaging.Target(
                    topic=cfg.CONF.publisher_notifier.event_topic)
                self.event_listener = messaging.get_notification_listener(
                    transport, [event_target],
                    [EventEndpoint(self.event_manager)],
                    allow_requeue=(
                        cfg.CONF.collector.requeue_event_on_dispatcher_error))
                self.event_listener.start()

            if not cfg.CONF.collector.udp_address:
                # Add a dummy thread to have wait() working
                self.tg.add_timer(604800, lambda: None)
Example #29
0
 def test_load(self):
     sample_mg, event_mg = dispatcher.load_dispatcher_manager()
     self.assertEqual(2, len(list(sample_mg)))
     self.assertEqual(1, len(list(event_mg)))
 def test_load(self):
     sample_mg, event_mg = dispatcher.load_dispatcher_manager(self.CONF)
     self.assertEqual(2, len(list(sample_mg)))