Utility Class
Introduction
util
module is located in metaparser
package util
directory along with
few other utility modules like schemaengine
and exceptions
. This module
defines a set of methods that perform common, often re-used functions to help
parser developers in manipulating the parser output data structures.
Usage example
All the methods defined in util
module are under :staticscope:`static scope <http>`
The following example shows the usage of util
functions:
# imports utility methods
# -----------------------
from genie.metaparser.util import keynames_exist, \
keynames_convert, \
reform_nestdict_from_keys
dic = {'interface': 'loopback1',
'address': {'ip': '1.1.10', 'mask': '24'}}
# validate the mandatory keys are in dict
keynames_to_check = ['interface', 'address.ip']
assert keynames_exist(dic, keynames_to_check) == None
# changing the keynames to agree with the schema
names_mapping = [('address.ip','ip_address'), ('interface','intf')]
result = keynames_convert(dic, names_mapping)
assert 'ip_address' in result['address']
assert 'intf' in result
# reforming a new dict contains only the desired keys
keys = [['address','ip_address'], ['address','mask']]
new_dict = reform_nestdict_from_keys(dic, keys)
assert 'ip_address' in new_dict['address']
assert 'mask' in new_dict['address']
assert 'intf' not in new_dict