def import_gnet_dashboard_for_prometheus_datasource(
        api_token, gnet_id, prometheus_datasource_name):
    dashboard_json = None
    input_json = dict()
    result = get_gnet_dashboard(api_token, gnet_id)
    if result[0] == requests.codes.ok:
        io = StringIO(result[1])
        res = json.load(io)
        dashboard_json = res.get("json")
        input_json = dashboard_json["__inputs"][0]

    input_json['value'] = prometheus_datasource_name

    payload = {
        'dashboard': dashboard_json,
        'inputs': [input_json],
        'overwrite': True
    }

    uri = 'http://{0}:{1}/api/dashboards/import'.format(
        GRAFANA_INFO['host'], GRAFANA_INFO['port'])
    r = requests.post(uri,
                      headers=get_auth_headers(api_token),
                      data=json.dumps(payload))
    return (r.status_code, r.text)
def create_datasource(api_token, data_source_name, data_source_type, url, access='proxy', basic_auth=False):
    uri = 'http://{0}:{1}/api/datasources'.format(GRAFANA_INFO['host'], GRAFANA_INFO['port'])
    payload = {
        'name': data_source_name,
        'type': data_source_type,
        'url': url,
        'access': access,
        'basicAuth': basic_auth
    }
    r = requests.post(uri, headers=get_auth_headers(api_token), data=json.dumps(payload))
    return (r.status_code, r.text)
def import_dashboard_for_prometheus_datasource_from_file(
        api_token, json_file_name, prometheus_datasource_name):
    dashboard_json = None
    input_json = dict()
    fd = open(json_file_path, 'r')
    dashboard_json = json.load(fd)
    input_json = dashboard_json["__inputs"][0]

    input_json['value'] = prometheus_datasource_name

    payload = {
        'dashboard': dashboard_json,
        'inputs': [input_json],
        'overwrite': True
    }

    uri = 'http://{0}:{1}/api/dashboards/import'.format(
        GRAFANA_INFO['host'], GRAFANA_INFO['port'])
    r = requests.post(uri,
                      headers=get_auth_headers(api_token),
                      data=json.dumps(payload))
    return (r.status_code, r.text)
def get_gnet_dashboard(api_token, gnet_id):
    uri = 'http://{0}:{1}/api/gnet/dashboards/{2}'.format(
        GRAFANA_INFO['host'], GRAFANA_INFO['port'], gnet_id)
    r = requests.get(uri, headers=get_auth_headers(api_token))
    return (r.status_code, r.text)
def delete_dashboard(api_token, dashboard_slug):
    uri = 'http://{0}:{1}/api/dashboards/db/{2}'.format(
        GRAFANA_INFO['host'], GRAFANA_INFO['port'], dashboard_slug)
    r = requests.delete(uri, headers=get_auth_headers(api_token))
    return (r.status_code, r.text)
def delete_datasource_by_id(api_token, datasource_id):
    uri = 'http://{0}:{1}/api/datasources/{2}'.format(GRAFANA_INFO['host'], GRAFANA_INFO['port'], datasource_id)
    r = requests.delete(uri, headers=get_auth_headers(api_token))
    return (r.status_code, r.text)
def get_datasources(api_token):
    uri = 'http://{0}:{1}/api/datasources'.format(GRAFANA_INFO['host'], GRAFANA_INFO['port'])
    r = requests.get(uri, headers=get_auth_headers(api_token))
    return (r.status_code, r.text)