-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathjson-compare-engine.py
62 lines (46 loc) · 1.65 KB
/
json-compare-engine.py
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
import json
from pprint import pprint
import sys
import datetime
import ConfigParser
import requests
cluster_host = sys.argv[1]
cluster_port = sys.argv[2]
json_loads_1 = sys.argv[3]
json_loads_2 = sys.argv[4]
with open(json_loads_1) as data_file:
data1 = json.load(data_file)
#pprint(data1)
with open(json_loads_2) as data_file:
data2 = json.load(data_file)
#pprint(data2)
def ordered(obj):
if isinstance(obj, dict):
return sorted((k, ordered(v)) for k, v in obj.items())
if isinstance(obj, list):
return sorted(ordered(x) for x in obj)
else:
return obj
result = ordered(data1) == ordered(data2)
print "result was: " + str(result)
if result == False:
pprint(data1)
pprint(data2)
pprint(cluster_host+":"+cluster_port)
payload = {}
payload['cluster'] = cluster_host+":"+cluster_port
payload['index_name_1'] = json_loads_1
payload['index_name_2'] = json_loads_2
payload['index_data_1'] = data1
payload['index_data_2'] = data2
payload['issue_type'] = 'discrepancy'
payload['issue_message'] = 'discrepancy found between indices: ' + json_loads_1 + ',' + json_loads_2 + ''
payload['@timestamp'] = datetime.datetime.utcnow().strftime('%Y-%m-%dT%H:%M:%SZ')
json_data = json.dumps(payload)
print str(json_data)
Config = ConfigParser.ConfigParser()
Config.read("json-compare-engine.props")
http_proto = Config.get('HTTPOutput', 'proto')
http_host = Config.get('HTTPOutput', 'host')
http_port = Config.get('HTTPOutput', 'port')
r = requests.post(http_proto + '://' + http_host + ':' + http_port, data=json.dumps(payload))