Openstack-Aodh plugin
[osm/MON.git] / plugins / OpenStack / Aodh / alarming.py
1 """Send alarm info from Aodh to SO via MON"""
2
3 import json
4 from plugins.Openstack.Aodh.aodh_common import Aodh_Common
5
6
7 class Alarming(object):
8 """Receives alarm info from Aodh."""
9
10 def __init__(self):
11 """Create the aodh_receiver instance."""
12 self._aodh_common = Aodh_Common()
13
14 def alarming(self):
15 """Receive payload from Aodh."""
16 auth_token = self._aodh_common._authenticate()
17 endpoint = self._aodh_common.get_endpoint()
18
19 alarm_list = self._get_alarm_list(endpoint, auth_token)
20 # Confirm communication with Aodh by listing alarms
21 print("Alarm List ", alarm_list.text)
22
23 alarm_id = self._create_alarm(endpoint, auth_token)
24 print(alarm_id)
25
26 # alarm_info = self._get_alarm_info(endpoint,
27 # auth_token, "372af0e2-5c36-4e4d-8ce9-ca92d97d07d0")
28 # print("Alarm info", alarm_info.text)
29 return
30
31 def _get_alarm_list(self, endpoint, auth_token):
32 """Get a list of alarms that exist in Aodh."""
33 url = "{}/v2/alarms/".format(endpoint)
34
35 alarm_list = self._aodh_common._perform_request(url, auth_token,
36 req_type="get")
37 return alarm_list
38
39 def _get_alarm_info(self, endpoint, auth_token, alarmID):
40 """Get information about a specific alarm from Aodh."""
41 url = "{}/v2/alarms/%s".format(endpoint) % (alarmID)
42
43 alarm_details = self._aodh_common._perform_request(url, auth_token,
44 req_type="get")
45 return alarm_details
46
47 def _create_alarm(self, endpoint, auth_token):
48 """Get a list of alarms that exist in Aodh."""
49 url = "{}/v2/alarms/".format(endpoint)
50
51 rule = {'event_type': "threshold",}
52 payload = json.dumps({'state': 'alarm',
53 'name': 'my_alarm',
54 'severity': 'moderate',
55 'type': 'event',
56 'event_rule': rule,})
57
58 new_alarm = self._aodh_common._perform_request(url, auth_token,
59 req_type="post", payload=payload)
60 alarm_id =json.loads(new_alarm.text)['alarm_id']
61 return alarm_id
62