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

Prep 4.0.0 #188

Merged
merged 88 commits into from
Aug 5, 2024
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
88 commits
Select commit Hold shift + click to select a range
e054d41
Onboarding 4.0 contributions
jeffkala Jun 6, 2024
419728e
General application updates for 4.0 and updates from drift manager
jeffkala Jun 6, 2024
3823ee0
SSoT Logic for Onboarding 4.0 contributions
Jun 6, 2024
0d7259a
Nornir and YAML DSL Onboarding 4.0 contributions
susanhooks Jun 6, 2024
40baccb
fix vlans across all platforms and more unittest
jeffkala Jun 9, 2024
feab3db
fix ci test to match new 2.2.3 lower constraint
jeffkala Jun 9, 2024
14871f7
merge tasks.py from develop
jeffkala Jun 10, 2024
95566de
add back app config schemas
jeffkala Jun 10, 2024
8ab3f3d
fix vlans, fix ci and app schemas
jeffkala Jun 9, 2024
dc5dd1a
add vlans to junos as best effort
jeffkala Jun 10, 2024
c9c9f47
Merge branch 'prep-4.0.0' of github.com:nautobot/nautobot-app-device-…
jeffkala Jun 10, 2024
5224ef1
remove rd=None from vrf assignment filter
Jun 12, 2024
2150773
update version to rc2
Jun 12, 2024
740a39b
few fixes to prep rc2
jeffkala Jun 27, 2024
8074bd2
Fix error if Serial # is only numbers.
zackt25 Jun 28, 2024
929308b
update description for sync network data job
Jun 28, 2024
595f660
extremely important update
Jun 28, 2024
9ca79b6
update error handling in _handle_failed_devices
Jun 28, 2024
f0fa20e
implement fix for iterable type 'int' and solve json loads changing s…
jeffkala Jun 28, 2024
9c4ccb0
error handling for vlans
Jun 28, 2024
904bc54
first past add cables support
scetron Jul 8, 2024
7be49b3
fix typos
scetron Jul 10, 2024
22e3ce8
add sync cables to job
scetron Jul 10, 2024
8177111
update parsing/yaml
scetron Jul 11, 2024
d68e5a1
add sync cables to job
scetron Jul 11, 2024
0268611
edit
scetron Jul 11, 2024
b6767ef
update model
scetron Jul 11, 2024
76a62c8
change neighbors to models
scetron Jul 11, 2024
415410b
change neighbors to models
scetron Jul 11, 2024
1378e84
change test to match jpath
scetron Jul 11, 2024
2cc95bd
adjust skip unmatched src
scetron Jul 11, 2024
f43c13a
linting
scetron Jul 11, 2024
910b991
Update nautobot_device_onboarding/tests/test_formatter.py
scetron Jul 11, 2024
9c75774
simplify cables command mapper
scetron Jul 12, 2024
f73da77
fix ruff unsupported default action
scetron Jul 12, 2024
f5c4ce0
add cables schema
scetron Jul 12, 2024
de140e0
update mock and test data
scetron Jul 15, 2024
44359db
update test jpath format
scetron Jul 15, 2024
e95b071
move status to an attribute
scetron Jul 15, 2024
c2561cc
remove uneeded root_key flag
scetron Jul 15, 2024
0521f2f
fix schema
scetron Jul 15, 2024
db44924
fix test job
scetron Jul 15, 2024
662fdfc
fix test data
scetron Jul 15, 2024
59e8619
add adapter test for load cables
scetron Jul 15, 2024
e8e8d8a
test a markdown emoji
jeffkala Jul 17, 2024
3c19e29
revert model change flag
scetron Jul 17, 2024
3a58b38
add support matrix
jeffkala Jul 17, 2024
7fc6c17
add support matrix
jeffkala Jul 17, 2024
e36dd19
add support matrix
jeffkala Jul 17, 2024
b31d362
add support matrix
jeffkala Jul 17, 2024
57a3746
add support matrix
jeffkala Jul 17, 2024
d89cfd5
add support matrix
jeffkala Jul 17, 2024
4cfbca0
add pks to device onboarding adapter load methods
Jul 17, 2024
2adbb11
add iosxe mapper
scetron Jul 18, 2024
2fa3934
adjust mock data
scetron Jul 19, 2024
6a2e2a5
add pre-emptive / last resort error handling
scetron Jul 19, 2024
0104ff1
adjust linting + adjust error handling
scetron Jul 22, 2024
29de249
add jinja filter to remove fqdns
scetron Jul 22, 2024
1786637
adjust try/except block
scetron Jul 22, 2024
a2708da
update ntc-templates
scetron Jul 22, 2024
72b086d
add post processor to ios and xe
scetron Jul 23, 2024
81c3731
adjust error handling
scetron Jul 23, 2024
747342e
added cable support for juniper
Jul 23, 2024
33da75b
yamlint
Jul 25, 2024
893cabe
force interface description to a string if empty
scetron Jul 26, 2024
adf6993
typo
scetron Jul 26, 2024
c82536c
skip cables when cables aren't in the command getter
scetron Jul 26, 2024
0360811
skip vlan pre_processor when not syncing vlans
scetron Jul 26, 2024
a592559
skip vlan preprocessor when not syncing vlans
scetron Jul 26, 2024
0b840f5
Updates install doc to include PLUGINS dependencies
joewesch Jul 30, 2024
20e9449
adjust mock results for new schema/formatter
scetron Jul 31, 2024
d909ed0
fix typo
scetron Jul 31, 2024
5a4cdca
lint
scetron Jul 31, 2024
60dc657
throw error when cables not supported
scetron Jul 31, 2024
6df2cf1
remove unexpected commands
scetron Jul 31, 2024
35d33cf
remove maxdiff used for troubleshooting.
scetron Jul 31, 2024
c2529d5
Merge pull request #202 from nautobot/feature-collect-cables
scetron Aug 1, 2024
ef755f6
Merge pull request #207 from nautobot/u/joewesch_4.0-docs
scetron Aug 1, 2024
0afb3d0
update description schema
scetron Aug 1, 2024
86b3d69
Merge pull request #199 from nautobot/bug_fix_serial_number_schema
scetron Aug 1, 2024
ecf04b7
update compat matrix
jeffkala Aug 5, 2024
36b11f2
Merge pull request #203 from nautobot/jkala-compat-matrix
jeffkala Aug 5, 2024
9d1c523
Merge branch 'develop' into prep-4.0.0
jeffkala Aug 5, 2024
1371e11
pin netutils for cisco_xe to ntc-templates mapping
jeffkala Aug 5, 2024
97bc950
add change frags and update docs
jeffkala Aug 5, 2024
d0b2ac5
change frags and release notes
jeffkala Aug 5, 2024
96a0418
Add logger to other jobs (#210)
scetron Aug 5, 2024
b70d99c
Merge branch 'prep-4.0.0' of github.com:nautobot/nautobot-app-device-…
jeffkala Aug 5, 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
4 changes: 2 additions & 2 deletions .github/workflows/ci.yml
Original file line number Diff line number Diff line change
Expand Up @@ -106,7 +106,7 @@ jobs:
fail-fast: true
matrix:
python-version: ["3.11"]
nautobot-version: ["2.2.2"]
nautobot-version: ["2.2.3"]
env:
INVOKE_NAUTOBOT_DEVICE_ONBOARDING_PYTHON_VER: "${{ matrix.python-version }}"
INVOKE_NAUTOBOT_DEVICE_ONBOARDING_NAUTOBOT_VER: "${{ matrix.nautobot-version }}"
Expand Down Expand Up @@ -152,7 +152,7 @@ jobs:
include:
- python-version: "3.11"
db-backend: "postgresql"
nautobot-version: "2.2.2"
nautobot-version: "2.2.3"
# - python-version: "3.11"
# db-backend: "mysql"
# nautobot-version: "stable"
Expand Down
47 changes: 45 additions & 2 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,7 @@
<p align="center">
<img src="https://raw.githubusercontent.com/nautobot/nautobot-app-device-onboarding/develop/docs/images/icon-DeviceOnboarding.png" class="logo" height="200px">
<br>
<a href="https://github.com/nautobot/nautobot-app-device-onboarding/actions"><img src="https://github.com/nautobot/nautobot-app-device-onboarding/actions/workflows/ci.yml/badge.svg?branch=main"></a>
<a href="https://github.com/nautobot/nautobot-app-device-onboarding/actions"><img src="https://github.com/nautobot/nautobot-app-device-onboarding/actions/workflows/ci.yml/badge.svg?branch=develop"></a>
<a href="https://docs.nautobot.com/projects/device-onboarding/en/latest/"><img src="https://readthedocs.org/projects/nautobot-plugin-device-onboarding/badge/"></a>
<a href="https://pypi.org/project/nautobot-device-onboarding/"><img src="https://img.shields.io/pypi/v/nautobot-device-onboarding"></a>
<a href="https://pypi.org/project/nautobot-device-onboarding/"><img src="https://img.shields.io/pypi/dm/nautobot-device-onboarding"></a>
Expand All @@ -17,11 +17,54 @@ The `nautobot-device-onboarding` plugin is using the [netmiko](https://github.co

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.

### Support Matrix (Sync Devices From Network)

| Data Attribute | Cisco IOS | Cisco XE | Cisco NXOS | Cisco WLC | Juniper Junos | Arista EOS | F5 |
| ----------------------- | :----------------: | :--------------: | :--------------: | :--------------: | :--------------: | :--------------: | :-: |
| Hostname | :white_check_mark: | :white_check_mark: | :white_check_mark: | :white_check_mark: | :white_check_mark: | :white_check_mark: | :x: |
| Platform | :white_check_mark: | :white_check_mark: | :white_check_mark: | :white_check_mark: | :white_check_mark: | :white_check_mark: | :x: |
| Manufacturer | :white_check_mark: | :white_check_mark: | :white_check_mark: | :white_check_mark: | :white_check_mark: | :white_check_mark: | :x: |
| Serial Number | :white_check_mark: | :white_check_mark: | :white_check_mark: | :white_check_mark: | :white_check_mark: | :white_check_mark: | :x: |
| Device Type | :white_check_mark: | :white_check_mark: | :white_check_mark: | :white_check_mark: | :white_check_mark: | :white_check_mark: | :x: |
| Mgmt Interface | :white_check_mark: | :white_check_mark: | :white_check_mark: | :white_check_mark: | :white_check_mark: | :white_check_mark: | :x: |
| Mgmt IP Address | :white_check_mark: | :white_check_mark: | :white_check_mark: | :white_check_mark: | :white_check_mark: | :white_check_mark: | :x: |

### Support Matrix (Sync Data From Network)

| Interfaces | Cisco IOS | Cisco XE | Cisco NXOS | Cisco WLC | Juniper Junos | Arista EOS | F5 |
| ----------------------- | :----------------: | :--------------: | :--------------: | :--------------: | :--------------: | :--------------: | :-: |
| Name | :white_check_mark: | :white_check_mark: | :white_check_mark: | :x: | :white_check_mark: | :white_check_mark: | :x: |
| IP Address | :white_check_mark: | :white_check_mark: | :white_check_mark: | :x: | :white_check_mark: | :white_check_mark: | :x: |
| Type | :white_check_mark: | :white_check_mark: | :white_check_mark: | :x: | :white_check_mark: | :white_check_mark: | :x: |
| MTU | :white_check_mark: | :white_check_mark: | :white_check_mark: | :x: | :white_check_mark: | :white_check_mark: | :x: |
| Description | :white_check_mark: | :white_check_mark: | :white_check_mark: | :x: | :white_check_mark: | :white_check_mark: | :x: |
| Mac Address | :white_check_mark: | :white_check_mark: | :white_check_mark: | :x: | :white_check_mark: | :white_check_mark: | :x: |
| Link Status | :white_check_mark: | :white_check_mark: | :white_check_mark: | :x: | :white_check_mark: | :white_check_mark: | :x: |
| 802.1Q mode | :white_check_mark: | :white_check_mark: | :white_check_mark: | :x: | :white_check_mark: | :white_check_mark: | :x: |
| Lag Member | :white_check_mark: | :white_check_mark: | :white_check_mark: | :x: | :white_check_mark: | :white_check_mark: | :x: |
| Vrf Membership | :white_check_mark: | :white_check_mark: | :white_check_mark: | :x: | :white_check_mark: | :white_check_mark: | :x: |

| VLANS | Cisco IOS | Cisco XE | Cisco NXOS | Cisco WLC | Juniper Junos | Arista EOS | F5 |
| ----------------------- | :----------------: | :--------------: | :--------------: | :--------------: | :--------------: | :--------------: | :-: |
| Untagged VLANs | :white_check_mark: | :white_check_mark: | :white_check_mark: | :x: | :white_check_mark: | :white_check_mark: | :x: |
| Tagged VLANs | :white_check_mark: | :white_check_mark: | :white_check_mark: | :x: | :white_check_mark: | :white_check_mark: | :x: |

| Cabling | Cisco IOS | Cisco XE | Cisco NXOS | Cisco WLC | Juniper Junos | Arista EOS | F5 |
| ----------------------- | :----------------: | :--------------: | :--------------: | :--------------: | :--------------: | :--------------: | :-: |
| Terminations A | :test_tube: | :test_tube: | :test_tube: | :x: | :test_tube: | :x: | :x: |
| Terminations B | :test_tube: | :test_tube: | :test_tube: | :x: | :test_tube: | :x: | :x: |

| Legend |
| :---- |
| :white_check_mark: - Supported and stable. |
| :x: - No current support. |
| :test_tube: - Supported, but has limited testing. |

### Screenshots

Device Onboarding is a Job that allows you to provide a few required pieces of information and onboard the device.

![job input](https://raw.githubusercontent.com/nautobot/nautobot-app-device-onboarding/develop/docs/images/do_job_inputs.png)
![job input](https://raw.githubusercontent.com/nautobot/nautobot-app-device-onboarding/develop/docs/images/sync_devices_inputs.png)

## Try it out!

Expand Down
File renamed without changes.
1 change: 0 additions & 1 deletion changes/151.changed

This file was deleted.

1 change: 0 additions & 1 deletion changes/167.housekeeping

This file was deleted.

1 change: 0 additions & 1 deletion changes/176.fixed

This file was deleted.

2 changes: 0 additions & 2 deletions changes/194.housekeeping

This file was deleted.

1 change: 0 additions & 1 deletion changes/8.housekeeping

This file was deleted.

6 changes: 3 additions & 3 deletions development/Dockerfile
Original file line number Diff line number Diff line change
Expand Up @@ -6,8 +6,8 @@
# -------------------------------------------------------------------------------------
# !!! USE CAUTION WHEN MODIFYING LINES BELOW

# Accepts a desired Nautobot version as build argument, default to 2.0.3
ARG NAUTOBOT_VER="2.0.3"
# Accepts a desired Nautobot version as build argument, default to 2.2.3
ARG NAUTOBOT_VER="2.2.3"

# Accepts a desired Python version as build argument, default to 3.11
ARG PYTHON_VER="3.11"
Expand All @@ -28,7 +28,7 @@ ENV INVOKE_NAUTOBOT_DEVICE_ONBOARDING_LOCAL=true
# Since this is only used for development and we don't ship this container, pinning Poetry back is not expressly necessary
# We also don't need virtual environments in container
RUN which poetry || curl -sSL https://install.python-poetry.org | python3 - && \
poetry config virtualenvs.create false
poetry config virtualenvs.create false

# !!! USE CAUTION WHEN MODIFYING LINES ABOVE
# -------------------------------------------------------------------------------------
Expand Down
Empty file modified development/app_config_schema.py
100644 → 100755
Empty file.
2 changes: 2 additions & 0 deletions development/development.env
Original file line number Diff line number Diff line change
Expand Up @@ -36,3 +36,5 @@ POSTGRES_DB=${NAUTOBOT_DB_NAME}
MYSQL_USER=${NAUTOBOT_DB_USER}
MYSQL_DATABASE=${NAUTOBOT_DB_NAME}
MYSQL_ROOT_HOST=%

NAUTOBOT_SSOT_HIDE_EXAMPLE_JOBS="True"
1 change: 0 additions & 1 deletion development/docker-compose.base.yml
Original file line number Diff line number Diff line change
Expand Up @@ -13,7 +13,6 @@ x-nautobot-base: &nautobot-base
- "creds.env"
tty: true

version: "3.8"
services:
nautobot:
depends_on:
Expand Down
1 change: 0 additions & 1 deletion development/docker-compose.dev.yml
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,6 @@
# any override will need to include these volumes to use them.
# see: https://github.com/docker/compose/issues/3729
---
version: "3.8"
services:
nautobot:
command: "nautobot-server runserver 0.0.0.0:8080"
Expand Down
2 changes: 0 additions & 2 deletions development/docker-compose.mysql.yml
Original file line number Diff line number Diff line change
@@ -1,6 +1,4 @@
---
version: "3.8"

services:
nautobot:
environment:
Expand Down
2 changes: 0 additions & 2 deletions development/docker-compose.postgres.yml
Original file line number Diff line number Diff line change
@@ -1,6 +1,4 @@
---
version: "3.8"

services:
nautobot:
environment:
Expand Down
1 change: 0 additions & 1 deletion development/docker-compose.redis.yml
Original file line number Diff line number Diff line change
@@ -1,5 +1,4 @@
---
version: "3.8"
services:
redis:
image: "redis:6-alpine"
Expand Down
29 changes: 20 additions & 9 deletions development/nautobot_config.py
Original file line number Diff line number Diff line change
Expand Up @@ -93,11 +93,11 @@
"disable_existing_loggers": False,
"formatters": {
"normal": {
"format": "%(asctime)s.%(msecs)03d %(levelname)-7s %(name)s : %(message)s",
"format": "%(asctime)s.%(msecs)03d %(levelname)-7s %(name)s :\n %(message)s",
"datefmt": "%H:%M:%S",
},
"verbose": {
"format": "%(asctime)s.%(msecs)03d %(levelname)-7s %(name)-20s %(filename)-15s %(funcName)30s() : %(message)s",
"format": "%(asctime)s.%(msecs)03d %(levelname)-7s %(name)-20s %(filename)-15s %(funcName)30s() :\n %(message)s",
"datefmt": "%H:%M:%S",
},
},
Expand Down Expand Up @@ -127,13 +127,24 @@
#

# Enable installed Apps. Add the name of each App to the list.
PLUGINS = ["nautobot_device_onboarding"]
PLUGINS = ["nautobot_device_onboarding", "nautobot_ssot", "nautobot_plugin_nornir"]

# Apps configuration settings. These settings are used by various Apps that the user may have installed.
# Each key in the dictionary is the name of an installed App and its value is a dictionary of settings.
# PLUGINS_CONFIG = {
# 'nautobot_device_onboarding': {
# 'foo': 'bar',
# 'buzz': 'bazz'
# }
# }
PLUGINS_CONFIG = {
"nautobot_device_onboarding": {},
"nautobot_ssot": {
"hide_example_jobs": is_truthy(os.getenv("NAUTOBOT_SSOT_HIDE_EXAMPLE_JOBS")),
},
"nautobot_plugin_nornir": {
"nornir_settings": {
"credentials": "nautobot_plugin_nornir.plugins.credentials.nautobot_secrets.CredentialsNautobotSecrets",
"runner": {
"plugin": "threaded",
"options": {
"num_workers": 20,
},
},
},
},
}
1 change: 1 addition & 0 deletions docs/admin/compatibility_matrix.md
Original file line number Diff line number Diff line change
Expand Up @@ -7,3 +7,4 @@
| 1.2.0 | 1.4.0 | 1.99 |
| 2.0.0 | 2.0.0 | 2.99 |
| 3.0.0 | 2.0.3 | 2.99 |
| 4.0.0 | 2.2.3 | 2.99 |
41 changes: 27 additions & 14 deletions docs/admin/install.md
Original file line number Diff line number Diff line change
Expand Up @@ -10,25 +10,22 @@ Here you will find detailed instructions on how to **install** and **configure**
!!! note
Please check the [dedicated page](compatibility_matrix.md) for a full compatibility matrix and the deprecation policy.

### Access Requirements
### Application Dependencies

#### NAPALM Credentials
Device onboarding 4.0 added two additional application dependencies.

The Onboarding App uses NAPALM. You can configure a default NAPALM username and password in `nautobot_config.py`.
- [nautobot_ssot](https://docs.nautobot.com/projects/ssot/en/latest/)
- [nautobot_plugin_nornir](https://docs.nautobot.com/projects/plugin-nornir/en/latest/)

When `NAPALM_USERNAME`, `NAPALM_PASSWORD` and `NAPALM_ARGS` are configured in `nautobot_config.py`, the user does not have to use the Credentials/SecretGroup fields in the Device Onboarding job, unless they wish to override the values in `nautobot_config.py`:
### Access Requirements

```python
# Credentials that Nautobot will use to authenticate to devices when connecting via NAPALM.
NAPALM_USERNAME = "<napalm username>"
NAPALM_PASSWORD = "<napalm pwd>"
NAPALM_ARGS = {"secret": "<enable secret pwd>"}
```
- The original OnboardingTask Job used NAPALM Credentials.
- The new SSoT based jobs use Nautobot Secrets in a similar method to other apps. This is a more flexible and supportable way for the future.

## Install Guide

!!! note
Apps can be installed from the [Python Package Index](https://pypi.org/) or locally. See the [Nautobot documentation](https://docs.nautobot.com/projects/core/en/stable/user-guide/administration/installation/app-install/) for more details. The pip package name for this app is [`nautobot-device-onboarding`](https://pypi.org/project/nautobot-device-onboarding/).
Apps can be installed manually or using Python's `pip`. See the [nautobot documentation](https://nautobot.readthedocs.io/en/latest/plugins/#install-the-package) for more details. The pip package name for this app is [`nautobot-device-onboarding`](https://pypi.org/project/nautobot-device-onboarding/).

The app is available as a Python package via PyPI and can be installed with `pip`:

Expand All @@ -49,7 +46,7 @@ Once installed, the app needs to be enabled in your Nautobot configuration. The

```python
# In your nautobot_config.py
PLUGINS = ["nautobot_device_onboarding"]
PLUGINS = ["nautobot_plugin_nornir", "nautobot_ssot", "nautobot_device_onboarding"]

# PLUGINS_CONFIG = {
# "nautobot_device_onboarding": {
Expand All @@ -58,6 +55,22 @@ PLUGINS = ["nautobot_device_onboarding"]
# }
```

For the `Sync Data from Network` job to work the below must be added to the `PLUGINS_CONFIG`.

```python
"nautobot_plugin_nornir": {
"nornir_settings": {
"credentials": "nautobot_plugin_nornir.plugins.credentials.nautobot_secrets.CredentialsNautobotSecrets",
"runner": {
"plugin": "threaded",
"options": {
"num_workers": 20,
},
},
},
},
```

Once the Nautobot configuration is updated, run the Post Upgrade command (`nautobot-server post_upgrade`) to run migrations and clear any cache:

```shell
Expand All @@ -74,14 +87,14 @@ Then restart (if necessary) the Nautobot services which may include:
sudo systemctl restart nautobot nautobot-worker nautobot-scheduler
```

## App Configuration
## App Configuration (Original)

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`:

- `create_platform_if_missing` boolean (default True). If True, a new platform object will be created if the platform discovered by netmiko do not already exist and is in the list of supported platforms (`cisco_ios`, `cisco_nxos`, `arista_eos`, `juniper_junos`, `cisco_xr`)
- `create_device_type_if_missing` boolean (default True), If True, a new device type object will be created if the model discovered by Napalm do not match an existing device type.
- `create_manufacturer_if_missing` boolean (default True), If True, a new manufacturer object will be created if the manufacturer discovered by Napalm is do not match an existing manufacturer, this option is only valid if `create_device_type_if_missing` is True as well.
- `create_device_role_if_missing` boolean (default True), If True, a new device role object will be created if the device role provided was not provided as part of the onboarding and if the `default_device_role` do not already exist.
- `create_device_role_if_missing` boolean (default True), If True, a new device role object will be created if the device role provided was not provided as part of the onboarding and if the `default_device_role` does not already exist.
- `create_management_interface_if_missing` boolean (default True), If True, add management interface and IP address to the device. If False no management interfaces will be created, nor will the IP address be added to Nautobot, while the device will still get added.
- `default_device_status` string (default "Active"), status assigned to a new device by default.
- `default_ip_status` string (default "Active"), status assigned to a new device management IP.
Expand Down
27 changes: 27 additions & 0 deletions docs/admin/release_notes/version_4.0.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,27 @@
# v4.0 Release Notes

!!! warning
Nautobot Device Onboarding v4.0.0 completely revamps the applications design and framework. The original `OnboardingTask` job is still packaged with the app to provide a backwards compatible way for users that have used its extensions framework in the past to solve complex problems. However, that job is now hidden by default to avoid confusion with the two new SSoT based onboarding jobs that v4.0.0 exposes.

## [v4.0.0 (2024-08-05)](https://github.com/nautobot/nautobot-app-device-onboarding/releases/tag/v4.0.0)

### Added

- [#181](https://github.com/nautobot/nautobot-app-device-onboarding/issues/181) - Sync Devices from Network job was added which utilizes the SSoT framework to onboard devices.
- [#181](https://github.com/nautobot/nautobot-app-device-onboarding/issues/181) - Sync Data from Network job was added which utilizes the SSoT framework to onboard devices.
- [#181](https://github.com/nautobot/nautobot-app-device-onboarding/issues/181) - Git Datasource object to be able to use a Git Repo to overload new SSoT job YAML file definitions.
- [#181](https://github.com/nautobot/nautobot-app-device-onboarding/issues/181) - Create a Nornir inventory `EmptyInventory` to support ondemand inventory population for `Sync Devices` job.
- [#181](https://github.com/nautobot/nautobot-app-device-onboarding/issues/181) - Add `nautobot-app-nornir` dependency to reuse `NautobotORMInventory` to support inventory creation for `Sync Data` job.
- [#201](https://github.com/nautobot/nautobot-app-device-onboarding/issues/201) - - Add ability to sync in cables for cisco ios,nxos and Juniper via neighbor discovery protocol commands.

### Changed

- [#151](https://github.com/nautobot/nautobot-app-device-onboarding/issues/151) - Replaced pydocstyle with ruff.
- [#181](https://github.com/nautobot/nautobot-app-device-onboarding/issues/181) - The `OnboardingTask` job is changed to `hidden` by default.

### Housekeeping

- [#167](https://github.com/nautobot/nautobot-app-device-onboarding/issues/167) - Re-baked from the template `nautobot-app-v2.2.1`.
- [#194](https://github.com/nautobot/nautobot-app-device-onboarding/issues/194) - - Add @housebpass to Codeowners
- [#194](https://github.com/nautobot/nautobot-app-device-onboarding/issues/194) - - Add ntc-templates to new issue template
- [#203](https://github.com/nautobot/nautobot-app-device-onboarding/issues/203) - - Add compatibility matrix for what platforms support which data fields to sync.
9 changes: 9 additions & 0 deletions docs/dev/arch_decision.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,9 @@
# Architecture Decision Records

The intention is to document deviations from a standard Model View Controller (MVC) design. And other general Application decisions.

## Handling the Nornir Inventory

In order for Nornir to function an inventory is created. There are multiple supported inventory sources that fit many needs; however there is a unique requirement that this plugin is trying to solve. The problem is specifically around the first SSoT job (Sync Devices from Network); how can we create an inventory when there is no source "yet"? Our solution to this problem is to generate a empty inventory, and then process the ip addresses from the job form to create a inventory in an on demand fashion and inject the credentials into the inventory based on the secrets group selected.

For the general application constraint for this ADR see the [Credentials Section](../user/app_getting_started.md#device-credentials-functionality).
Loading
Loading