diff --git a/grafana_backup/restore_user_permissions.py b/grafana_backup/restore_user_permissions.py new file mode 100755 index 0000000000000000000000000000000000000000..f37822f7f3d7526b24a2676b1f2d2be5c1a9629e --- /dev/null +++ b/grafana_backup/restore_user_permissions.py @@ -0,0 +1,35 @@ +import sys +import json +from grafana_backup.api_checks import main as api_checks +from grafana_backup.dashboardApi import set_user_role + + +def main(args, settings): + users_file = args.get('<users_filename>', None) + print("got users_file {0}".format(users_file)) + + (status, json_resp, uid_support, paging_support) = api_checks(settings) + + # Do not continue if API is unavailable or token is not valid + if not status == 200: + sys.exit(1) + + debug = settings.get('DEBUG') + verify_ssl = settings.get('VERIFY_SSL') + client_cert = settings.get('CLIENT_CERT') + grafana_url = settings.get('GRAFANA_URL') + http_post_headers = settings.get('HTTP_POST_HEADERS') + + with open(users_file, 'r') as f: + data = f.read() + + users = json.loads(data) + print(users) + + for user in users: + if user['role'] == 'Editor': + (status, content) = set_user_role(user['userId'], 'Editor', grafana_url, http_post_headers, verify_ssl, client_cert, debug) + print("changed user {0} to Editor".format(user['login'])) + + if status != 200: + print("changing role of user {0} failed with {1}".format(user['login'], status))