diff options
author | Yu Yang (Gabriel) <Gabriel.yuyang@huawei.com> | 2017-11-07 06:59:27 +0000 |
---|---|---|
committer | Gerrit Code Review <gerrit@opnfv.org> | 2017-11-07 06:59:27 +0000 |
commit | ea99f38bf373fea186c5b654eac547c81cab8be6 (patch) | |
tree | e816a36bde658bba14b223c18daed60da32d463e /monitor/automated-dashboard-datasource.py | |
parent | e8246e4cdea258839af2ccae3fa349650293b2f4 (diff) | |
parent | 594ad04a4f5ec8a5b0cf213962cf0f354820b8e6 (diff) |
Merge "Datasource and Dashboard automation script" into stable/euphrates
Diffstat (limited to 'monitor/automated-dashboard-datasource.py')
-rw-r--r-- | monitor/automated-dashboard-datasource.py | 69 |
1 files changed, 69 insertions, 0 deletions
diff --git a/monitor/automated-dashboard-datasource.py b/monitor/automated-dashboard-datasource.py new file mode 100644 index 00000000..1e1b42f7 --- /dev/null +++ b/monitor/automated-dashboard-datasource.py @@ -0,0 +1,69 @@ +############################################################################## +# Copyright (c) 2017 Huawei Tech and others. +# +# All rights reserved. This program and the accompanying materials +# are made available under the terms of the Apache License, Version 2.0 +# which accompanies this distribution, and is available at +# http://www.apache.org/licenses/LICENSE-2.0 +############################################################################## + +import logging +import socket +import requests +from oslo_serialization import jsonutils + + +logger = logging.getLogger(__name__) + + +def _create_dashboard(ip, port, path): + url = 'http://admin:admin@{}:{}/api/dashboards/db'.format(ip, port) + logger.info("Fetched IP for dashboard creation!") + with open(path) as f: + data = jsonutils.load(f) + try: + post(url, {"dashboard": data}) + logger.info( "Trying to post dashboard json!") + except Exception: + logger.info("Create dashboard failed") + raise + + +def _create_data_source(ip, port): + url = 'http://admin:admin@{}:{}/api/datasources'.format(ip, port) + logger.info("Fetched URL for datasource") + data = { + "name": "automated-ds", + "type": "prometheus", + "access": "direct", + "url": "http://{}:9090".format(ip), + } + try: + post(url, data) + logger.info("Trying to post datasource") + + except Exception: + logger.info("Create Datasources failed") + raise + + +def post(url, data): + data = jsonutils.dump_as_bytes(data) + logger.info("In post method for dumping data") + headers = {'Content-Type': 'application/json'} + try: + response = requests.post(url, data=data, headers=headers) + result = response.json() + logger.debug('The result is: %s', result) + logger.info("Trying to post") + return result + except Exception as e: + logger.info("Failed post" + str(e)) + raise + + +ip_address = socket.gethostbyname(socket.gethostname()) +_create_dashboard(ip_address, 3000, '/var/lib/grafana/' + + 'dashboards/' + + 'prometheus-system_rev1.json') +_create_data_source(ip_address, 3000) |