Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Network ssot integration #173

Merged
merged 276 commits into from
Apr 18, 2024
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
276 commits
Select commit Hold shift + click to select a range
62c8db8
updated args
susanhooks Jan 29, 2024
32c7a96
black, isort, pydocstyle
Jan 29, 2024
35d1841
Merge branch 'network-ssot-integration' of github.com:nautobot/nautob…
Jan 29, 2024
673cff7
black and flake 8, some form description updates
Jan 30, 2024
e673881
update nautobot version in ci.yml
Jan 30, 2024
ebe860c
fix: Drift management
snaselj Jan 30, 2024
9cf194f
Merge pull request #150 from nautobot/u/snaselj-fix-drift-management
scetron Jan 30, 2024
205f68e
pylint
Jan 30, 2024
3af9cc7
flake8 and isort
Jan 30, 2024
dc1709d
fix autodetect failing when two ips provided
jeffkala Jan 30, 2024
4d61ab0
fix autodetect failing when two ips provided
jeffkala Jan 30, 2024
c393d92
Cookie updated by NetworkToCode Cookie Drift Manager Tool
Jan 31, 2024
03eaa75
chore: Manual fixes
snaselj Jan 31, 2024
63cad44
chore: Poetry lock
snaselj Jan 31, 2024
0291743
chore: Changelog fragment
snaselj Jan 31, 2024
811726a
added juniper support
susanhooks Jan 31, 2024
7438e64
adding NI
susanhooks Jan 31, 2024
aac88a4
bump version
Feb 6, 2024
539c3c8
Merge branch 'network-ssot-integration' of github.com:nautobot/nautob…
Feb 6, 2024
41ec82d
black, isort, pydocstyle
Feb 6, 2024
5957a0c
Merge branch 'next-gen-update' into network-ssot-integration
Dav-C Feb 6, 2024
7ae76cc
black, flake8, pydocstyle
Feb 6, 2024
f33b2f7
pylint
susanhooks Feb 6, 2024
5bf4177
update ssot network importer
Feb 7, 2024
41a1905
update network importer ssot
Feb 7, 2024
62144a2
update network importer
susanhooks Feb 8, 2024
4a8464e
update command getter
susanhooks Feb 8, 2024
7f4a439
fix filtering on NI job
jeffkala Feb 8, 2024
acdf5ef
add vlan model and adapter load method
Feb 8, 2024
9b5085b
add vlans and interface lag to sync
Feb 9, 2024
7375db6
updates for NI
susanhooks Feb 9, 2024
cea10d4
updated formatting, added trunked vlans
susanhooks Feb 13, 2024
3f180ff
Merge pull request #151 from nautobot/drift-manager/pr
scetron Feb 13, 2024
fae04e3
add call to command getter
Feb 14, 2024
0a90115
update command getter call
Feb 14, 2024
50167da
handle failed result
susanhooks Feb 14, 2024
6d225e7
update formatting
Feb 14, 2024
5a7c251
formatting
Feb 15, 2024
7bf8174
black
Feb 15, 2024
f96216a
simplify if statment
Feb 15, 2024
6a2fa13
formatting
Feb 15, 2024
615f077
updates
jeffkala Feb 15, 2024
60050bf
first work new parser with jdiff
jeffkala Feb 15, 2024
a1e291d
update structures
jeffkala Feb 15, 2024
03729af
please help
susanhooks Feb 15, 2024
e194ada
fix result dict on fail
jeffkala Feb 15, 2024
7389d87
cleanup
susanhooks Feb 15, 2024
6c7f3c3
update logging and bump version
Feb 15, 2024
c900384
remove logging
susanhooks Feb 15, 2024
872a540
Merge branch 'next-gen-update' into network-ssot-integration
susanhooks Feb 15, 2024
e0da10f
update lock file
Feb 15, 2024
2558e73
black
Feb 15, 2024
ff8a8a5
getting everything reformatted still needs cleanup
jeffkala Feb 15, 2024
40935cd
new framework for parsing outputs
jeffkala Feb 16, 2024
75d95dd
fix conflicts
jeffkala Feb 16, 2024
c5540d9
fix unused import
jeffkala Feb 16, 2024
ceb3e3c
Merge pull request #155 from nautobot/jkala-network-ssot-integration
jeffkala Feb 16, 2024
156f883
get rest working
jeffkala Feb 16, 2024
83cd54c
add data type check for device on boarding network adapter
Feb 17, 2024
15e8515
fix format of yaml files
jeffkala Feb 17, 2024
b790c27
new post processor feature from yaml , clean ups
jeffkala Feb 17, 2024
cb447c7
Merge pull request #156 from nautobot/jkala-ssot-new-j2
jeffkala Feb 17, 2024
821c001
add a more advanced jdiff jpath query to ios for ni interfaces
jeffkala Feb 17, 2024
d6cd5d1
xMerge branch 'network-ssot-integration' of github.com:nautobot/nauto…
jeffkala Feb 17, 2024
cf43040
merge commit
Feb 17, 2024
68299d6
updates for parsing
Feb 19, 2024
976bdd4
bump version
Feb 20, 2024
c8975a7
update network importer
Feb 20, 2024
4e021fe
add platform none check
jeffkala Feb 21, 2024
28123c1
fix formatting
jeffkala Feb 21, 2024
1d7b3d9
add conditional for no platform
jeffkala Feb 21, 2024
fc0e7e8
add conditional for no platform
jeffkala Feb 21, 2024
ebe946d
add conditional for no platform
jeffkala Feb 21, 2024
f91afec
add unsupported check
jeffkala Feb 21, 2024
1da8ab6
add readtimeout
jeffkala Feb 21, 2024
59cd59b
add failed task UI logging
jeffkala Feb 21, 2024
7c84d46
add junos support to do
jeffkala Feb 21, 2024
8312192
add logging for failed reason
Feb 21, 2024
7bdb449
add junos support to do
jeffkala Feb 21, 2024
1eaf99d
Merge branch 'network-ssot-integration' of github.com:nautobot/nautob…
jeffkala Feb 21, 2024
aa341fe
update junos, add json load to linterfaces
jeffkala Feb 21, 2024
9ff1e63
update junos, add json load to linterfaces
jeffkala Feb 21, 2024
6cab6a2
update ios to use tojson filter
jeffkala Feb 21, 2024
c65dcbf
update ios to use tojson filter
jeffkala Feb 21, 2024
ce71864
formatting, update function name and doc strings
Feb 21, 2024
9ba43ae
Merge remote-tracking branch 'origin/next-gen-update' into network-ss…
Feb 21, 2024
1ba4631
Merge branch 'develop' into network-ssot-integration
Feb 21, 2024
3b1fb5f
use j2 sandbox and nb core render function
jeffkala Feb 21, 2024
44c11b1
Merge branch 'jkala-sandboxj2' into network-ssot-integration
jeffkala Feb 21, 2024
f3e2c8d
poetry lock and black
Feb 21, 2024
e60eadd
black
Feb 21, 2024
44024ca
fix juniper_junos.yml
Feb 21, 2024
d56ff78
juniper_junos.yml formatting
Feb 21, 2024
f0edfab
Merge remote-tracking branch 'origin/next-gen-update' into network-ss…
Feb 21, 2024
80688d9
update ssot network adapter, models and mock data
Feb 22, 2024
35e2687
ios NI initial working
jeffkala Feb 22, 2024
2c7d70a
fix do for junos
jeffkala Feb 22, 2024
69418b4
add csv support wip
Feb 22, 2024
b6a8021
update csv import feature
Feb 23, 2024
2915b51
update csv support
Feb 23, 2024
cb4d10c
update csv support
Feb 23, 2024
76a253d
fix dup ip address extraction
jeffkala Feb 23, 2024
bcd179f
fix mgmt_interface from list to string
jeffkala Feb 23, 2024
d47db2e
update csv support
Feb 23, 2024
bea98a2
add orm caching method to onboarding adapter
Feb 23, 2024
0476cad
update csv support
Feb 23, 2024
bde59f6
remove print statement
Feb 23, 2024
db7165b
send interfaces in ios as json
jeffkala Feb 23, 2024
d072040
Merge branch 'network-ssot-integration' of github.com:nautobot/nautob…
jeffkala Feb 23, 2024
0bdd25d
update csv support
Feb 23, 2024
d581d08
bump version
Feb 23, 2024
090ad08
update NI
Feb 23, 2024
5446c34
remove tag filter option
Feb 23, 2024
cc3d373
remove tag filter
Feb 23, 2024
2ffd719
decouple nornir play from job to remove enqueue job option
jeffkala Feb 23, 2024
55e8108
Merge branch 'network-ssot-integration' into jkala-revamp
jeffkala Feb 23, 2024
61ca2ac
Merge pull request #159 from nautobot/jkala-revamp
jeffkala Feb 23, 2024
a16571b
clean up via black
jeffkala Feb 24, 2024
261eba1
update csv import logging
Feb 24, 2024
b2a3d90
fix bug in _process_csv_data
Feb 26, 2024
57798ad
remove command getter job
Feb 26, 2024
ae55f54
Merge branch 'network-ssot-integration' into network-ssot-integration…
Feb 26, 2024
584f41a
update NI
Feb 26, 2024
922e559
updates for description and enabled
Feb 26, 2024
9ec6a01
update mock data
Feb 26, 2024
22b2de2
formatting
Feb 26, 2024
2cbb9dc
black
Feb 26, 2024
becbeb5
pylint
Feb 26, 2024
0712eea
update logging message
Feb 26, 2024
d6f64a1
flake8
Feb 26, 2024
9e79925
Merge remote-tracking branch 'origin/network-ssot-integration' into n…
Feb 26, 2024
41f0277
update CSV support
Feb 26, 2024
8fa95bc
update lock file
Feb 26, 2024
3c2e27c
update lock and toml files
Feb 26, 2024
567187b
Merge remote-tracking branch 'origin/next-gen-update' into network-ss…
Feb 27, 2024
85a4476
Merge branch 'network-ssot-integration' into network-ssot-integration…
Feb 27, 2024
16648c4
update logging around existing devies
Feb 28, 2024
3d2e7d6
change command mapper formatting and DO for junos
jeffkala Feb 28, 2024
7d6d3b1
fix junos
jeffkala Feb 28, 2024
277ad01
remove prefix_length from OnboardingDeviceModel
Feb 28, 2024
2ee7cfb
add data check for fields returned by devices
Feb 29, 2024
75cbd32
enhance junos mgmt int and mask captures
jeffkala Feb 29, 2024
4fc097a
enhance junos mgmt int and mask captures
jeffkala Feb 29, 2024
4c57915
fixes for most jnos
jeffkala Feb 29, 2024
cac3a81
Merge branch 'jkala-new-mapper-and-junos' into network-ssot-integration
jeffkala Feb 29, 2024
5b71220
rework yaml format and processor formatter
jeffkala Mar 5, 2024
ca6bcab
fixed nxos serial
Mar 7, 2024
7ea29c8
improve logging and calls to secrets providers
Mar 8, 2024
2bfe0a2
update onboarding adapter
Mar 8, 2024
c465c54
set defaut platform value to None when loading devices in onboarding …
Mar 8, 2024
4b7ef3c
yamllint, ruff
Mar 8, 2024
214fbb7
Merge remote-tracking branch 'origin/next-gen-update' into network-ss…
Mar 8, 2024
605cd62
add more performant lookup to mgmt interface cisco ios
jeffkala Mar 9, 2024
709e0dc
bump version, fix bug with DO adapter
Mar 11, 2024
f2e8613
Merge remote-tracking branch 'origin/next-gen-update' into network-ss…
Mar 11, 2024
62267e7
update DO adapters, models and job
Mar 13, 2024
b2b8274
bump version
Mar 13, 2024
a876282
Merge remote-tracking branch 'origin/next-gen-update' into network-ss…
Mar 13, 2024
e5f6e52
formatting changes
Mar 14, 2024
a4ceb87
changed ip address to list
Mar 14, 2024
44b4e16
fix yamllint, pylint and juniper yaml jpaths
jeffkala Mar 15, 2024
c553acf
updates to NI formatting
Mar 15, 2024
8d15377
fix junos mgmt intrface post processor
jeffkala Mar 15, 2024
297c460
Merge branch 'network-ssot-integration' of https://github.com/nautobo…
Mar 15, 2024
7d6a12f
fix junos
jeffkala Mar 15, 2024
477f408
Update juniper_junos.yml
jeffkala Mar 16, 2024
8fc0e9d
Update juniper_junos.yml
jeffkala Mar 16, 2024
14b3fc1
update ni add nxos
Mar 19, 2024
ed1a191
update vlans
Mar 20, 2024
19e3163
update NI adapters and models, add untagged vlan model
Mar 20, 2024
7ffe120
bump
Mar 22, 2024
fe47e90
linting
Mar 22, 2024
1cdd65f
update lock file
Mar 26, 2024
13ebf80
Merge remote-tracking branch 'origin/next-gen-update' into network-ss…
Mar 26, 2024
1271efd
updates for multiple devices
Mar 27, 2024
5b5eb26
update mac address conversion
Mar 27, 2024
aef2830
Merge branch 'network-ssot-integration' of https://github.com/nautobo…
Mar 27, 2024
ed60cc0
Merge remote-tracking branch 'origin/next-gen-update' into network-ss…
Mar 27, 2024
2ba0a6b
add cache for primary ips to NI adapter
Mar 27, 2024
984da9a
update sync complete
Mar 27, 2024
5a436de
update sync complete
Mar 28, 2024
105dc53
update sync complete
Mar 28, 2024
06397f1
add sync complete doc string
Mar 28, 2024
823c87d
updated interface mapping
Mar 28, 2024
a19676a
bump
Mar 28, 2024
9edc3f1
black
Mar 28, 2024
3d4018c
pylint
Mar 28, 2024
d38e6ef
Merge remote-tracking branch 'origin/next-gen-update' into network-ss…
Mar 28, 2024
cf646ae
add error handling
Mar 29, 2024
30d2055
Merge branch 'network-ssot-integration' of https://github.com/nautobo…
Mar 29, 2024
71ae532
bump version
Apr 1, 2024
1131e10
black
Apr 1, 2024
feca83d
yamlint
Apr 1, 2024
de00f08
Merge remote-tracking branch 'origin/next-gen-update' into network-ss…
Apr 1, 2024
ba39479
updates for vrf
Apr 2, 2024
d0683b7
Merge branch 'network-ssot-integration' of https://github.com/nautobo…
Apr 2, 2024
2d95fe9
revamps and cleanups
jeffkala Apr 4, 2024
ed4d534
update list conversion
Apr 4, 2024
4b71227
more refactors and cleanups
jeffkala Apr 4, 2024
8ecefff
Merge branch 'network-ssot-integration' into jkala-revamp-ssot-integr…
jeffkala Apr 4, 2024
658ab2e
fix custom filters development config
jeffkala Apr 4, 2024
2f9424f
remove jinja2 fitler registration in favor of native support with dec…
jeffkala Apr 4, 2024
f11d8d3
Merge pull request #172 from nautobot/jkala-revamp-ssot-integration
jeffkala Apr 4, 2024
427f754
linters, formatters, stuff
jeffkala Apr 5, 2024
812406e
fix platform parsing info
jeffkala Apr 5, 2024
90de339
fix return indent level
jeffkala Apr 5, 2024
d8b04d3
fix return indent level
jeffkala Apr 5, 2024
6791f8d
add default dict
Apr 5, 2024
fe38059
more cleanups remove transform function
jeffkala Apr 5, 2024
bfe001a
Merge branch 'network-ssot-integration' of github.com:nautobot/nautob…
jeffkala Apr 5, 2024
c4e6010
more refactors and few cleanups
jeffkala Apr 5, 2024
3de0168
add vrf to ssot sync, fix vlan bug, update logging
Apr 5, 2024
c598539
remove unnecessary logging
Apr 5, 2024
043fd4d
updates for VRF support
Apr 8, 2024
8095902
removed exception for vrf without rd
Apr 9, 2024
105fd4d
first DO for WLC
jeffkala Apr 9, 2024
e97fc9e
added 802.1q support for ios
Apr 9, 2024
01512f2
Merge branch 'network-ssot-integration' of https://github.com/nautobo…
Apr 9, 2024
5bda142
fix / add needed info for wlc
jeffkala Apr 9, 2024
1be3e9c
Merge branch 'network-ssot-integration' of github.com:nautobot/nautob…
jeffkala Apr 9, 2024
498029e
updates for vlans ios
Apr 10, 2024
5229b44
adjust vrf adapter to load an RD of "None" if not present
Apr 11, 2024
a038168
update vrf model
Apr 11, 2024
5504ed1
update vrf model for NI
Apr 11, 2024
b2ecbac
add schema and some more new filters and cleanups
jeffkala Apr 12, 2024
c6bf94c
Merge branch 'network-ssot-integration' of github.com:nautobot/nautob…
jeffkala Apr 12, 2024
68f629e
update for handling
Apr 12, 2024
647b8a7
update
Apr 12, 2024
14c7a22
Merge branch 'network-ssot-integration' of https://github.com/nautobo…
Apr 12, 2024
2fedc65
vlans add
Apr 12, 2024
e7791b9
first pass at adding docs for new ssot features
jeffkala Apr 12, 2024
8ff3351
more doc adds
jeffkala Apr 15, 2024
762ca74
more doc adds
jeffkala Apr 15, 2024
244ca9b
vlans for nxos working
Apr 17, 2024
096ba5b
Merge branch 'network-ssot-integration' of https://github.com/nautobo…
Apr 17, 2024
eeafb17
linting
Apr 17, 2024
3edbc42
fix example dict keys
jeffkala Apr 18, 2024
3414f55
Merge branch 'network-ssot-integration' of github.com:nautobot/nautob…
jeffkala Apr 18, 2024
6e2d1b9
remove RD from vrf sync
Apr 18, 2024
167e58e
update mock data
Apr 18, 2024
4829af5
removed rd from vrf
Apr 18, 2024
cd26170
Merge branch 'network-ssot-integration' of github.com:nautobot/nautob…
jeffkala Apr 18, 2024
217e26b
add wlc mapper and support for do
jeffkala Apr 18, 2024
5c5c4d6
update jinja_filters.py, lock and bump version
Apr 18, 2024
af351fe
fix link in docs
jeffkala Apr 18, 2024
f5c39ea
Merge branch 'network-ssot-integration' of github.com:nautobot/nautob…
jeffkala Apr 18, 2024
438aabb
update mkdocs
Apr 18, 2024
ab1a711
removed extra rd config
Apr 18, 2024
f6ba164
Merge branch 'network-ssot-integration' of https://github.com/nautobo…
Apr 18, 2024
38e3307
cleanup
Apr 18, 2024
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
13 changes: 13 additions & 0 deletions docs/dev/extending.md
Original file line number Diff line number Diff line change
Expand Up @@ -7,3 +7,16 @@ Extending the application is welcome, however it is best to open an issue first,
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.

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

