我想通过它的API更新grafana仪表板,但我发现了两个问题:
- 我收到一个412 HTTP错误
{'message': 'A dashboard with the same name in the folder already exists', 'status': 'name-exists'}
- 当我更改仪表板的名称时,它会被移到常规文件夹中
我通过以下方式获得了用于更新仪表板的json:
- 通过API下载获取仪表板的当前状态
- 更改了一些变量(现在我刚刚更改了这些变量,试图将其保留在当前文件夹中(
response_json["meta"]["folderId"] = folder_id
response_json["meta"]["folderUid"] = folder_uid
response_json["meta"]["overwrite"] = True
response_json["dashboard"]["uid"] = dashboard_uid
response_json["dashboard"]["id"] = dashboard_id
我没有改变任何其他事情,所以我不知道为什么我的名字存在问题;如果它存在,我想更新它,而不是创建一个新的,所以它应该是仪表板存在的。
我已尝试更改仪表板的名称。
试试这个:
def get_dashboard_by_uid(uid: str):
# _headers contains Authorization with the bearer
endpoint = f'{_url}/dashboards/uid/{uid}'
return requests.get(endpoint, headers=_headers, verify=False).json()
def update_dashboard():
dashboard = get_dashboard_by_uid('<your-dashboard-uid>')
endpoint = f'<url>/dashboards/db'
headers = _headers
headers['Content-Type'] = 'application/json'
headers['Host'] = '<your-host>'
dashboard['dashboard']['title'] = 'Change from API update'
dashboard['folderId'] = <your-folder-id>
return requests.post(endpoint, data=json.dumps(dashboard), headers=headers, verify=False).json()
来自API文件:
您必须在JSON中提供多个字段,第一个字段是仪表板JSON模型,其余字段是文件夹、提交版本历史记录和覆盖属性的消息。
{"仪表板":{json_dashboard_model},"文件夹Id":0,"folderUid":"l3KqBxCMz";,"消息":"对xyz"进行了改变;,"覆盖":虚假的}
代码中有这一行:dashboard['folderId'] = <your-folder-id>
您可以将对象添加到您想要的仪表板所在的文件夹中。
之前
代码运行后