You cannot select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
41 lines
1.6 KiB
Python
41 lines
1.6 KiB
Python
#/usr/bin/env python
|
|
|
|
import os
|
|
import argparse
|
|
import requests
|
|
import json
|
|
|
|
def import_resources(host, port, cfg_file):
|
|
with open(cfg_file, 'r') as f:
|
|
for saved_object in json.load(f):
|
|
_id = saved_object["_id"]
|
|
_type = saved_object["_type"]
|
|
_doc = saved_object["_source"]
|
|
import_saved_object(host, port, _type, _id, _doc)
|
|
|
|
def import_saved_object(host, port, _type, _id, data):
|
|
saved_objects_api = "http://{}:{}/api/saved_objects/{}/{}".format(
|
|
host, port, _type, _id)
|
|
request = requests.get(saved_objects_api)
|
|
if request.status_code == 404:
|
|
print("Creating {} as {}".format(_type, _id))
|
|
request = requests.post(saved_objects_api, json={"attributes": data},
|
|
headers={'kbn-xsrf': 'true'})
|
|
else:
|
|
print("Updating {} named {}".format(_type, _id))
|
|
request = requests.put(saved_objects_api, json={"attributes": data},
|
|
headers={'kbn-xsrf': 'true'})
|
|
request.raise_for_status()
|
|
|
|
if __name__ == '__main__':
|
|
parser = argparse.ArgumentParser(description='import Kibana 6.x resources',
|
|
formatter_class=argparse.ArgumentDefaultsHelpFormatter)
|
|
parser.add_argument('export_file', metavar='FILE',
|
|
help='JSON export file with resources')
|
|
parser.add_argument('-p', '--port', metavar='PORT', default=5601, type=int,
|
|
help='port of Kibana instance')
|
|
parser.add_argument('-H', '--host', metavar='HOST', default='kibana',
|
|
help='host of Kibana instance')
|
|
args = parser.parse_args()
|
|
import_resources(args.host, args.port, args.export_file)
|