X-Git-Url: https://gerrit.opnfv.org/gerrit/gitweb?a=blobdiff_plain;f=monitor%2Fautomated-dashboard-datasource.py;fp=monitor%2Fautomated-dashboard-datasource.py;h=1e1b42f7cabf0068ec01eaa29416abd45ad46221;hb=32a1ab12db4b85bde421465fec5bfb7e15f9ca38;hp=0000000000000000000000000000000000000000;hpb=ad12c5707ac1191063af5cd33d54dd30ff649787;p=bottlenecks.git 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)