Skip to content

Commit 672e4a7

Browse files
Dav-CsusanhooksDavid Catesjeffkalascetron
authored
Network ssot integration (#177)
* adding NI * bump version * black, isort, pydocstyle * black, flake8, pydocstyle * pylint * update ssot network importer * update network importer ssot * update network importer * update command getter * fix filtering on NI job * add vlan model and adapter load method * add vlans and interface lag to sync * updates for NI * updated formatting, added trunked vlans * add call to command getter * update command getter call * handle failed result * update formatting * formatting * black * simplify if statment * formatting * updates * first work new parser with jdiff * update structures * please help * fix result dict on fail * cleanup * update logging and bump version * remove logging * update lock file * black * getting everything reformatted still needs cleanup * new framework for parsing outputs * fix unused import * get rest working * add data type check for device on boarding network adapter * fix format of yaml files * new post processor feature from yaml , clean ups * add a more advanced jdiff jpath query to ios for ni interfaces * updates for parsing * bump version * update network importer * add platform none check * fix formatting * add conditional for no platform * add conditional for no platform * add conditional for no platform * add unsupported check * add readtimeout * add failed task UI logging * add junos support to do * add logging for failed reason * add junos support to do * update junos, add json load to linterfaces * update junos, add json load to linterfaces * update ios to use tojson filter * update ios to use tojson filter * formatting, update function name and doc strings * use j2 sandbox and nb core render function * poetry lock and black * black * fix juniper_junos.yml * juniper_junos.yml formatting * update ssot network adapter, models and mock data * ios NI initial working * fix do for junos * add csv support wip * update csv import feature * update csv support * update csv support * fix dup ip address extraction * fix mgmt_interface from list to string * update csv support * add orm caching method to onboarding adapter * update csv support * remove print statement * send interfaces in ios as json * update csv support * bump version * update NI * remove tag filter option * remove tag filter * decouple nornir play from job to remove enqueue job option * clean up via black * update csv import logging * fix bug in _process_csv_data * remove command getter job * update NI * updates for description and enabled * update mock data * formatting * black * pylint * update logging message * flake8 * update CSV support * update lock file * update lock and toml files * update logging around existing devies * change command mapper formatting and DO for junos * fix junos * remove prefix_length from OnboardingDeviceModel * add data check for fields returned by devices * enhance junos mgmt int and mask captures * enhance junos mgmt int and mask captures * fixes for most jnos * rework yaml format and processor formatter * fixed nxos serial * improve logging and calls to secrets providers * update onboarding adapter * set defaut platform value to None when loading devices in onboarding adapter * yamllint, ruff * add more performant lookup to mgmt interface cisco ios * bump version, fix bug with DO adapter * update DO adapters, models and job * bump version * formatting changes * changed ip address to list * fix yamllint, pylint and juniper yaml jpaths * updates to NI formatting * fix junos mgmt intrface post processor * fix junos * Update juniper_junos.yml * Update juniper_junos.yml * update ni add nxos * update vlans * update NI adapters and models, add untagged vlan model * bump * linting * update lock file * updates for multiple devices * update mac address conversion * add cache for primary ips to NI adapter * update sync complete * update sync complete * update sync complete * add sync complete doc string * updated interface mapping * bump * black * pylint * add error handling * bump version * black * yamlint * updates for vrf * revamps and cleanups * update list conversion * more refactors and cleanups * fix custom filters development config * remove jinja2 fitler registration in favor of native support with decorator * linters, formatters, stuff * fix platform parsing info * fix return indent level * fix return indent level * add default dict * more cleanups remove transform function * more refactors and few cleanups * add vrf to ssot sync, fix vlan bug, update logging * remove unnecessary logging * updates for VRF support * removed exception for vrf without rd * first DO for WLC * added 802.1q support for ios * fix / add needed info for wlc * updates for vlans ios * adjust vrf adapter to load an RD of "None" if not present * update vrf model * update vrf model for NI * add schema and some more new filters and cleanups * update for handling * update * vlans add * first pass at adding docs for new ssot features * more doc adds * more doc adds * vlans for nxos working * linting * fix example dict keys * remove RD from vrf sync * update mock data * removed rd from vrf * add wlc mapper and support for do * update jinja_filters.py, lock and bump version * fix link in docs * update mkdocs * removed extra rd config * cleanup * Jkala prep beta (#174) * rename jobs throughout codebase * rename jobs throughout docs * few more updates to original definition * more rename changes with black * bump to beta version * fix lock file inconsistances * initial round of fixes for mapping etc. * change use_textfsm key to parser and update interworks phase1 * change use_textfsm key to parser and update interworks phase2 * interface mapping comments * fix dedup function to work with dict or list of commands * fix support of dict or list def of commands * use mapping netmiko specifically * mock data * add platform to NI device filters * updates to vlan and vrf * update dependencies, pre-merge linting, black * update lock * update nautobot version in github ci --------- Co-authored-by: Susan Hooks <susan.hooks@networktocode.com> Co-authored-by: David Cates <david.cates@networktocode.com> Co-authored-by: Jeff Kala <jeff.l.kala@gmail.com> Co-authored-by: Stephen Corry <stephen.corry@networktocode.com> Co-authored-by: Susan Hooks <51679702+susanhooks@users.noreply.github.com> Co-authored-by: Jeff Kala <48843785+jeffkala@users.noreply.github.com> Co-authored-by: Susan Hooks <susan.hooks@chevron.com>
1 parent 9059e8a commit 672e4a7

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

43 files changed

+2699
-677
lines changed

.github/workflows/ci.yml

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -106,7 +106,7 @@ jobs:
106106
fail-fast: true
107107
matrix:
108108
python-version: ["3.11"]
109-
nautobot-version: ["2.1.1"]
109+
nautobot-version: ["2.2.3"]
110110
env:
111111
INVOKE_NAUTOBOT_DEVICE_ONBOARDING_PYTHON_VER: "${{ matrix.python-version }}"
112112
INVOKE_NAUTOBOT_DEVICE_ONBOARDING_NAUTOBOT_VER: "${{ matrix.nautobot-version }}"
@@ -149,7 +149,7 @@ jobs:
149149
fail-fast: true
150150
matrix:
151151
python-version: ["3.11"]
152-
nautobot-version: ["2.1.1"]
152+
nautobot-version: ["2.2.3"]
153153
env:
154154
INVOKE_NAUTOBOT_DEVICE_ONBOARDING_PYTHON_VER: "${{ matrix.python-version }}"
155155
INVOKE_NAUTOBOT_DEVICE_ONBOARDING_NAUTOBOT_VER: "${{ matrix.nautobot-version }}"
@@ -192,7 +192,7 @@ jobs:
192192
include:
193193
- python-version: "3.11"
194194
db-backend: "postgresql"
195-
nautobot-version: "2.1.1"
195+
nautobot-version: "2.2.3"
196196
# - python-version: "3.11"
197197
# db-backend: "mysql"
198198
# nautobot-version: "stable"

development/Dockerfile

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -6,8 +6,8 @@
66
# -------------------------------------------------------------------------------------
77
# !!! USE CAUTION WHEN MODIFYING LINES BELOW
88

9-
# Accepts a desired Nautobot version as build argument, default to 2.0.3
10-
ARG NAUTOBOT_VER="2.0.3"
9+
# Accepts a desired Nautobot version as build argument, default to 2.2.3
10+
ARG NAUTOBOT_VER="2.2.3"
1111

1212
# Accepts a desired Python version as build argument, default to 3.11
1313
ARG PYTHON_VER="3.11"

docs/admin/install.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -74,7 +74,7 @@ Then restart (if necessary) the Nautobot services which may include:
7474
sudo systemctl restart nautobot nautobot-worker nautobot-scheduler
7575
```
7676

77-
## App Configuration
77+
## App Configuration (Original)
7878

7979
Although the app can run without providing any settings, the app behavior can be controlled with the following list of settings defined in `nautobot_config.py`:
8080

docs/dev/arch_decision.md

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,3 @@
1+
# Architecture Decision Records
2+
3+
The intention is to document deviations from a standard Model View Controller (MVC) design. And other general Application decisions.

docs/dev/extending.md

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -2,16 +2,16 @@
22

33
Extending the application is welcome, however it is best to open an issue first, to ensure that a PR would be accepted and makes sense in terms of features and design.
44

5-
## Customizing Onboarding Behavior With Extensions
5+
## Customizing Onboarding Behavior With Extensions (Original)
66

77
This plugin provides methods to customize onboarding behavior. By creating onboarding extensions, it is possible to onboard switch stacks, HA pairs and perform other customizations.
88

99
Please see the dedicated FAQ for [device onboarding extensions](onboarding_extensions.md).
1010

1111
!!! warn
12-
This is the legacy onboarding extensions. The next section covers how to extend the new framework.
12+
This is the original onboarding extensions. The next section covers how to extend the new framework.
1313

14-
## Extending SSoT jobs (Sync Devices, and Sync Network Data)
14+
## Extending SSoT jobs (Sync Devices From Network, and Sync Network Data From Network)
1515

1616
Extending the platform support for the SSoT specific jobs should be accomplished with adding a yaml file that defines commands, jdiff jmespaths, and post_processors. A PR into this library is welcomed, but this app exposes the Nautobot core datasource capabilities to be able to load in overrides from a Git repository.
1717

docs/dev/onboarding_extensions.md

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
1-
# Onboarding Extensions
1+
# Onboarding Extensions (Original)
22

33
!!! warn
4-
This is the legacy onboarding extensions.
4+
This is the original onboarding extensions.
55

66
## What are onboarding extensions?
77

docs/user/app_detailed_design.md

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -10,7 +10,7 @@ This page will describe the newer SSoT jobs that this App exposes and how they w
1010
- [Jdiff](https://jdiff.readthedocs.io/en/latest/usage/#extract_data_from_json) - Used to simplify parsing required data fields out of command outputs returned from command parser libraries like textFSM. Specifically `extract_data_from_json` method.
1111
- Parsers - Initially NTC Templates via textFSM, but future support for PyATS, TTP, etc. is expected in the future.
1212

13-
## How the SSoT **Sync Devices** Job Works
13+
## How the SSoT **Sync Devices From Network** Job Works
1414

1515
1. The job is executed with inputs selected.
1616
- List of comma seperated IP/DNS names is provided.
@@ -28,7 +28,7 @@ This page will describe the newer SSoT jobs that this App exposes and how they w
2828
- Next, the JSON result from the show command after the parser executes (E.g. textfsm), gets run through the jdiff function `extract_data_from_json()` with the data and the `jpath` from the YAML file definition.
2929
- Finally, an optional `post_processor` jinja2 capable execution can further transform the data for that command before passing it to finish the SSoT syncronizaton.
3030

31-
## How the SSoT **Sync Network Data** Job Works
31+
## How the SSoT **Sync Network Data From Network** Job Works
3232

3333
1. The job is executed with inputs selected.
3434
- One or multiple device selection.

docs/user/app_getting_started.md

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,7 @@ To install the App, please follow the instructions detailed in the [Installation
88

99
## First steps with the App
1010

11-
This App exposes a legacy device onboarding job, as well as two new SSoT based jobs that are considered the future of the App.
11+
This App exposes an original device onboarding job, as well as two new SSoT based jobs that are considered the future of the App.
1212

1313
### Prerequisites
1414

@@ -28,7 +28,7 @@ Locations are the only other Nautobot prerequisite for the plugin to onboard a d
2828

2929
### Onboarding a Device
3030

31-
Navigate to the Device Onboarding Job: Jobs > Perform Device Onboarding (Legacy).
31+
Navigate to the Device Onboarding Job: Jobs > Perform Device Onboarding (original).
3232

3333
or
3434

docs/user/app_overview.md

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -9,10 +9,10 @@ This [Nautobot](https://github.com/nautobot/nautobot) App allows to easily onboa
99

1010
## Description/Overview
1111

12-
### Legacy Implementation
12+
### Original Implementation
1313

1414
!!! info
15-
The legacy job and extensions pattern will remain a part of this App for the near future, this will allow custom extensions to continue working without causes issues to users that have taken the time and understand the legacy framework. The newer SSoT implementation will be discussed in the next section.
15+
The original job and extensions pattern will remain a part of this App for the near future, this will allow custom extensions to continue working without causes issues to users that have taken the time and understand the original framework. The newer SSoT implementation will be discussed in the next section.
1616

1717
The `nautobot-device-onboarding` app uses the [netmiko](https://github.com/ktbyers/netmiko) and [NAPALM](https://napalm.readthedocs.io/en/latest/) libraries to simplify the onboarding process of a new device into Nautobot down to, in many cases, an *IP Address* and a *Location*. In some cases, the user may also have to specify a specific *Device Platform* and *Device Port*.
1818

@@ -52,19 +52,19 @@ The new implementation of device onboarding in this app is utilizing the SSoT fr
5252
- Remove the Batfish dependency.
5353
- Re-use backend plugins and libraries such as `nautobot-app-nornir` to provide the a similar feeling to other plugins like `nautobot-app-golden-config`.
5454
- Utilize SSoT framework and the new `contrib` functionality to speed up development of new features.
55-
- By collapsing
55+
- By collapsing:
5656

5757
Expose two new SSoT based Nautobot jobs to perform the syncing of data.
5858

59-
1. `Sync Device SSoT Job` - Takes mininum inputs nearly identical to the legacy job (IP, Locaiton, SecretGroup), and create a device with bare minium information to be able to manage a device. This job syncs data from the network itself and creates a device with the follow attributes.
59+
1. `Sync Devices From Network` - Takes mininum inputs nearly identical to the original job (IP, Locaiton, SecretGroup), and create a device with bare minium information to be able to manage a device. This job syncs data from the network itself and creates a device with the follow attributes.
6060
- Hostname
6161
- Serial Number
6262
- Device Type
6363
- Platform
6464
- Management Interface
6565
- Management IP address (creates a prefix if one doesn't exist for the IP discovered.)
6666

67-
2. `Sync Network Data SSoT Job` - From a provided list of existing Nautobot device objects, sync in additional metadata from a network device to enhance the available data from the network in Nautobot.
67+
2. `Sync Network Data From Network` - From a provided list of existing Nautobot device objects, sync in additional metadata from a network device to enhance the available data from the network in Nautobot.
6868
- All interfaces on the device with plus the attributes below:
6969
- Interface Name
7070
- MTU

docs/user/app_yaml_overrides.md

Lines changed: 30 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,7 @@ One element of the new SSoT based jobs this app exposes; is the attempt to creat
55
## File Format
66
There are only a few components to the file and they're described below:
77

8-
- `ssot job name` - Name of the job to define the commands and metadata needed for that job.
8+
- `ssot job name` - Name of the job to define the commands and metadata needed for that job. (choices: `sync_devices` or `sync_network_data`)
99
- `root key data name` - Is fully defined in the schema definition.
1010
- `commands` - List of commands to execute in order to get the required data.
1111
- `command` - Actual `show` command to execute.
@@ -17,7 +17,7 @@ As an example:
1717

1818
```yaml
1919
---
20-
device_onboarding:
20+
sync_devices:
2121
hostname:
2222
commands:
2323
- command: "show version"
@@ -27,18 +27,43 @@ device_onboarding:
2727
..omitted..
2828
```
2929

30+
If there is only one command that needs to be run, the code base also accepts that in a dictionary format.
31+
32+
```yaml
33+
---
34+
sync_devices:
35+
hostname:
36+
commands:
37+
command: "show version"
38+
parser: "textfsm"
39+
jpath: "[*].hostname"
40+
post_processor: "{{ obj[0] | upper }}"
41+
..omitted..
42+
```
43+
3044
## Using Datasource to Override
3145

3246
This App provides sane defaults that have been tested, the files are located in the source code under `command_mappers`. There is potential for these sane defaults to not work in a given environment; alternatively you may want to add additional platform support in your deployment. These are the two main use cases to utilize the datasource feature this app exposes.
3347

3448
!!! info
3549
To avoid overly complicating the merge logic, the App will always prefer the platform specific YAML file loaded in from the git repository.
3650

51+
!!! warn
52+
Partial YAML file merging is not supported. Meaning you can't only overload `sync_devices` definition and inherit `sync_network_data` definition.
53+
3754
### Properly Formatting Git Repository
3855

39-
When loading from a Git Repository this App is expecting a root directory called `onboarding_command_mappers`. Each of the platform YAML files are then located in this directory. The YAML file names must be named `<network_driver>.yml`.
56+
When loading from a Git Repository this App is expecting a root directory called `onboarding_command_mappers`. Each of the platform YAML files are then located in this directory. The YAML file names must be named `<network_driver>.yml`. Where network_driver must exist in the netutils mapping exposed from Nautobot core.
57+
58+
To quickly get a list run:
59+
60+
```python
61+
from nautobot.dcim.utils import get_all_network_driver_mappings
62+
63+
sorted(list(get_all_network_driver_mappings().keys()))
64+
```
4065

4166
### Setting up the Git Repository
4267

43-
1. `Extensibility -> Git Repositories`
44-
2. Create a new repository, most importantly selecting the `Provides` of `Onboarding Command Mappers`
68+
1. Extensibility -> Git Repositories
69+
2. Create a new repository, most importantly selecting the `Provides` of `Network Sync Job Command Mappers`

docs/user/faq.md

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -16,7 +16,7 @@ You need to disable automatic platform detection, specify the device platform ty
1616

1717
## Is it possible to disable the automatic creation of Device Type, Device Role or Platform?
1818

19-
**Yes** (Legacy)! Using the plugin settings, it's possible to control individually the creation of `device_role`, `device_type`, `manufacturer` & `platform`.
19+
**Yes** (original)! Using the plugin settings, it's possible to control individually the creation of `device_role`, `device_type`, `manufacturer` & `platform`.
2020

2121
```python
2222
# configuration.py
@@ -49,7 +49,7 @@ Optional arguments are often used to define a `secret` for Cisco devices and oth
4949

5050
## Does this app support the discovery and the creation of all interfaces and IP Addresses?
5151

52-
**Yes**. The legacy Deivce Onboarding job/SSot Sync Devices will only discover and create the management interface and the management IP address. Importing all interfaces and IP addresses is available from the SSoT job (Sync Network Data).
52+
**Yes**. The original Deivce Onboarding job/SSot Sync Devices will only discover and create the management interface and the management IP address. Importing all interfaces and IP addresses is available from the SSoT job (Sync Network Data).
5353

5454
## Does this app support the discovery of device based on fqdn?
5555

mkdocs.yml

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -102,7 +102,7 @@ nav:
102102
- App Overview: "user/app_overview.md"
103103
- Getting Started: "user/app_getting_started.md"
104104
- Using the App: "user/app_use_cases.md"
105-
- Using the App (Legacy): "user/app_use_cases_legacy.md"
105+
- Using the App (Original): "user/app_use_cases_original.md"
106106
- Frequently Asked Questions: "user/faq.md"
107107
- External Interactions: "user/external_interactions.md"
108108
- Detailed Design: "user/app_detailed_design.md"
@@ -124,6 +124,7 @@ nav:
124124
- Onboarding Extensions: "dev/onboarding_extensions.md"
125125
- Contributing to the App: "dev/contributing.md"
126126
- Development Environment: "dev/dev_environment.md"
127+
- Architecture Decision Records: "dev/arch_decision.md"
127128
- Code Reference:
128129
- "dev/code_reference/index.md"
129130
- Package: "dev/code_reference/package.md"
Lines changed: 8 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -1,27 +1,27 @@
11
---
2-
device_onboarding:
2+
sync_devices:
33
hostname:
44
commands:
5-
- command: "show hostname"
6-
use_textfsm: true
7-
jpath: "[*].hostname"
5+
command: "show hostname"
6+
parser: "textfsm"
7+
jpath: "[*].hostname"
88
serial:
99
commands:
1010
- command: "show version"
11-
use_textfsm: true
11+
parser: "textfsm"
1212
jpath: "[*].serial_number"
1313
device_type:
1414
commands:
1515
- command: "show version"
16-
use_textfsm: true
16+
parser: "textfsm"
1717
jpath: "[*].model"
1818
mgmt_interface:
1919
commands:
2020
- command: "show ip interface brief | json"
21-
use_textfsm: false
21+
parser: "none"
2222
jpath: "interfaces.*.{name: name, match_ip: interfaceAddress.ipAddr.address=='{{ obj }}'}[? match_ip].name"
2323
mask_length:
2424
commands:
2525
- command: "show ip interface brief | json"
26-
use_textfsm: false
26+
parser: "none"
2727
jpath: "interfaces.*.interfaceAddress[?ipAddr.address=='{{ obj }}'].ipAddr.maskLen"
Lines changed: 18 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -1,86 +1,86 @@
11
---
2-
device_onboarding:
2+
sync_devices:
33
hostname:
44
commands:
55
- command: "show version"
6-
use_textfsm: true
6+
parser: "textfsm"
77
post_processor: "{{ obj[0] | upper }}"
88
jpath: "[*].hostname"
99
serial:
1010
commands:
1111
- command: "show version"
12-
use_textfsm: true
12+
parser: "textfsm"
1313
jpath: "[*].serial[0]"
1414
device_type:
1515
commands:
1616
- command: "show version"
17-
use_textfsm: true
17+
parser: "textfsm"
1818
jpath: "[*].hardware[0]"
1919
mgmt_interface:
2020
commands:
2121
- command: "show interfaces"
22-
use_textfsm: true
22+
parser: "textfsm"
2323
jpath: "[?ip_address=='{{ obj }}'].{name: interface, enabled: link_status}"
2424
post_processor: "{{ (obj | selectattr('enabled', 'eq', 'up') | list | first ).name }}"
2525
mask_length:
2626
commands:
2727
- command: "show interfaces"
28-
use_textfsm: true
28+
parser: "textfsm"
2929
jpath: "[?ip_address=='{{ obj }}'].prefix_length"
3030
post_processor: "{{ obj | unique | first }}"
31-
network_importer:
31+
sync_network_data:
3232
serial:
3333
commands:
3434
- command: "show version"
35-
use_textfsm: true
35+
parser: "textfsm"
3636
jpath: "[*].serial[0]"
3737
type:
3838
commands:
3939
- command: "show interfaces"
40-
use_textfsm: true
40+
parser: "textfsm"
4141
jpath: "[*].{interface: interface, type: hardware_type}"
4242
ip_addresses:
4343
commands:
4444
- command: "show interfaces"
45-
use_textfsm: true
45+
parser: "textfsm"
4646
jpath: "[*].{interface: interface, ip_address: ip_address}"
4747
prefix_length:
4848
commands:
4949
- command: "show interfaces"
50-
use_textfsm: true
50+
parser: "textfsm"
5151
jpath: "[*].{interface: interface, prefix_length: prefix_length}"
5252
mtu:
5353
commands:
5454
- command: "show interfaces"
55-
use_textfsm: true
55+
parser: "textfsm"
5656
jpath: "[*].{interface: interface, mtu: mtu}"
5757
mac_address:
5858
commands:
5959
- command: "show interfaces"
60-
use_textfsm: true
60+
parser: "textfsm"
6161
jpath: "[*].{interface: interface, mac_address: mac_address}"
6262
description:
6363
commands:
6464
- command: "show interfaces"
65-
use_textfsm: true
65+
parser: "textfsm"
6666
jpath: "[*].{interface: interface, description: description}"
6767
link_status:
6868
commands:
6969
- command: "show interfaces"
70-
use_textfsm: true
70+
parser: "textfsm"
7171
jpath: "[*].{interface: interface, link_status: link_status}"
7272
vrfs:
7373
commands:
7474
- command: "show vrf"
75-
use_textfsm: true
75+
parser: "textfsm"
7676
jpath: "[*].{name: name, interfaces: interfaces}"
7777
vlans:
7878
commands:
7979
- command: "show vlan"
80-
use_textfsm: true
80+
parser: "textfsm"
8181
jpath: "[*].{interfaces: interfaces, vlan_name: vlan_name, vlan_id: vlan_id, status: status}"
8282
interface_vlans:
8383
commands:
8484
- command: "show interfaces switchport"
85-
use_textfsm: true
85+
parser: "textfsm"
8686
jpath: "[*].{interface: interface, admin_mode: admin_mode, access_vlan: access_vlan, native_vlan: native_vlan, trunking_vlans: trunking_vlans, voice_vlan: voice_vlan}"

0 commit comments

Comments
 (0)