Updated the OpenStack plugins
[osm/MON.git] / plugins / OpenStack / Aodh / plugin_instance.py
1 # Copyright 2017 Intel Research and Development Ireland Limited
2 # *************************************************************
3
4 # This file is part of OSM Monitoring module
5 # All Rights Reserved to Intel Corporation
6
7 # Licensed under the Apache License, Version 2.0 (the "License"); you may
8 # not use this file except in compliance with the License. You may obtain
9 # a copy of the License at
10
11 # http://www.apache.org/licenses/LICENSE-2.0
12
13 # Unless required by applicable law or agreed to in writing, software
14 # distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
15 # WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
16 # License for the specific language governing permissions and limitations
17 # under the License.
18
19 # For those usages not covered by the Apache License, Version 2.0 please
20 # contact: helena.mcgough@intel.com or adrian.hoban@intel.com
21 ##
22 """Aodh plugin for the OSM monitoring module."""
23
24 import logging as log
25
26 from plugins.OpenStack.Aodh.alarming import Alarming
27 from plugins.OpenStack.Aodh.notifier import Notifier
28 from plugins.OpenStack.settings import Config
29
30 __author__ = "Helena McGough"
31
32
33 def register_plugin():
34 """Register the plugin."""
35 # Initialize configuration and notifications
36 config = Config.instance()
37 notifier = Notifier.instance()
38
39 # Intialize plugin
40 instance = Plugin(config=config, notifier=notifier)
41 instance.config()
42 instance.alarm()
43
44
45 class Plugin(object):
46 """Aodh plugin for OSM MON."""
47
48 def __init__(self, config, notifier):
49 """Plugin instance."""
50 log.info("Initialze the plugin instance.")
51 self._config = config
52 self._alarming = Alarming()
53 self._notifier = notifier
54
55 def config(self):
56 """Configure plugin."""
57 log.info("Configure the plugin instance.")
58 self._config.read_environ("aodh")
59
60 def alarm(self):
61 """Allow alarm info to be received from Aodh."""
62 log.info("Begin alarm functionality.")
63 self._alarming.alarming()
64
65 def notify(self):
66 """Send notifications to the SO."""
67 # TODO(mcgoughh): Run simultaneously so that notifications
68 # can be sent while messages are being consumed
69 log.info("Sending Openstack notifications to the SO.")
70 self._notifier.notify(self._alarming)
71
72 register_plugin()