summaryrefslogtreecommitdiffstats
path: root/tools
diff options
context:
space:
mode:
authorMarri Devender Rao <devenrao@in.ibm.com>2017-05-14 08:30:40 -0500
committerPatrick Williams <patrick@stwcx.xyz>2017-06-03 13:07:31 +0000
commitdf7cb5c008a98cfee81e7a01e97a81fba86213f0 (patch)
treedac8207135b68298514c5f6b01095e794b2300bb /tools
parent1eb58922d3ca4fa61916accfd20fe0c28ac06430 (diff)
downloadphosphor-logging-df7cb5c008a98cfee81e7a01e97a81fba86213f0.tar.gz
phosphor-logging-df7cb5c008a98cfee81e7a01e97a81fba86213f0.zip
Allow parsing of error yaml files without metadata yaml file
At present parser throws error if metadata yaml file is not found, modified to not to return error. Restruture the code to loop through the entries in the error yaml file rather than through the meta yaml file. Change-Id: Iaae61690201aeffd8d9caa41515b29b7cc0b59a2 Signed-off-by: Marri Devender Rao <devenrao@in.ibm.com>
Diffstat (limited to 'tools')
-rwxr-xr-xtools/elog-gen.py86
1 files changed, 49 insertions, 37 deletions
diff --git a/tools/elog-gen.py b/tools/elog-gen.py
index 4ab3690..26be78f 100755
--- a/tools/elog-gen.py
+++ b/tools/elog-gen.py
@@ -127,19 +127,16 @@ def gen_elog_hpp(i_yaml_dir, i_test_dir, i_output_hpp,
for error_yaml in error_yamls:
# Verify the error yaml file
if (not (os.path.isfile(error_yaml))):
- print("Can not find input yaml file " + error_yaml)
+ print("Cannot find input yaml file " + error_yaml)
exit(1)
# Verify the metadata yaml file
meta_yaml = get_meta_yaml_file(error_yaml)
- if (not (os.path.isfile(meta_yaml))):
- print("Can not find meta yaml file " + meta_yaml)
- exit(1)
# Verify the input mako file
template_path = "/".join((i_template_dir, i_elog_mako))
if (not (os.path.isfile(template_path))):
- print("Can not find input template file " + template_path)
+ print("Cannot find input template file " + template_path)
exit(1)
get_elog_data(error_yaml,
@@ -175,7 +172,6 @@ def gen_elog_hpp(i_yaml_dir, i_test_dir, i_output_hpp,
metadata_process=metadata_process))
f.close()
-
def get_elog_data(i_elog_yaml,
i_elog_meta_yaml,
i_namespace,
@@ -184,6 +180,8 @@ def get_elog_data(i_elog_yaml,
Parse the error and metadata yaml files in order to pull out
error metadata.
+ Use default values if metadata yaml file is not found.
+
Description of arguments:
i_elog_yaml error yaml file
i_elog_meta_yaml metadata yaml file
@@ -193,42 +191,56 @@ def get_elog_data(i_elog_yaml,
(errors, error_msg, error_lvl, meta,
meta_data, parents, metadata_process) = o_elog_data
ifile = yaml.safe_load(open(i_elog_yaml))
- mfile = yaml.safe_load(open(i_elog_meta_yaml))
- for i in mfile:
- match = None
- # Find the corresponding meta data for this entry
- for j in ifile:
- if j['name'] == i['name']:
- match = j
- break
- if (match is None):
- print("Error - Did not find meta data for " + i['name'])
+
+ #for all the errors in error yaml file
+ for error in ifile:
+ if 'name' not in error:
+ print "Error - Did not find name in entry %s in file %s " % (
+ str(error), i_elog_yaml)
exit(1)
- # Grab the main error and it's info
- fullname = i_namespace.replace('/', '.') + ('.') + i['name']
+ fullname = i_namespace.replace('/', '.') + ('.') + error['name']
errors.append(fullname)
- parent = None
- if('inherits' in i):
- # Get 0th inherited error (current support - single inheritance)
- parent = i['inherits'][0]
- parents[fullname] = parent
- error_msg[fullname] = match['description'].strip()
- try:
- error_lvl[fullname] = i['level']
- except:
- print ("No level found for: " + i['name'] + ", using INFO")
- error_lvl[fullname] = "INFO"
- tmp_meta = []
- # grab all the meta data fields and info
- if('meta' in i):
- for j in i['meta']:
- str_short = j['str'].split('=')[0]
+
+ if 'description' in error:
+ error_msg[fullname] = error['description'].strip()
+
+ #set default values
+ error_lvl[fullname] = "ERR"
+ parents[fullname] = None
+
+ #check if meta data yaml file is found
+ if not os.path.isfile(i_elog_meta_yaml):
+ continue
+ mfile = yaml.safe_load(open(i_elog_meta_yaml))
+
+ # Find the meta data entry
+ match = None
+ for meta_entry in mfile:
+ if meta_entry['name'] == error['name']:
+ match = meta_entry
+ break
+
+ if match is None:
+ print "Error - Did not find name in" + i_elog_meta_yaml
+ continue
+
+ error_lvl[fullname] = match.get('level', 'ERR')
+
+ # Get 0th inherited error (current support - single inheritance)
+ if 'inherits' in match:
+ parents[fullname] = match['inherits'][0]
+
+ if 'meta' in match:
+ tmp_meta = []
+ # grab all the meta data fields and info
+ for i in match['meta']:
+ str_short = i['str'].split('=')[0]
tmp_meta.append(str_short)
meta_data[str_short] = {}
- meta_data[str_short]['str'] = j['str']
+ meta_data[str_short]['str'] = i['str']
meta_data[str_short]['str_short'] = str_short
- meta_data[str_short]['type'] = get_cpp_type(j['type'])
- if(('process' in j) and (True == j['process'])):
+ meta_data[str_short]['type'] = get_cpp_type(i['type'])
+ if ('process' in i) and (True == i['process']):
metadata_process[str_short] = fullname + "." + str_short
meta[fullname] = tmp_meta
OpenPOWER on IntegriCloud