I'm trying to write an IOS translaor for static routes. I copied dir openconfig-network-instance
translator from dummy to ios, and filled just the metadata section for now:
And I populate just the most basic config object with a single network instance. This is the code:
INFO:napalm-yang:Finding parser for openconfig-network-instance:network-instances
DEBUG:napalm-yang:Found on profile: ios, napalm_yang/mappings/ios/translators/openconfig-network-instance/network-instances.yaml
DEBUG:napalm-yang:Translating attribute: /network-instances
DEBUG:napalm-yang:Parsing attribute: /network-instances/network-instance
DEBUG:napalm-yang:Translating attribute: /network-instances/network-instance
DEBUG:napalm-yang:Translating network-instance default
DEBUG:napalm-yang:Translating attribute: /network-instances/network-instance[name='default']
DEBUG:napalm-yang:Parsing attribute: /network-instances/network-instance[name='default']/tables
DEBUG:napalm-yang:Translating attribute: /network-instances/network-instance[name='default']/tables
DEBUG:napalm-yang:Parsing attribute: /network-instances/network-instance[name='default']/tables/table
DEBUG:napalm-yang:Translating attribute: /network-instances/network-instance[name='default']/tables/table
DEBUG:napalm-yang:Parsing attribute: /network-instances/network-instance[name='default']/fdb
DEBUG:napalm-yang:Translating attribute: /network-instances/network-instance[name='default']/fdb
DEBUG:napalm-yang:Parsing attribute: /network-instances/network-instance[name='default']/fdb/mac-table
DEBUG:napalm-yang:Translating attribute: /network-instances/network-instance[name='default']/fdb/mac-table
DEBUG:napalm-yang:Parsing attribute: /network-instances/network-instance[name='default']/fdb/mac-table/entries
DEBUG:napalm-yang:Translating attribute: /network-instances/network-instance[name='default']/fdb/mac-table/entries
DEBUG:napalm-yang:Parsing attribute: /network-instances/network-instance[name='default']/fdb/mac-table/entries/entry
DEBUG:napalm-yang:Translating attribute: /network-instances/network-instance[name='default']/fdb/mac-table/entries/entry
DEBUG:napalm-yang:Parsing attribute: /network-instances/network-instance[name='default']/fdb/state
DEBUG:napalm-yang:Skipping attribute: openconfig-network-instance:fdb
DEBUG:napalm-yang:Parsing attribute: /network-instances/network-instance[name='default']/fdb/config
DEBUG:napalm-yang:Translating attribute: /network-instances/network-instance[name='default']/fdb/config
DEBUG:napalm-yang:Parsing attribute: /network-instances/network-instance[name='default']/fdb/config/mac-aging-time
DEBUG:napalm-yang:Translating attribute: /network-instances/network-instance[name='default']/fdb/config/mac-aging-time
DEBUG:napalm-yang:Parsing attribute: /network-instances/network-instance[name='default']/fdb/config/maximum-entries
DEBUG:napalm-yang:Translating attribute: /network-instances/network-instance[name='default']/fdb/config/maximum-entries
DEBUG:napalm-yang:Parsing attribute: /network-instances/network-instance[name='default']/fdb/config/mac-learning
DEBUG:napalm-yang:Translating attribute: /network-instances/network-instance[name='default']/fdb/config/mac-learning
DEBUG:napalm-yang:Parsing attribute: /network-instances/network-instance[name='default']/name
DEBUG:napalm-yang:Translating attribute: /network-instances/network-instance[name='default']/name
DEBUG:napalm-yang:Parsing attribute: /network-instances/network-instance[name='default']/afts
DEBUG:napalm-yang:Translating attribute: /network-instances/network-instance[name='default']/afts
DEBUG:napalm-yang:Parsing attribute: /network-instances/network-instance[name='default']/afts/aft
DEBUG:napalm-yang:Translating attribute: /network-instances/network-instance[name='default']/afts/aft
DEBUG:napalm-yang:Parsing attribute: /network-instances/network-instance[name='default']/interfaces
DEBUG:napalm-yang:Translating attribute: /network-instances/network-instance[name='default']/interfaces
DEBUG:napalm-yang:Parsing attribute: /network-instances/network-instance[name='default']/interfaces/interface
DEBUG:napalm-yang:Translating attribute: /network-instances/network-instance[name='default']/interfaces/interface
DEBUG:napalm-yang:Parsing attribute: /network-instances/network-instance[name='default']/mpls
DEBUG:napalm-yang:Translating attribute: /network-instances/network-instance[name='default']/mpls
DEBUG:napalm-yang:Parsing attribute: /network-instances/network-instance[name='default']/mpls/lsps
DEBUG:napalm-yang:Translating attribute: /network-instances/network-instance[name='default']/mpls/lsps
DEBUG:napalm-yang:Parsing attribute: /network-instances/network-instance[name='default']/mpls/lsps/constrained-path
DEBUG:napalm-yang:Translating attribute: /network-instances/network-instance[name='default']/mpls/lsps/constrained-path
DEBUG:napalm-yang:Parsing attribute: /network-instances/network-instance[name='default']/mpls/lsps/constrained-path/named-explicit-paths
DEBUG:napalm-yang:Translating attribute: /network-instances/network-instance[name='default']/mpls/lsps/constrained-path/named-explicit-paths
DEBUG:napalm-yang:Parsing attribute: /network-instances/network-instance[name='default']/mpls/lsps/constrained-path/named-explicit-paths/named-explicit-path
DEBUG:napalm-yang:Translating attribute: /network-instances/network-instance[name='default']/mpls/lsps/constrained-path/named-explicit-paths/named-explicit-path
DEBUG:napalm-yang:Parsing attribute: /network-instances/network-instance[name='default']/mpls/lsps/constrained-path/tunnels
DEBUG:napalm-yang:Translating attribute: /network-instances/network-instance[name='default']/mpls/lsps/constrained-path/tunnels
DEBUG:napalm-yang:Parsing attribute: /network-instances/network-instance[name='default']/mpls/lsps/constrained-path/tunnels/tunnel
DEBUG:napalm-yang:Translating attribute: /network-instances/network-instance[name='default']/mpls/lsps/constrained-path/tunnels/tunnel
DEBUG:napalm-yang:Parsing attribute: /network-instances/network-instance[name='default']/mpls/lsps/unconstrained-path
DEBUG:napalm-yang:Translating attribute: /network-instances/network-instance[name='default']/mpls/lsps/unconstrained-path
DEBUG:napalm-yang:Parsing attribute: /network-instances/network-instance[name='default']/mpls/lsps/unconstrained-path/path-setup-protocol
---------------------------------------------------------------------------
KeyError Traceback (most recent call last)
<ipython-input-9-22cfd64f337a> in <module>()
----> 1 config.translate_config(profile=['ios'])
/home/matej/Projects/napalmyang/napalm-yang/napalm_yang/base.pyc in translate_config(self, profile, merge, replace)
277 other_replace = getattr(replace, k) if replace else None
278 translator = Translator(v, profile, merge=other_merge, replace=other_replace)
--> 279 result.append(translator.translate())
280
281 return "\n".join(result)
/home/matej/Projects/napalmyang/napalm-yang/napalm_yang/translator.pyc in translate(self)
51 return ""
52 self._translate(self._yang_name, self.model, self.mapping[self._yang_name],
---> 53 self.translation, self.other)
54 return self.translator.post_processing(self)
55
/home/matej/Projects/napalmyang/napalm-yang/napalm_yang/translator.pyc in _translate(self, attribute, model, mapping, translation, other)
58
59 if model._is_container in ("container", ):
---> 60 self._translate_container(attribute, model, mapping, translation, other)
61 elif model._yang_type in ("list", ):
62 self._translate_list(attribute, model, mapping, translation, other)
/home/matej/Projects/napalmyang/napalm-yang/napalm_yang/translator.pyc in _translate_container(self, attribute, model, mapping, translation, other)
92 translator.translate()
93 else:
---> 94 self._translate(v._yang_name, v, mapping[v._yang_name], et, other_attr)
95
96 def _translate_list(self, attribute, model, mapping, translation, other):
/home/matej/Projects/napalmyang/napalm-yang/napalm_yang/translator.pyc in _translate(self, attribute, model, mapping, translation, other)
60 self._translate_container(attribute, model, mapping, translation, other)
61 elif model._yang_type in ("list", ):
---> 62 self._translate_list(attribute, model, mapping, translation, other)
63 else:
64 self._translate_leaf(attribute, model, mapping, translation, other)
/home/matej/Projects/napalmyang/napalm-yang/napalm_yang/translator.pyc in _translate_list(self, attribute, model, mapping, translation, other)
132 self.bookmarks["parent"] = et
133
--> 134 self._translate(attribute, element, mapping, et, other_element)
135
136 # Restore state
/home/matej/Projects/napalmyang/napalm-yang/napalm_yang/translator.pyc in _translate(self, attribute, model, mapping, translation, other)
58
59 if model._is_container in ("container", ):
---> 60 self._translate_container(attribute, model, mapping, translation, other)
61 elif model._yang_type in ("list", ):
62 self._translate_list(attribute, model, mapping, translation, other)
/home/matej/Projects/napalmyang/napalm-yang/napalm_yang/translator.pyc in _translate_container(self, attribute, model, mapping, translation, other)
92 translator.translate()
93 else:
---> 94 self._translate(v._yang_name, v, mapping[v._yang_name], et, other_attr)
95
96 def _translate_list(self, attribute, model, mapping, translation, other):
/home/matej/Projects/napalmyang/napalm-yang/napalm_yang/translator.pyc in _translate(self, attribute, model, mapping, translation, other)
58
59 if model._is_container in ("container", ):
---> 60 self._translate_container(attribute, model, mapping, translation, other)
61 elif model._yang_type in ("list", ):
62 self._translate_list(attribute, model, mapping, translation, other)
/home/matej/Projects/napalmyang/napalm-yang/napalm_yang/translator.pyc in _translate_container(self, attribute, model, mapping, translation, other)
92 translator.translate()
93 else:
---> 94 self._translate(v._yang_name, v, mapping[v._yang_name], et, other_attr)
95
96 def _translate_list(self, attribute, model, mapping, translation, other):
/home/matej/Projects/napalmyang/napalm-yang/napalm_yang/translator.pyc in _translate(self, attribute, model, mapping, translation, other)
58
59 if model._is_container in ("container", ):
---> 60 self._translate_container(attribute, model, mapping, translation, other)
61 elif model._yang_type in ("list", ):
62 self._translate_list(attribute, model, mapping, translation, other)
/home/matej/Projects/napalmyang/napalm-yang/napalm_yang/translator.pyc in _translate_container(self, attribute, model, mapping, translation, other)
92 translator.translate()
93 else:
---> 94 self._translate(v._yang_name, v, mapping[v._yang_name], et, other_attr)
95
96 def _translate_list(self, attribute, model, mapping, translation, other):
/home/matej/Projects/napalmyang/napalm-yang/napalm_yang/translator.pyc in _translate(self, attribute, model, mapping, translation, other)
58
59 if model._is_container in ("container", ):
---> 60 self._translate_container(attribute, model, mapping, translation, other)
61 elif model._yang_type in ("list", ):
62 self._translate_list(attribute, model, mapping, translation, other)
/home/matej/Projects/napalmyang/napalm-yang/napalm_yang/translator.pyc in _translate_container(self, attribute, model, mapping, translation, other)
92 translator.translate()
93 else:
---> 94 self._translate(v._yang_name, v, mapping[v._yang_name], et, other_attr)
95
96 def _translate_list(self, attribute, model, mapping, translation, other):
KeyError: 'path-setup-protocol'