示例#1
0
    def _record_change(self, alarm):
        if not self.conf.record_history:
            return
        type = models.AlarmChange.STATE_TRANSITION
        detail = json.dumps({'state': alarm.state})
        user_id, project_id = self.ks_client.user_id, self.ks_client.project_id
        on_behalf_of = alarm.project_id
        now = timeutils.utcnow()
        payload = dict(event_id=str(uuid.uuid4()),
                       alarm_id=alarm.alarm_id,
                       type=type,
                       detail=detail,
                       user_id=user_id,
                       project_id=project_id,
                       on_behalf_of=on_behalf_of,
                       timestamp=now)

        try:
            self._storage_conn.record_alarm_change(payload)
        except aodh.NotImplementedError:
            pass
        if not self._alarm_change_notifier:
            transport = messaging.get_transport(self.conf)
            self._alarm_change_notifier = messaging.get_notifier(
                transport, publisher_id="aodh.evaluator")
        notification = "alarm.state_transition"
        self._alarm_change_notifier.info({},
                                         notification, payload)
示例#2
0
    def _record_change(self, alarm):
        if not self.conf.record_history:
            return
        type = models.AlarmChange.STATE_TRANSITION
        detail = json.dumps({'state': alarm.state})
        user_id, project_id = self.ks_client.user_id, self.ks_client.project_id
        on_behalf_of = alarm.project_id
        now = timeutils.utcnow()
        payload = dict(event_id=str(uuid.uuid4()),
                       alarm_id=alarm.alarm_id,
                       type=type,
                       detail=detail,
                       user_id=user_id,
                       project_id=project_id,
                       on_behalf_of=on_behalf_of,
                       timestamp=now)

        try:
            self._storage_conn.record_alarm_change(payload)
        except aodh.NotImplementedError:
            pass
        if not self._alarm_change_notifier:
            transport = messaging.get_transport(self.conf)
            self._alarm_change_notifier = messaging.get_notifier(
                transport, publisher_id="aodh.evaluator")
        notification = "alarm.state_transition"
        self._alarm_change_notifier.info({}, notification, payload)
示例#3
0
文件: alarms.py 项目: amar266/aodh
def _send_notification(event, payload):
    notification = event.replace(" ", "_")
    notification = "alarm.%s" % notification
    transport = messaging.get_transport(pecan.request.cfg)
    notifier = messaging.get_notifier(transport, publisher_id="aodh.api")
    # FIXME(sileht): perhaps we need to copy some infos from the
    # pecan request headers like nova does
    notifier.info({}, notification, payload)
示例#4
0
文件: alarms.py 项目: cug-heshun/aodh
def _send_notification(event, payload):
    notification = event.replace(" ", "_")
    notification = "alarm.%s" % notification
    transport = messaging.get_transport(pecan.request.cfg)
    notifier = messaging.get_notifier(transport, publisher_id="aodh.api")
    # FIXME(sileht): perhaps we need to copy some infos from the
    # pecan request headers like nova does
    notifier.info({}, notification, payload)
示例#5
0
 def start(self):
     super(EventAlarmEvaluationService, self).start()
     self.listener = messaging.get_notification_listener(
         messaging.get_transport(self.conf),
         [oslo_messaging.Target(topic=self.conf.event_alarm_topic)],
         [EventAlarmEndpoint(self.evaluator)])
     self.listener.start()
     # Add a dummy thread to have wait() working
     self.tg.add_timer(604800, lambda: None)
示例#6
0
文件: __init__.py 项目: pczerkas/aodh
    def __init__(self, conf):
        super(AlarmNotifierService, self).__init__()
        transport = messaging.get_transport(conf)
        self.rpc_server = messaging.get_rpc_server(
            conf, transport, conf.notifier_rpc_topic, self)

        self.notifiers = extension.ExtensionManager(
            self.NOTIFIER_EXTENSIONS_NAMESPACE,
            invoke_on_load=True,
            invoke_args=(conf,))
示例#7
0
文件: __init__.py 项目: sileht/aodh
    def __init__(self, conf):
        super(AlarmNotifierService, self).__init__()
        transport = messaging.get_transport(conf)
        self.rpc_server = messaging.get_rpc_server(conf, transport,
                                                   conf.notifier_rpc_topic,
                                                   self)

        self.notifiers = extension.ExtensionManager(
            self.NOTIFIER_EXTENSIONS_NAMESPACE,
            invoke_on_load=True,
            invoke_args=(conf, ))
