tools: ynl: add more info to KeyErrors on missing attrs
When developing specs its useful to know which attr space YNL was trying to find an attribute in on key error. Instead of printing: KeyError: 0 add info about the space: Exception: Space 'vport' has no attribute with value '0' Reviewed-by: Donald Hunter <donald.hunter@gmail.com> Link: https://lore.kernel.org/r/20230814205627.2914583-4-kuba@kernel.org Signed-off-by: Jakub Kicinski <kuba@kernel.org>
This commit is contained in:
parent
ded67d9081
commit
7582113c69
|
@ -395,7 +395,10 @@ class YnlFamily(SpecFamily):
|
|||
self.family.genl_family['mcast'][mcast_name])
|
||||
|
||||
def _add_attr(self, space, name, value):
|
||||
try:
|
||||
attr = self.attr_sets[space][name]
|
||||
except KeyError:
|
||||
raise Exception(f"Space '{space}' has no attribute '{name}'")
|
||||
nl_type = attr.value
|
||||
if attr["type"] == 'nest':
|
||||
nl_type |= Netlink.NLA_F_NESTED
|
||||
|
@ -450,7 +453,10 @@ class YnlFamily(SpecFamily):
|
|||
attr_space = self.attr_sets[space]
|
||||
rsp = dict()
|
||||
for attr in attrs:
|
||||
try:
|
||||
attr_spec = attr_space.attrs_by_val[attr.type]
|
||||
except KeyError:
|
||||
raise Exception(f"Space '{space}' has no attribute with value '{attr.type}'")
|
||||
if attr_spec["type"] == 'nest':
|
||||
subdict = self._decode(NlAttrs(attr.raw), attr_spec['nested-attributes'])
|
||||
decoded = subdict
|
||||
|
@ -479,7 +485,10 @@ class YnlFamily(SpecFamily):
|
|||
|
||||
def _decode_extack_path(self, attrs, attr_set, offset, target):
|
||||
for attr in attrs:
|
||||
try:
|
||||
attr_spec = attr_set.attrs_by_val[attr.type]
|
||||
except KeyError:
|
||||
raise Exception(f"Space '{attr_set.name}' has no attribute with value '{attr.type}'")
|
||||
if offset > target:
|
||||
break
|
||||
if offset == target:
|
||||
|
|
Loading…
Reference in New Issue