116 lines
2.9 KiB
Text
116 lines
2.9 KiB
Text
|
#!/usr/bin/env python2
|
||
|
#
|
||
|
# Copyright 2016 IBM Corp.
|
||
|
#
|
||
|
# Licensed under the Apache License, Version 2.0 (the "License");
|
||
|
# you may not use this file except in compliance with the License.
|
||
|
# You may obtain a copy of the License at
|
||
|
#
|
||
|
# http://www.apache.org/licenses/LICENSE-2.0
|
||
|
#
|
||
|
# Unless required by applicable law or agreed to in writing, software
|
||
|
# distributed under the License is distributed on an "AS IS" BASIS,
|
||
|
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
|
||
|
# implied.
|
||
|
# See the License for the specific language governing permissions and
|
||
|
# limitations under the License.
|
||
|
|
||
|
import json
|
||
|
import sys
|
||
|
|
||
|
json_params = {
|
||
|
'indent': 1,
|
||
|
'sort_keys': True,
|
||
|
'separators': (',', ': '),
|
||
|
}
|
||
|
|
||
|
def get_input():
|
||
|
while True:
|
||
|
resp = raw_input("Update pattern to match both? (y/n): ")
|
||
|
if resp in [ "y", "Y" ]:
|
||
|
break
|
||
|
elif resp in [ "n", "N" ]:
|
||
|
print "New entry will be added."
|
||
|
return False
|
||
|
else:
|
||
|
print "???"
|
||
|
continue
|
||
|
|
||
|
return raw_input("New pattern: ")
|
||
|
|
||
|
def main():
|
||
|
if len(sys.argv) != 4:
|
||
|
print("USAGE: merge.py old_olog new_olog output")
|
||
|
sys.exit(-1)
|
||
|
|
||
|
old_olog = sys.argv[1]
|
||
|
cur_olog = sys.argv[2]
|
||
|
out_olog = sys.argv[3]
|
||
|
|
||
|
try:
|
||
|
old_file = open(old_olog, "r")
|
||
|
old_json = json.load(old_file)
|
||
|
old_file.close()
|
||
|
except Exception as e:
|
||
|
print("Failed to parse old olog: %s" % e)
|
||
|
sys.exit(-1)
|
||
|
|
||
|
try:
|
||
|
cur_file = open(cur_olog, "r")
|
||
|
cur_json = json.load(cur_file)
|
||
|
cur_file.close()
|
||
|
except Exception as e:
|
||
|
print("Failed to parse new olog: %s" % e)
|
||
|
sys.exit(-1)
|
||
|
|
||
|
try:
|
||
|
out_file = open(out_olog, "w")
|
||
|
except Exception as e:
|
||
|
print("Failed to open output file: %s" % e)
|
||
|
sys.exit(-1)
|
||
|
|
||
|
cur_patterns = cur_json["olog_error_warning_patterns"]
|
||
|
old_patterns = old_json["olog_error_warning_patterns"]
|
||
|
|
||
|
# Match current patterns to old definitions, detect when pattern is
|
||
|
# different.
|
||
|
|
||
|
for cp in cur_patterns:
|
||
|
for op in old_patterns:
|
||
|
if cp["label"] != op["label"]:
|
||
|
continue
|
||
|
|
||
|
if cp["pattern"] != op["pattern"]:
|
||
|
print "Pattern update detected."
|
||
|
print "Label: %s" % cp["label"]
|
||
|
print ""
|
||
|
print "Cur Pattern: %s" % cp["pattern"]
|
||
|
print "New Pattern: %s" % op["pattern"]
|
||
|
print ""
|
||
|
|
||
|
user_pattern = get_input()
|
||
|
|
||
|
if user_pattern == False:
|
||
|
continue
|
||
|
|
||
|
cp["pattern"] = user_pattern
|
||
|
|
||
|
op["found"] = True
|
||
|
break
|
||
|
|
||
|
# Take any old patterns that are no longer current and move them over
|
||
|
|
||
|
for op in old_patterns:
|
||
|
if "found" in op:
|
||
|
continue
|
||
|
|
||
|
cur_patterns.append(op)
|
||
|
|
||
|
json.dump(cur_json, out_file, **json_params)
|
||
|
out_file.close()
|
||
|
|
||
|
print("OK")
|
||
|
|
||
|
if __name__ == "__main__":
|
||
|
main()
|