示例#8
0
文件: __init__.py 项目: zqfan/aodh
    def __init__(self, conf):
        super(AlarmNotifierService, self).__init__()
        transport = messaging.get_transport(conf)
        self.notifiers = extension.ExtensionManager(
            self.NOTIFIER_EXTENSIONS_NAMESPACE,
            invoke_on_load=True,
            invoke_args=(conf,))

        target = oslo_messaging.Target(topic=conf.notifier_topic)
        self.listener = messaging.get_notification_listener(
            transport, [target],
            [AlarmEndpoint(self.notifiers)])
示例#9
0
    def __init__(self, worker_id, conf):
        self.conf = conf
        transport = messaging.get_transport(self.conf)
        self.notifiers = extension.ExtensionManager(
            self.NOTIFIER_EXTENSIONS_NAMESPACE,
            invoke_on_load=True,
            invoke_args=(self.conf,))

        target = oslo_messaging.Target(topic=self.conf.notifier_topic)
        self.listener = messaging.get_batch_notification_listener(
            transport, [target], [AlarmEndpoint(self.notifiers)], False,
            self.conf.notifier.batch_size, self.conf.notifier.batch_timeout)
        self.listener.start()
示例#10
0
文件: base.py 项目: openstack/aodh
    def setup_messaging(self, conf, exchange=None):
        self.useFixture(oslo_messaging.conffixture.ConfFixture(conf))
        conf.set_override("notification_driver", "messaging")
        if not exchange:
            exchange = 'aodh'
        conf.set_override("control_exchange", exchange)

        # NOTE(sileht): Ensure a new oslo.messaging driver is loaded
        # between each tests
        self.transport = messaging.get_transport(conf, "fake://", cache=False)
        self.useFixture(mockpatch.Patch(
            'aodh.messaging.get_transport',
            return_value=self.transport))
示例#11
0
文件: event.py 项目: yi-cloud/aodh
 def __init__(self, worker_id, conf):
     super(EventAlarmEvaluationService, self).__init__(worker_id)
     self.conf = conf
     self.storage_conn = storage.get_connection_from_config(self.conf)
     self.evaluator = event.EventAlarmEvaluator(self.conf)
     self.listener = messaging.get_batch_notification_listener(
         messaging.get_transport(self.conf),
         [oslo_messaging.Target(
             topic=self.conf.listener.event_alarm_topic)],
         [EventAlarmEndpoint(self.evaluator)], False,
         self.conf.listener.batch_size,
         self.conf.listener.batch_timeout)
     self.listener.start()
示例#12
0
    def setup_messaging(self, conf, exchange=None):
        self.useFixture(oslo_messaging.conffixture.ConfFixture(conf))
        conf.set_override("notification_driver", ["messaging"])
        if not exchange:
            exchange = 'aodh'
        conf.set_override("control_exchange", exchange)

        # NOTE(sileht): Ensure a new oslo.messaging driver is loaded
        # between each tests
        self.transport = messaging.get_transport(conf, "fake://", cache=False)
        self.useFixture(
            fixtures.MockPatch('aodh.messaging.get_transport',
                               return_value=self.transport))
示例#13
0
    def __init__(self, worker_id, conf):
        super(AlarmNotifierService, self).__init__(worker_id)
        self.conf = conf
        transport = messaging.get_transport(self.conf)
        self.notifiers = extension.ExtensionManager(
            self.NOTIFIER_EXTENSIONS_NAMESPACE,
            invoke_on_load=True,
            invoke_args=(self.conf,))

        target = oslo_messaging.Target(topic=self.conf.notifier_topic)
        self.listener = messaging.get_batch_notification_listener(
            transport, [target], [AlarmEndpoint(self.notifiers)], False,
            self.conf.notifier.batch_size, self.conf.notifier.batch_timeout)
        self.listener.start()
示例#14
0
 def start(self):
     super(EventAlarmEvaluationService, self).start()
     self.storage_conn = storage.get_connection_from_config(self.conf)
     self.evaluator = event.EventAlarmEvaluator(self.conf)
     self.listener = messaging.get_batch_notification_listener(
         messaging.get_transport(self.conf),
         [oslo_messaging.Target(
             topic=self.conf.listener.event_alarm_topic)],
         [EventAlarmEndpoint(self.evaluator)], False,
         self.conf.listener.batch_size,
         self.conf.listener.batch_timeout)
     self.listener.start()
     # Add a dummy thread to have wait() working
     self.tg.add_timer(604800, lambda: None)
