diff options
author | Marri Devender Rao <devenrao@in.ibm.com> | 2017-05-14 08:30:40 -0500 |
---|---|---|
committer | Patrick Williams <patrick@stwcx.xyz> | 2017-06-03 13:07:31 +0000 |
commit | df7cb5c008a98cfee81e7a01e97a81fba86213f0 (patch) | |
tree | dac8207135b68298514c5f6b01095e794b2300bb | |
parent | 1eb58922d3ca4fa61916accfd20fe0c28ac06430 (diff) | |
download | phosphor-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>
-rwxr-xr-x | tools/elog-gen.py | 86 |
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 |