import sys
import json
import requests
from requests.auth import HTTPBasicAuth
from datetime import datetime

kibanaEndpoint= ''
kibanaUser = ''
kibanaPassword = ''
kibanaSpace = ''

def print_with_time(message):
    current_time = datetime.now().strftime('%Y-%m-%d %H:%M:%S')
    print(f"[{current_time}] {message}")

def deleteKibanaIndexPattern(space, indexPatternId):
    uri = f"{kibanaEndpoint}/api/saved_objects/index-pattern/{indexPatternId}"

    if space != "default":
        uri = f"{kibanaEndpoint}/s/{space}/api/saved_objects/index-pattern/{indexPatternId}"
    headers = {
        "kbn-xsrf": "true",
    }
    ret = requests.delete(uri,
                auth=kibanaAuth,
                headers=headers)
    if ret.status_code != 200:
        print_with_time(f"Failed to delete index patterns. " +
            f"Status code: {ret.status_code}, body: {ret.content}")
    else:
        print_with_time(f"delete indexPattern {indexPatternId} @ {space} success")

def print_help():
    print('''
Usage: python %s kibana_config.json index_pattern_ids.txt

kibana_config.json exmplae:
{
    "url" : "http://192.168.1.1:5601",
    "user" : "elastic",
    "password" : "thePassword",
    "space" :  "default"
}

index_pattern_ids.txt example content:
aa77bf10-9c17-11ef-8665-41f4399ec183	etl-dev.mytest
5a264770-a0a9-11ef-8279-7f5e6cac2855	etl-spe.es_test3
d07fc4c0-a0d4-11ef-8279-7f5e6cac2855	etl-spe.es_test5

you can use  kibana_index_pattern_list.py to get index_pattern_ids.txt file
''' % sys.argv[0])
indexPatternIds = []
try:
    configFile = sys.argv[1]
    indexPatternIdFile = sys.argv[2]
    kbnConfig = json.loads(open(configFile, 'r').read())

    kibanaEndpoint=kbnConfig['url']
    kibanaUser = kbnConfig['user']
    kibanaPassword = kbnConfig['password']
    kibanaSpace = kbnConfig['space']

    for i in open(indexPatternIdFile,'r').read().split('\n'):
        if i.strip()!="":
            id = i.split('\t')[0].split(' ')[0]
            indexPatternIds.append(id)
except Exception as ex:
    print_help()
    print(str(ex))
    sys.exit(1)


kibanaAuth = HTTPBasicAuth(kibanaUser, kibanaPassword)

for indexPatternId in indexPatternIds:
    #print_with_time("start to delete index pattern %s" % indexPatternId)
    deleteKibanaIndexPattern(kibanaSpace, indexPatternId)