示例#15
0
    def start(self):
        super(AlarmNotifierService, self).start()
        transport = messaging.get_transport(self.conf)
        self.notifiers = extension.ExtensionManager(
            self.NOTIFIER_EXTENSIONS_NAMESPACE,
            invoke_on_load=True,
            invoke_args=(self.conf,))

        target = oslo_messaging.Target(topic=self.conf.notifier_topic)
        self.listener = messaging.get_batch_notification_listener(
            transport, [target], [AlarmEndpoint(self.notifiers)], False,
            self.conf.notifier.batch_size, self.conf.notifier.batch_timeout)
        self.listener.start()
        # Add a dummy thread to have wait() working
        self.tg.add_timer(604800, lambda: None)
示例#16
0
文件: base.py 项目: pczerkas/aodh
    def setup_messaging(self, conf, exchange=None):
        self.useFixture(oslo_messaging.conffixture.ConfFixture(conf))
        conf.set_override("notification_driver", "messaging")
        if not exchange:
            exchange = 'aodh'
        conf.set_override("control_exchange", exchange)

        # NOTE(sileht): oslo.messaging fake driver uses time.sleep
        # for task switch, so we need to monkey_patch it
        # and also ensure the correct exchange have been set
        eventlet.monkey_patch(time=True)

        # NOTE(sileht): Ensure a new oslo.messaging driver is loaded
        # between each tests
        self.transport = messaging.get_transport(conf, "fake://", cache=False)
        self.useFixture(mockpatch.Patch(
            'aodh.messaging.get_transport',
            return_value=self.transport))
示例#17
0
    def setup_messaging(self, conf, exchange=None):
        self.useFixture(oslo_messaging.conffixture.ConfFixture(conf))
        conf.set_override("notification_driver", "messaging")
        if not exchange:
            exchange = 'aodh'
        conf.set_override("control_exchange", exchange)

        # NOTE(sileht): oslo.messaging fake driver uses time.sleep
        # for task switch, so we need to monkey_patch it
        # and also ensure the correct exchange have been set
        eventlet.monkey_patch(time=True)

        # NOTE(sileht): Ensure a new oslo.messaging driver is loaded
        # between each tests
        self.transport = messaging.get_transport(conf, "fake://", cache=False)
        self.useFixture(
            mockpatch.Patch('aodh.messaging.get_transport',
                            return_value=self.transport))
    def __init__(self, conf):
        super(AlarmNotifierService, self).__init__()
        transport = messaging.get_transport(conf)

        self.notifiers = extension.ExtensionManager(
            self.NOTIFIER_EXTENSIONS_NAMESPACE,
            invoke_on_load=True,
            invoke_args=(conf,))

        if conf.ipc_protocol == 'rpc':
            self.ipc = 'rpc'
            self.rpc_server = messaging.get_rpc_server(
                conf, transport, conf.notifier_rpc_topic, self)
        else:
            self.ipc = 'queue'
            target = oslo_messaging.Target(topic=conf.notifier_topic)
            self.listener = messaging.get_notification_listener(
                transport, [target],
                [AlarmEndpoint(self.notifiers)])
示例#19
0
    def __init__(self, conf):
        super(AlarmNotifierService, self).__init__()
        transport = messaging.get_transport(conf)

        self.notifiers = extension.ExtensionManager(
            self.NOTIFIER_EXTENSIONS_NAMESPACE,
            invoke_on_load=True,
            invoke_args=(conf, ))

        if conf.ipc_protocol == 'rpc':
            self.ipc = 'rpc'
            self.rpc_server = messaging.get_rpc_server(conf, transport,
                                                       conf.notifier_rpc_topic,
                                                       self)
        else:
            self.ipc = 'queue'
            target = oslo_messaging.Target(topic=conf.notifier_topic)
            self.listener = messaging.get_notification_listener(
                transport, [target], [AlarmEndpoint(self.notifiers)])
示例#20
0
 def alarm_change_notifier(self):
     if not self._alarm_change_notifier:
         transport = messaging.get_transport(self.conf)
         self._alarm_change_notifier = messaging.get_notifier(
             transport, publisher_id="aodh.evaluator")
     return self._alarm_change_notifier
示例#21
0
 def test_get_transport_optional(self):
     self.CONF.set_override('transport_url', 'non-url')
     self.assertIsNone(messaging.get_transport(self.CONF, optional=True,
                                               cache=False))
