Newer
Older
import argparse
from dashboardApi import *
from commons import *
from datetime import datetime
parser = argparse.ArgumentParser()
parser.add_argument('path', help='folder path to save alert channels')
args = parser.parse_args()
folder_path = args.path
log_file = 'alert_channels_{0}.txt'.format(datetime.today().strftime('%Y%m%d%H%M'))
def get_all_alert_channels_in_grafana():
(status, content) = search_alert_channels()
if status == 200:
channels = content
print("There are {0} channels:".format(len(channels)))
for channel in channels:
print("name: {}".format(to_python2_and_3_compatible_string(channel['name'])))
return channels
else:
print("query alert channels failed, status: {}, msg: {}".format(status, content))
return []
def save_alert_channel(channel_name, file_name, alert_channel_setting):
file_path = folder_path + '/' + str(file_name) + '.alert_channel'
with open(file_path, 'w') as f:
f.write(json.dumps(alert_channel_setting))
print("alert_channel:{0} is saved to {1}".format(channel_name, file_path))
def get_indivisual_alert_channel_and_save(channels):
for channel in channels:
if 'uid' in channel:
channel_identifier = channel['uid']
else:
channel_identifier = channel['id']
save_alert_channel(
to_python2_and_3_compatible_string(channel['name']),
to_python2_and_3_compatible_string(channel_identifier),
channel
)
file_path = folder_path + '/' + log_file
with open(u"{0}".format(file_path) , 'w+') as f:
f.write('{}\t{}'.format(to_python2_and_3_compatible_string(channel_identifier), to_python2_and_3_compatible_string(channel['name'])))
alert_channels = get_all_alert_channels_in_grafana()
get_indivisual_alert_channel_and_save(alert_channels)
print_horizontal_line()