-
Notifications
You must be signed in to change notification settings - Fork 37
Description
Running into issues with the "genie learn isis" command when configurations deviate from what the parser expects to process.
First, when using ip unnumbered interfaces, the parser looks for the key levels which doesn't exist on an unnumbered interface (see below)
Issue while parsing: <class 'genie.libs.parser.nxos.show_isis.ShowIsisInterface'>
Traceback (most recent call last):
File "src/genie/cli/commands/learn.py", line 365, in genie.cli.commands.learn.LearnCommand._retrieve_ops
File "/Users/mleuschn/Builds/system_venv/venv/lib/python3.9/site-packages/genie/libs/ops/isis/nxos/isis.py", line 397, in learn
self.make()
File "/Users/mleuschn/Builds/system_venv/venv/lib/python3.9/site-packages/genie/ops/base/base.py", line 103, in make
self.maker.make(*args, **kwargs)
File "src/genie/ops/base/maker.py", line 315, in genie.ops.base.maker.Maker.make
File "src/genie/ops/base/maker.py", line 427, in genie.ops.base.maker.Maker._call_parser
File "src/genie/metaparser/_metaparser.py", line 342, in genie.metaparser._metaparser.MetaParser.parse
File "src/genie/metaparser/_metaparser.py", line 322, in genie.metaparser._metaparser.MetaParser.parse
File "src/genie/metaparser/util/schemaengine.py", line 419, in genie.metaparser.util.schemaengine.Schema.validate
genie.metaparser.util.exceptions.SchemaMissingKeyError: Missing keys: [['instance', '100', 'vrf', 'default', 'interfaces', 'Ethernet1/1', 'levels'], ['instance', '100', 'vrf', 'default', 'interfaces', 'Ethernet1/2', 'levels']]
As a result, the parser fails to collect data and stops processing. I switched levels and topologies in the parser to be Optional() values showIsisInterfaceSchema which "appears" to fix the issue but I'm not sure if this potentially breaks other things within genie.
Second, there appears to be an issue across the board with genie learn isis when the default vrf is not used. If a user deploys a non-default vrf (say vrf blue) across the system and associates all interfaces with that vrf, genie learn still expects to see interfaces, or a system/area id configured in the default vrf. As a result, we see failures because no interfaces are associated with the default vrf, only vrf blue. Without an interface configured in the default vrf, ShowIsisInterface parser fails. If you put an interface in the default vrf, then showisisadjacency fails. While this is expected in a configuration without a default vrf, in a situation where default is not configured, genie should ignore and parse the other configured vrfs.
Issue while parsing: <class 'genie.libs.parser.nxos.show_isis.ShowIsisInterface'>
Traceback (most recent call last):
File "src/genie/cli/commands/learn.py", line 365, in genie.cli.commands.learn.LearnCommand._retrieve_ops
File "/Users/mleuschn/Builds/system_venv/venv/lib/python3.9/site-packages/genie/libs/ops/isis/nxos/isis.py", line 397, in learn
self.make()
File "/Users/mleuschn/Builds/system_venv/venv/lib/python3.9/site-packages/genie/ops/base/base.py", line 103, in make
self.maker.make(*args, **kwargs)
File "src/genie/ops/base/maker.py", line 315, in genie.ops.base.maker.Maker.make
File "src/genie/ops/base/maker.py", line 427, in genie.ops.base.maker.Maker._call_parser
File "src/genie/metaparser/_metaparser.py", line 342, in genie.metaparser._metaparser.MetaParser.parse
File "src/genie/metaparser/_metaparser.py", line 322, in genie.metaparser._metaparser.MetaParser.parse
File "src/genie/metaparser/util/schemaengine.py", line 419, in genie.metaparser.util.schemaengine.Schema.validate
genie.metaparser.util.exceptions.SchemaMissingKeyError: Missing keys: [['instance', '100', 'vrf', 'default', 'interfaces']]
Issue while parsing: <class 'genie.libs.parser.nxos.show_isis.ShowIsisAdjacency'>
Traceback (most recent call last):
File "src/genie/cli/commands/learn.py", line 365, in genie.cli.commands.learn.LearnCommand._retrieve_ops
File "/Users/mleuschn/Builds/system_venv/venv/lib/python3.9/site-packages/genie/libs/ops/isis/nxos/isis.py", line 397, in learn
self.make()
File "/Users/mleuschn/Builds/system_venv/venv/lib/python3.9/site-packages/genie/ops/base/base.py", line 103, in make
self.maker.make(*args, **kwargs)
File "src/genie/ops/base/maker.py", line 315, in genie.ops.base.maker.Maker.make
File "src/genie/ops/base/maker.py", line 427, in genie.ops.base.maker.Maker._call_parser
File "src/genie/metaparser/_metaparser.py", line 342, in genie.metaparser._metaparser.MetaParser.parse
File "src/genie/metaparser/_metaparser.py", line 322, in genie.metaparser._metaparser.MetaParser.parse
File "src/genie/metaparser/util/schemaengine.py", line 419, in genie.metaparser.util.schemaengine.Schema.validate
genie.metaparser.util.exceptions.SchemaMissingKeyError: Missing keys: [['instance', '100', 'vrf', 'default', 'interfaces']]