示例#22
0
 def test_get_transport_url_caching(self):
     t1 = messaging.get_transport(self.CONF, 'fake://')
     t2 = messaging.get_transport(self.CONF, 'fake://')
     self.assertEqual(t1, t2)
示例#23
0
 def __init__(self, conf):
     self.notifier = oslo_messaging.Notifier(
         messaging.get_transport(conf),
         driver='messagingv2',
         publisher_id="alarming.evaluator",
         topic=conf.notifier_topic)
示例#24
0
文件: service.py 项目: chungg/aodh
 def __init__(self):
     super(AlarmNotifierService, self).__init__()
     transport = messaging.get_transport()
     self.rpc_server = messaging.get_rpc_server(
         transport, cfg.CONF.alarm.notifier_rpc_topic, self)
示例#25
0
 def test_get_transport_url_caching_mix(self):
     t1 = messaging.get_transport(self.CONF, 'fake://')
     t2 = messaging.get_transport(self.CONF, 'fake://', cache=False)
     self.assertNotEqual(t1, t2)
示例#26
0
 def test_get_transport_default_url_caching(self):
     t1 = messaging.get_transport(self.CONF, )
     t2 = messaging.get_transport(self.CONF, )
     self.assertEqual(t1, t2)
示例#27
0
 def test_get_transport_url_caching_mix(self):
     t1 = messaging.get_transport(self.CONF, 'fake://')
     t2 = messaging.get_transport(self.CONF, 'fake://', cache=False)
     self.assertNotEqual(t1, t2)
示例#28
0
文件: queue.py 项目: cug-heshun/aodh
 def __init__(self, conf):
     self.notifier = oslo_messaging.Notifier(
         messaging.get_transport(conf),
         driver='messagingv2',
         publisher_id="alarming.evaluator",
         topics=[conf.notifier_topic])
示例#29
0
文件: rpc.py 项目: sileht/aodh
 def __init__(self, conf):
     transport = messaging.get_transport(conf)
     self.client = messaging.get_rpc_client(transport,
                                            topic=conf.notifier_rpc_topic,
                                            version="1.0")
示例#30
0
 def test_get_transport_optional(self):
     self.CONF.set_override('rpc_backend', '')
     self.assertIsNone(
         messaging.get_transport(self.CONF, optional=True, cache=False))
示例#31
0
 def test_get_transport_default_url_no_caching(self):
     t1 = messaging.get_transport(self.CONF, cache=False)
     t2 = messaging.get_transport(self.CONF, cache=False)
     self.assertNotEqual(t1, t2)
示例#32
0
 def test_get_transport_url_caching(self):
     t1 = messaging.get_transport(self.CONF, 'fake://')
     t2 = messaging.get_transport(self.CONF, 'fake://')
     self.assertEqual(t1, t2)
示例#33
0
 def test_get_transport_default_url_caching(self):
     t1 = messaging.get_transport(self.CONF, )
     t2 = messaging.get_transport(self.CONF, )
     self.assertEqual(t1, t2)
示例#34
0
 def test_get_transport_default_url_no_caching(self):
     t1 = messaging.get_transport(self.CONF, cache=False)
     t2 = messaging.get_transport(self.CONF, cache=False)
     self.assertNotEqual(t1, t2)
示例#35
0
 def test_get_transport_url_no_caching(self):
     t1 = messaging.get_transport('fake://', cache=False)
     t2 = messaging.get_transport('fake://', cache=False)
     self.assertNotEqual(t1, t2)
示例#36
0
 def test_get_transport_optional(self):
     self.CONF.set_override('rpc_backend', '')
     self.assertIsNone(messaging.get_transport(self.CONF, optional=True,
                                               cache=False))
示例#37
0
 def test_get_transport_default_url_caching_mix(self):
     t1 = messaging.get_transport()
     t2 = messaging.get_transport(cache=False)
     self.assertNotEqual(t1, t2)
示例#38
0
文件: rpc.py 项目: pczerkas/aodh
 def __init__(self, conf):
     transport = messaging.get_transport(conf)
     self.client = messaging.get_rpc_client(
         transport, topic=conf.notifier_rpc_topic,
         version="1.0")
示例#39
0
 def test_get_transport_optional(self):
     self.CONF.set_override('transport_url', 'non-url')
     self.assertIsNone(
         messaging.get_transport(self.CONF, optional=True, cache=False))