Skip to content
Snippets Groups Projects
save_datasources.py 1.58 KiB
Newer Older
import json, argparse
from dashboardApi import import_grafana_settings, search_datasource
from commons import print_horizontal_line
arthur.yueh's avatar
arthur.yueh committed

parser = argparse.ArgumentParser()
parser.add_argument('path',  help='folder path to save datasources')
parser.add_argument('conf_filename', default="grafanaSettings", help='The settings file name in the conf directory'
                                                                     ' (for example: the server name we want to backup/restore)')
arthur.yueh's avatar
arthur.yueh committed
args = parser.parse_args()

import_grafana_settings(args.conf_filename)
log_file = 'datasources_{0}.txt'.format(datetime.today().strftime('%Y%m%d%H%M'))
arthur.yueh's avatar
arthur.yueh committed

def save_datasource(file_name, datasource_setting):
    file_path = folder_path + '/' + file_name + '.datasource'
    with open(file_path, 'w') as f:
        f.write(json.dumps(datasource_setting))
        print("datasource:{0} is saved to {1}".format(file_name, file_path))
    status_code_and_content = search_datasource()
    if status_code_and_content[0] == 200:
        datasources = status_code_and_content[1]
        print("There are {0} datasources:".format(len(datasources)))
        for datasource in datasources:
            print(datasource)
            save_datasource(datasource['name'], datasource)
    else:
        print("query datasource failed, status: {0}, msg: {1}".format(status_code_and_content[0],
                                                                      status_code_and_content[1]))
arthur.yueh's avatar
arthur.yueh committed
print_horizontal_line()