59 lines
1.9 KiB
Python
Executable File
59 lines
1.9 KiB
Python
Executable File
#!/usr/bin/env python
|
|
#
|
|
"""alarm_notification_setup
|
|
Sets up test alarms and notifications using the mon-api. Assumes the mini-mon setup.
|
|
"""
|
|
|
|
import argparse
|
|
from glob import glob
|
|
import httplib
|
|
import json
|
|
import sys
|
|
|
|
API_HOST = '192.168.10.4'
|
|
API_PORT = '8080'
|
|
HEADERS = {"Content-Type": "application/json",
|
|
"Accept": "application/json",
|
|
"X-Tenant-Id": "1"}
|
|
|
|
|
|
def post(conn, url, body):
|
|
conn.request("POST", url, body, HEADERS)
|
|
http_response = conn.getresponse()
|
|
response = http_response.read()
|
|
if http_response.status < 200 or http_response.status > 300:
|
|
print("\tError %d response: %s" % (http_response.status, response))
|
|
return response
|
|
|
|
def main():
|
|
parser = argparse.ArgumentParser(description='Setup Alarms and Notification via the api. Assumes mini-mon')
|
|
parser.add_argument('--email', '-e', required=True)
|
|
args = parser.parse_args()
|
|
|
|
conn = httplib.HTTPConnection(API_HOST, API_PORT)
|
|
|
|
with open('notification.json', 'r') as notification_file:
|
|
notification_json = notification_file.read() % args.email
|
|
|
|
print('Adding email notification.')
|
|
response = post(conn, '/v2.0/notification-methods', notification_json)
|
|
response_json = json.loads(response)
|
|
|
|
notification_method_id = response_json['id']
|
|
|
|
# Alarms with notification
|
|
for path in glob('alarms/*.json'):
|
|
with open(path, 'r') as alarm_file:
|
|
alarm_json = alarm_file.read() % (notification_method_id, notification_method_id, notification_method_id)
|
|
print('Adding Alarm %s' % path)
|
|
post(conn, '/v2.0/alarms', alarm_json)
|
|
|
|
# Alarms without notification
|
|
for path in glob('alarms-no-notification/*.json'):
|
|
print('Adding Alarm %s' % path)
|
|
with open(path, 'r') as alarm_file:
|
|
post(conn, '/v2.0/alarms', alarm_file.read())
|
|
|
|
if __name__ == "__main__":
|
|
sys.exit(main())
|