!!! warn
This is the legacy onboarding extensions. The next section covers how to extend the new framework.

## Extending SSoT jobs (Sync Devices, and Sync Network Data)

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.

### Adding Platform/OS Support

New platform support should be simplified in this framework, by providing a YAML file.

The format of these YAML files are and how to extend this application is covered in [App YAML Overrides](../user/app_yaml_overrides.md).
3 changes: 3 additions & 0 deletions docs/dev/onboarding_extensions.md
Original file line number Diff line number Diff line change
@@ -1,5 +1,8 @@
# Onboarding Extensions

!!! warn
This is the legacy onboarding extensions.

## What are onboarding extensions?

Onboarding Extensions are Python modules that are dynamically loaded and executed as a part of device onboarding.
Expand Down
54 changes: 54 additions & 0 deletions docs/user/app_detailed_design.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,54 @@
# Network SSoT Detailed Design

This page will describe the newer SSoT jobs that this App exposes and how they work.

## Frameworks in Use

- [Nautobot SSoT](https://docs.nautobot.com/projects/ssot/en/latest/) - Utilzing the existing Nautobot SSoT framework allows a common pattern to be re-used and offers a path forward to add additional support and features.
- [Nautobot App Nornir](https://docs.nautobot.com/projects/plugin-nornir/en/latest/) - Utilized for Nornir Inventory plugins for Nautobot (specifically for Sync Network Data Job).
- [Nornir Netmiko](https://github.com/ktbyers/nornir_netmiko) - Used to execute commands and return results.
- [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.
- Parsers - Initially NTC Templates via textFSM, but future support for PyATS, TTP, etc. is expected in the future.

## How the SSoT **Sync Devices** Job Works

1. The job is executed with inputs selected.
- List of comma seperated IP/DNS names is provided.
- Other required fields are selected in the job inputs form.

2. The SSoT framework loads the Nautobot adapter information.
3. The SSoT frameworks network adapater `load()` method calls nornir functionality.
- The job inputs data is passed to the InitNornir initializer, because we only have basic information a custom `EmptyInventory` Nornir inventory plugin is packaged with the App. This get initialized in the `InitNornir` function, but actually initialzes a true inventory that is empty.
- Since `Platform` information may need to be auto-detected before adding a Nornir `Host` object to the inventory, a `create_inventory` function is executed that uses the SSH-Autodetect via Netmiko to try to determine the platform so it can be injected into the `Host` object.
- Finally, all the platform specific commands to run, along with all the jpath, `post_processor` information loaded from the platform specific YAML files must be injected into the Nornir data object to be accessible later in the extract, transform functions.
4. Within the context of a Nornir `with_processor` context manager call the `netmiko_send_commands` Nornir task.
- Access the loaded platform specific YAML data and deduplicate commands to avoid running the same command multiple times. E.g. Multiple required data attributes come from the same show command.
5. Utilize native Nornir Processor to overload functionality on `subtask_instance_completed()` to run command outputs through extract and transformation functions.
- This essentially is our "ET" portion of a "ETL" process.
- 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.
- Finally, an optional `post_processor` jinja2 capable execution can further transform the data for that command before passing it to finish the SSoT syncronizaton.

## How the SSoT **Sync Network Data** Job Works

1. The job is executed with inputs selected.
- One or multiple device selection.
- Other required fields are selected in the job inputs form.
- Toggle certain metadata booleans to True if you want more data synced.

2. The SSoT framework loads the Nautobot adapter information.
3. The SSoT frameworks network adapater `load()` method calls Nornir functionality.
- The job inputs data is passed to the InitNornir initializer, because devices now exist in Nautobot we use `NautobotORMInventory` Nornir inventory plugin comes from `nautobot-plugin-nornir`.
- Finally, all the platform specific `commands` to run, along with all the `jpath`, `post_processor` information loaded from the platform specific YAML files must be injected into the Nornir data object to be accessible later in the extract, transform functions.
4. Within the context of a Nornir `with_processor` context manager call the `netmiko_send_commands` Nornir task.
- Access the loaded platform specific YAML data and deduplicate commands to avoid running the same command multiple times. E.g. Multiple required data attributes come from the same show command.
5. Utilize native Nornir Processor to overload functionality on `subtask_instance_completed()` to run command outputs through extract and transformation functions.
- This essentially is our "ET" portion of a "ETL" process.
- 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.
- Finally, an optional `post_processor` jinja2 capable execution can further transform the data for that command before passing it to finish the SSoT syncronizaton.

## Detailed Design Diagram

Here are two diagrams detailing the SSoT based jobs in deeper detail.

![Sync Devices]().
![Sync Network Data]().
11 changes: 10 additions & 1 deletion docs/user/app_getting_started.md
Original file line number Diff line number Diff line change
Expand Up @@ -8,6 +8,8 @@ To install the App, please follow the instructions detailed in the [Installation

## First steps with the App

This App exposes a legacy device onboarding job, as well as two new SSoT based jobs that are considered the future of the App.

### Prerequisites

You will need:
Expand All @@ -21,9 +23,16 @@ The device must be reachable from the Nautobot and Nautobot worker instances (us

Locations are the only other Nautobot prerequisite for the plugin to onboard a device.

!!! info
There are a few other requirements for the new SSoT based jobs, but can also support some defaults.

### Onboarding a Device

Navigate to the Device Onboarding Job: Jobs > Perform Device Onboarding.
Navigate to the Device Onboarding Job: Jobs > Perform Device Onboarding (Legacy).

or

Navigate to the SSoT dashboard and run `Sync Devices` to get basic device and information onboarding, followed by `Sync Network Data` to add additonal details from the network to these devices. E.g. Interfaces, IPs, VRFs, VLANs.

## What are the next steps?

Expand Down
55 changes: 54 additions & 1 deletion docs/user/app_overview.md
Original file line number Diff line number Diff line change
Expand Up @@ -9,6 +9,11 @@ This [Nautobot](https://github.com/nautobot/nautobot) App allows to easily onboa

## Description/Overview

### Legacy Implementation

!!! info
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.

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*.

Regardless, the Onboarding App greatly simplifies the onboarding process by allowing the user to specify a small amount of info and having the app populate a much larger amount of device data in Nautobot.
Expand Down Expand Up @@ -38,6 +43,53 @@ For example, getting the Management IP and Platform data into Nautobot allows a

One example of a solution that can retrieve that additional device data and import it into Nautobot is the [Network Importer](https://github.com/networktocode/network-importer). Other options would include an Ansible playbook or a Python script.

### New SSoT Implementation

The new implementation of device onboarding in this app is utilizing the SSoT framework; the main reasons for providing the new mechanisms were to solve the following challenges:

- Make it easier to extending and add additonal vendor/OS support.
- Collapse this app and the external [Network Importer](https://github.com/networktocode/network-importer) into the same Nautobot app for simplified device onboarding with more object support.'
- Remove the Batfish dependency.
- 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`.
- Utilize SSoT framework and the new `contrib` functionality to speed up development of new features.
- By collapsing

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

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.
- Hostname
- Serial Number
- Device Type
- Platform
- Management Interface
- Management IP address (creates a prefix if one doesn't exist for the IP discovered.)

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.
- All interfaces on the device with plus the attributes below:
- Interface Name
- MTU
- Description
- Interface type (limited support. Default: 'Other')
- Mac Address
- Link Status
- Interface Mode
- VLANs
- Vlans
- Untagged and Tagged
- VRFs
- VRF Names
- Route Distinguishers (RD)
- Cabling (Coming soon...)

!!! info
For more information look at the provided jsonschema definitions for each of the jobs.

Additional References:

- For more information see [App Use Cases](./app_use_cases.md).
- To understand the lower level details of how the Network-SSoT framework is designed see [Network-SSoT Design](./app_detailed_design.md)
- To learn how to add additonal platform/OS support visit [Extending](./external_interactions.md).

## Audience (User Personas) - Who should use this App?

The Onboarding App is meant for new Nautobot users who want to start importing their devices directly rather than from another, existing, source. Even with other sources for device information, they may not include everything that is necessary.
Expand All @@ -48,7 +100,7 @@ Existing Nautobot users may want to incorporate the Onboarding App as part of on

### Authors

@mzb and @dgarros
@mzb and @dgarros and many other great contributors!

### Maintainers

Expand All @@ -61,3 +113,4 @@ Existing Nautobot users may want to incorporate the Onboarding App as part of on

- Secrets & SecretsGroup
- Jobs
- Datasources
Loading
Loading