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

Release v3.4.0 #655

Merged
merged 118 commits into from
Jan 14, 2025
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
118 commits
Select commit Hold shift + click to select a range
2c88ac2
build: Bump prepatch
jdrew82 Dec 6, 2024
d9b70e5
fix: 🐛 fix ASN update on location objects
bile0026 Dec 7, 2024
695a496
fix: 🐛 fix documentation to include information on data handling
bile0026 Dec 7, 2024
9ebb26f
Merge pull request #622 from nautobot/bootstrap_fix_621
jdrew82 Dec 7, 2024
dfe4a2e
swaps out deprecated PluginTemplateExtension class
Kircheneer Dec 9, 2024
9fe8877
Merge pull request #620 from nautobot/main-to-develop-3.3.0
jdrew82 Dec 10, 2024
5a6859b
fix: 🐛 Fixed Floors using updated Building name even when name key is…
jdrew82 Dec 10, 2024
d27068b
Merge pull request #625 from nautobot/patch-624-floor-locations-dont-…
jdrew82 Dec 11, 2024
a53b676
fix: 🐛 Fix SoftwareVersion assignment during Device update.
jdrew82 Dec 11, 2024
409bafb
SolarWinds SSoT Integration
nopg Dec 12, 2024
a548953
update fragment file names
nopg Dec 12, 2024
7b7396e
poetry.lock update
nopg Dec 12, 2024
40beb51
Merge pull request #627 from nautobot/patch-626_software_version_update
jdrew82 Dec 13, 2024
1aabaa8
feat: ✨ start adding LibreNMS Integration with Locations and Devices …
bile0026 Dec 13, 2024
d7fbf5c
Merge branch 'develop' of https://github.com/nautobot/nautobot-app-ss…
bile0026 Dec 13, 2024
a6cd4e9
refactor: 🔥 remove extra files
bile0026 Dec 13, 2024
c81755e
fix: 🐛 add check for tests
bile0026 Dec 13, 2024
143ca45
fix: 🐛 fix load_type reference
bile0026 Dec 13, 2024
bad8734
style: 🎨 formatting fixes
bile0026 Dec 13, 2024
8af2122
style: 🎨 more reformatting
bile0026 Dec 13, 2024
260e5db
chore: 🏗️ add change fragment
bile0026 Dec 13, 2024
bc5b32e
docs: 📝 Add initial documentation for new integration
bile0026 Dec 13, 2024
6ce00cc
docs: 📝 add librenms to menu
bile0026 Dec 13, 2024
5949b2f
feat: ✨ add flag to sync parent locations or not
bile0026 Dec 16, 2024
83888bb
docs: 📝 update docs
bile0026 Dec 16, 2024
466b07f
Fixes issue #634
Dec 17, 2024
6a2cd6a
fix: 🐛 fix location sync, remove geocode api for now
bile0026 Dec 18, 2024
73cb825
style: 🎨 fix formatting
bile0026 Dec 18, 2024
40b98df
test: ✅ add librenms adapter tests
bile0026 Dec 18, 2024
3818395
fix: 🔥 remove geocode api
bile0026 Dec 18, 2024
f255eb3
chore: 🎨 formatting fixes
bile0026 Dec 18, 2024
40eecb6
test: ✅ add test for nautobot adapter
bile0026 Dec 19, 2024
18092c6
fix: 🎨 fix linting issues
bile0026 Dec 19, 2024
fe0ed20
chore: ✅ fix adapter tests
bile0026 Dec 19, 2024
3d399c1
feat: ✨ add tenant filter for multiple librenms instance sync and dev…
bile0026 Dec 19, 2024
187dd48
fix documentation
Dec 19, 2024
b100024
fix: 🐛 fix tenant filtering
bile0026 Dec 19, 2024
7320b04
docs: 📝 update docs
bile0026 Dec 19, 2024
69a2733
fix: 🐛 adjust tenant references
bile0026 Dec 19, 2024
4172a54
fix: ✅ update tests
bile0026 Dec 19, 2024
f3573c1
fix: 🐛 revert unintentional change
bile0026 Dec 19, 2024
6f7db5e
fix: 🐛 tweak device loading and creation in nautobot
bile0026 Dec 19, 2024
f29db14
fix: 🐛 fix manufacturer reference
bile0026 Dec 19, 2024
436b504
Merge pull request #637 from michalis1/mm/fix-issue-634
Kircheneer Dec 20, 2024
48008e1
fix: 🐛 fix imports for ipam models
bile0026 Jan 6, 2025
44eea95
fix: 📝 add change fragment
bile0026 Jan 6, 2025
96b3b2d
style: 🎨 fix formatting
bile0026 Jan 6, 2025
d2001ae
fix: 👷 test pinning poetry version
bile0026 Jan 6, 2025
8e50a86
fix: 👷 test another fix
bile0026 Jan 6, 2025
9980210
ci: 👷 use suggested update to CI
bile0026 Jan 6, 2025
cd9ce65
Cookie updated by NetworkToCode Cookie Drift Manager Tool
Jan 7, 2025
58f2f84
test: ✅ Tweak creation of Prefix to account for bug in stable.
jdrew82 Jan 7, 2025
668308c
Merge pull request #642 from nautobot/bootstrap_fix_imports
bile0026 Jan 7, 2025
55ccf0a
feat: ✨ Add ability to rename Area if name key found and Building key…
jdrew82 Dec 13, 2024
6bc3b28
refactor: ♻️ Extract determination of device role into own function.
jdrew82 Dec 13, 2024
d7f3c4f
refactor: ♻️ Refactor build_dnac_location_map to integrate Job locati…
jdrew82 Dec 17, 2024
da5a089
test: ✅ Update tests to adjust for refactor of build_dnac_location_map
jdrew82 Dec 17, 2024
040db06
refactor: ♻️ Refactor Device platform determination into own function.
jdrew82 Dec 17, 2024
738fcf6
refactor: ♻️ Update loading of areas, buildings, and floors to be don…
jdrew82 Dec 17, 2024
7596067
test: ✅ Add a test validating load_device_location_tree() when a floo…
jdrew82 Dec 17, 2024
1dd3c51
test: ✅ Add a test fixture for the expected building_map to use with …
jdrew82 Dec 17, 2024
e3eba4a
fix: 🐛 Have parent_of_parent for a Building passed to the function to…
jdrew82 Dec 18, 2024
8c896a5
style: 🧑‍💻 Add debug logging for DNAC location map
jdrew82 Dec 18, 2024
5a4adbf
refactor: ♻️ Remove area_parent None for load_area as it's unneeded.
jdrew82 Dec 18, 2024
e2a10aa
fix: 🐛 Only update name for Floor to include Building name if it's no…
jdrew82 Dec 18, 2024
5049675
test: ✅ Add tests validating load_device_location_tree() with and wit…
jdrew82 Dec 18, 2024
f2a5e8d
fix: 🐛 Update floor name when loading a Device to consider if Buildin…
jdrew82 Dec 18, 2024
5a3ba52
fix: 🐛 Use dnac_location_map for Floor area_name instead of name from…
jdrew82 Dec 18, 2024
d30e2e7
style: 📝 Tweak logging to include area and area parent names.
jdrew82 Dec 18, 2024
c522aa0
refactor: ♻️ Update floors in dnac_location_map to have parent_of_par…
jdrew82 Dec 18, 2024
023de58
refactor: ♻️ Change update of parent and parent_of_parent to happen f…
jdrew82 Dec 19, 2024
8fce370
fix: 🐛 Update parent_of_parent for building if parent on parent is fo…
jdrew82 Dec 19, 2024
5992cfb
fix: 🐛 Refactor loading of DNAC location_map to set defaults and then…
jdrew82 Dec 20, 2024
907124d
test: ✅ Update test to account for change to function
jdrew82 Dec 20, 2024
24814e4
test: 🚨 Add ignore for pylint
jdrew82 Dec 20, 2024
df85eb7
fix: 🐛 Add check for parent_id existing in dnac_location_map
jdrew82 Dec 21, 2024
77309af
fix: 🐛 Check for area_id in location_map before using
jdrew82 Dec 21, 2024
0659e07
test: ✅ Add test fixture for expected locations without Global and up…
jdrew82 Dec 21, 2024
78d5d98
fix: 🐛 Update building name to pull from dnac_location_map
jdrew82 Dec 21, 2024
cd4981e
test: ✅ Update tests to add missing pieces like id key
jdrew82 Dec 21, 2024
314f479
refactor: ♻️ Simplify building of dnac_location_map.
jdrew82 Dec 22, 2024
fa42e21
docs: 📝 Add changelog snippet
jdrew82 Jan 7, 2025
9cbee68
fix: 🐛 Add function to find closer parent for IPAddress once both are…
jdrew82 Jan 8, 2025
49c5467
docs: 📝 Add changelog fragment
jdrew82 Jan 8, 2025
6ab2167
fix: 🐛 Correct check to use host address from loaded address and remo…
jdrew82 Jan 8, 2025
b55043c
Merge pull request #645 from nautobot/patch-635-dna-center-integratio…
jdrew82 Jan 8, 2025
803698c
fix: 🐛 Add check that prefixes being checked are both IPv4 or IPv6
jdrew82 Jan 8, 2025
60cba0a
refactor: ♻️ Change IPAddress parent to use identifier instead of query.
jdrew82 Jan 8, 2025
c3a9272
Merge pull request #647 from nautobot/patch-adm_ip_parent_bug
jdrew82 Jan 8, 2025
44c2436
docs update
nopg Jan 8, 2025
ad056d4
Finalize Drift Manager changes.
smk4664 Jan 8, 2025
12b09ad
update CODEOWNERS for solarwinds
nopg Jan 8, 2025
682f480
correct alphabetization in docs
nopg Jan 9, 2025
9248568
Merge pull request #631 from nautobot/u/nopg/solarwinds-integration
jdrew82 Jan 9, 2025
e84a703
fix: 🐛 Add check for ValidatedSoftware being used with SoftwareVersio…
jdrew82 Jan 9, 2025
4fe6ec9
docs: 📝 Add changelog fragment
jdrew82 Jan 9, 2025
2fb379d
Merge branch 'develop' into drift-manager/pr
smk4664 Jan 9, 2025
5744ce6
Apply Peer suggestions.
smk4664 Jan 9, 2025
efd1e50
fix: 🐛 Replicate check for ValidatedSoftware used with SoftwareVersio…
jdrew82 Jan 9, 2025
2356a43
fix: 🐛 Fix Device floor name being incorrectly set to include Buildin…
jdrew82 Jan 9, 2025
869cf7f
Merge pull request #649 from nautobot/patch-648-citrix-adm-removes-so…
jdrew82 Jan 9, 2025
e3f5637
Merge branch 'develop' into drift-manager/pr
smk4664 Jan 9, 2025
234a0b8
chore: 📝 add codeowner for librenms intergration
bile0026 Jan 10, 2025
4193e9f
docs: 📝 update docs
bile0026 Jan 10, 2025
a240aff
fix: 🐛 implement suggested edits from code review
bile0026 Jan 10, 2025
923a09e
Merge branch 'develop' into integration_librenms
bile0026 Jan 10, 2025
43e9349
fix: 🐛 update manufacturer mapping to include all currently supported…
bile0026 Jan 10, 2025
6e0a901
refactor: ♻️ refactor tests per review suggestions
bile0026 Jan 11, 2025
49bdaeb
style: 🎨 fix ruff errors
bile0026 Jan 11, 2025
4c77dd6
test: ✅ add and update tests
bile0026 Jan 13, 2025
ace735a
revert: 🔥 remove unecessary test
bile0026 Jan 13, 2025
dbb167a
Merge pull request #644 from nautobot/drift-manager/pr
jdrew82 Jan 14, 2025
4476f07
Merge pull request #636 from nautobot/integration_librenms
jdrew82 Jan 14, 2025
3830e83
Merge pull request #652 from nautobot/patch-fix_floor_names
jdrew82 Jan 14, 2025
82fdfac
fix: 🐛 Correct LocationType used in ACI CRUD operations to use Job de…
jdrew82 Jan 14, 2025
df612c6
Merge pull request #653 from nautobot/patch-597-aci-sync-fails-if-loc…
jdrew82 Jan 14, 2025
79490c8
docs: 📝 Generate release notes for 3.4.0
jdrew82 Jan 14, 2025
f5400a7
build: 🔖 Bump to 3.4.0
jdrew82 Jan 14, 2025
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 .cookiecutter.json
Original file line number Diff line number Diff line change
Expand Up @@ -21,7 +21,7 @@
"_drift_manager": {
"template": "https://github.com/nautobot/cookiecutter-nautobot-app.git",
"template_dir": "nautobot-app",
"template_ref": "refs/tags/nautobot-app-v2.4.0",
"template_ref": "refs/tags/nautobot-app-v2.4.1",
"cookie_dir": "",
"branch_prefix": "drift-manager",
"pull_request_strategy": "create",
Expand All @@ -30,7 +30,7 @@
"poetry"
],
"draft": false,
"baked_commit_ref": "671ef8a64a7bc40e991ade1dd64560d734f122bc"
"baked_commit_ref": "1c99457b09d05553ef7193e0dda021b2d1caa407"
}
}
}
Expand Down
3 changes: 3 additions & 0 deletions .github/CODEOWNERS
Original file line number Diff line number Diff line change
Expand Up @@ -9,6 +9,9 @@
/nautobot_ssot/integrations/infoblox/ @qduk @jdrew82 @nautobot/plugin-ssot
/nautobot_ssot/integrations/ipfabric/ @alhogan @nautobot/plugin-ssot
/nautobot_ssot/integrations/itential/ @jtdub @nautobot/plugin-ssot
/nautobot_ssot/integrations/librenms/ @bile0026 @nautobot/plugin-ssot
/nautobot_ssot/integrations/meraki/ @jdrew82 @nautobot/plugin-ssot
/nautobot_ssot/integrations/servicenow/ @glennmatthews @qduk @nautobot/plugin-ssot
/nautobot_ssot/integrations/slurpit/ @lpconsulting321 @pietos @nautobot/plugin-ssot
/nautobot_ssot/integrations/solarwinds/ @jdrew82 @nopg @nautobot/plugin-ssot

16 changes: 16 additions & 0 deletions .github/workflows/ci.yml
Original file line number Diff line number Diff line change
Expand Up @@ -25,6 +25,8 @@ jobs:
uses: "actions/checkout@v4"
- name: "Setup environment"
uses: "networktocode/gh-action-setup-poetry-environment@v6"
with:
poetry-version: "1.8.5"
- name: "Linting: ruff format"
run: "poetry run invoke ruff --action format"
ruff-lint:
Expand All @@ -36,6 +38,8 @@ jobs:
uses: "actions/checkout@v4"
- name: "Setup environment"
uses: "networktocode/gh-action-setup-poetry-environment@v6"
with:
poetry-version: "1.8.5"
- name: "Linting: ruff"
run: "poetry run invoke ruff --action lint"
check-docs-build:
Expand All @@ -47,6 +51,8 @@ jobs:
uses: "actions/checkout@v4"
- name: "Setup environment"
uses: "networktocode/gh-action-setup-poetry-environment@v6"
with:
poetry-version: "1.8.5"
- name: "Check Docs Build"
run: "poetry run invoke build-and-check-docs"
poetry:
Expand All @@ -58,6 +64,8 @@ jobs:
uses: "actions/checkout@v4"
- name: "Setup environment"
uses: "networktocode/gh-action-setup-poetry-environment@v6"
with:
poetry-version: "1.8.5"
- name: "Checking: poetry lock file"
run: "poetry run invoke lock --check"
yamllint:
Expand All @@ -69,6 +77,8 @@ jobs:
uses: "actions/checkout@v4"
- name: "Setup environment"
uses: "networktocode/gh-action-setup-poetry-environment@v6"
with:
poetry-version: "1.8.5"
- name: "Linting: yamllint"
run: "poetry run invoke yamllint"
check-in-docker:
Expand All @@ -91,6 +101,8 @@ jobs:
uses: "actions/checkout@v4"
- name: "Setup environment"
uses: "networktocode/gh-action-setup-poetry-environment@v6"
with:
poetry-version: "1.8.5"
- name: "Constrain Nautobot version and regenerate lock file"
env:
INVOKE_NAUTOBOT_SSOT_LOCAL: "true"
Expand Down Expand Up @@ -146,6 +158,8 @@ jobs:
uses: "actions/checkout@v4"
- name: "Setup environment"
uses: "networktocode/gh-action-setup-poetry-environment@v6"
with:
poetry-version: "1.8.5"
- name: "Constrain Nautobot version and regenerate lock file"
env:
INVOKE_NAUTOBOT_SSOT_LOCAL: "true"
Expand Down Expand Up @@ -187,6 +201,8 @@ jobs:
fetch-depth: "0"
- name: "Setup environment"
uses: "networktocode/gh-action-setup-poetry-environment@v6"
with:
poetry-version: "1.8.5"
- name: "Check for changelog entry"
run: |
git fetch --no-tags origin +refs/heads/${{ github.base_ref }}:refs/remotes/origin/${{ github.base_ref }}
Expand Down
2 changes: 1 addition & 1 deletion LICENSE
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
Apache Software License 2.0

Copyright (c) 2024, Network to Code, LLC
Copyright (c) 2025, Network to Code, LLC

Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
Expand Down
4 changes: 4 additions & 0 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -35,9 +35,11 @@ This Nautobot application framework includes the following integrations:
- Infoblox
- IPFabric
- Itential
- LibreNMS
- Cisco Meraki
- ServiceNow
- Slurpit
- SolarWinds

Read more about integrations [here](https://docs.nautobot.com/projects/ssot/en/latest/user/integrations). To enable and configure integrations follow the instructions from [the install guide](https://docs.nautobot.com/projects/ssot/en/latest/admin/install/#integrations-configuration).

Expand Down Expand Up @@ -92,9 +94,11 @@ The SSoT framework includes a number of integrations with external Systems of Re
* Cisco DNA Center
* Infoblox
* Itential
* LibreNMS
* Cisco Meraki
* ServiceNow
* Slurpit
* SolarWinds

> Note that the Arista CloudVision integration is currently incompatible with the [Arista Labs](https://labs.arista.com/) environment due to a TLS issue. It has been confirmed to work in on-prem environments previously.

Expand Down
3 changes: 3 additions & 0 deletions development/creds.example.env
Original file line number Diff line number Diff line change
Expand Up @@ -36,6 +36,9 @@ NAUTOBOT_SSOT_CITRIX_ADM_PASSWORD="changeme"

NAUTOBOT_SSOT_INFOBLOX_PASSWORD="changeme"

NAUTOBOT_SSOT_SOLARWINDS_USERNAME="admin"
NAUTOBOT_SSOT_SOLARWINDS_PASSWORD="changeme"

# ACI Credentials. Append friendly name to the end to identify each APIC.
NAUTOBOT_APIC_BASE_URI_NTC=https://aci.cloud.networktocode.com
NAUTOBOT_APIC_USERNAME_NTC=admin
Expand Down
10 changes: 9 additions & 1 deletion development/development.env
Original file line number Diff line number Diff line change
Expand Up @@ -115,4 +115,12 @@ IPFABRIC_TIMEOUT=15
NAUTOBOT_SSOT_ENABLE_ITENTIAL="True"

NAUTOBOT_SSOT_ENABLE_SLURPIT="False"
SLURPIT_HOST="https://sandbox.slurpit.io"
SLURPIT_HOST="https://sandbox.slurpit.io"


NAUTOBOT_SSOT_ENABLE_LIBRENMS="False"
NAUTOBOT_SSOT_LIBRENMS_SYSTEM_OF_RECORD="LibreNMS"
NAUTOBOT_SSOT_LIBRENMS_HOSTNAME_FIELD="sysName" # hostname or sysName

NAUTOBOT_SSOT_ENABLE_SOLARWINDS="False"

6 changes: 4 additions & 2 deletions development/docker-compose.dev.yml
Original file line number Diff line number Diff line change
Expand Up @@ -45,10 +45,12 @@ services:
volumes:
- "./nautobot_config.py:/opt/nautobot/nautobot_config.py"
- "../:/source"
# To expose postgres or redis to the host uncomment the following
# postgres:
# To expose postgres (5432), myql (3306) on db service or redis (6379) to the host uncomment the
# following. Ensure to match the 2 idented spaces which to have the service nested under services.
# db:
# ports:
# - "5432:5432"
# - "3306:3306"
# redis:
# ports:
# - "6379:6379"
7 changes: 7 additions & 0 deletions development/docker-compose.mysql.yml
Original file line number Diff line number Diff line change
Expand Up @@ -14,6 +14,13 @@ services:
- "development.env"
- "creds.env"
- "development_mysql.env"
beat:
environment:
- "NAUTOBOT_DB_ENGINE=django.db.backends.mysql"
env_file:
- "development.env"
- "creds.env"
- "development_mysql.env"
db:
image: "mysql:8"
command:
Expand Down
16 changes: 5 additions & 11 deletions development/nautobot_config.py
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,7 @@
import sys

from nautobot.core.settings import * # noqa: F403 # pylint: disable=wildcard-import,unused-wildcard-import
from nautobot.core.settings_funcs import is_truthy, parse_redis_connection
from nautobot.core.settings_funcs import is_truthy

#
# Debug
Expand Down Expand Up @@ -65,16 +65,8 @@
#

# The django-redis cache is used to establish concurrent locks using Redis.
CACHES = {
"default": {
"BACKEND": "django_redis.cache.RedisCache",
"LOCATION": parse_redis_connection(redis_database=0),
"TIMEOUT": 300,
"OPTIONS": {
"CLIENT_CLASS": "django_redis.client.DefaultClient",
},
}
}
# Inherited from nautobot.core.settings
# CACHES = {....}

#
# Celery settings are not defined here because they can be overloaded with
Expand Down Expand Up @@ -229,9 +221,11 @@
"enable_infoblox": is_truthy(os.getenv("NAUTOBOT_SSOT_ENABLE_INFOBLOX")),
"enable_ipfabric": is_truthy(os.getenv("NAUTOBOT_SSOT_ENABLE_IPFABRIC")),
"enable_itential": is_truthy(os.getenv("NAUTOBOT_SSOT_ENABLE_ITENTIAL")),
"enable_librenms": is_truthy(os.getenv("NAUTOBOT_SSOT_ENABLE_LIBRENMS", "false")),
"enable_meraki": is_truthy(os.getenv("NAUTOBOT_SSOT_ENABLE_MERAKI")),
"enable_servicenow": is_truthy(os.getenv("NAUTOBOT_SSOT_ENABLE_SERVICENOW")),
"enable_slurpit": is_truthy(os.getenv("NAUTOBOT_SSOT_ENABLE_SLURPIT")),
"enable_solarwinds": is_truthy(os.getenv("NAUTOBOT_SSOT_ENABLE_SOLARWINDS")),
"hide_example_jobs": is_truthy(os.getenv("NAUTOBOT_SSOT_HIDE_EXAMPLE_JOBS")),
"device42_defaults": {
"site_status": "Active",
Expand Down
2 changes: 2 additions & 0 deletions docs/admin/install.md
Original file line number Diff line number Diff line change
Expand Up @@ -97,6 +97,8 @@ Set up each integration using the specific guides:
- [Infoblox](./integrations/infoblox_setup.md)
- [IPFabric](./integrations/ipfabric_setup.md)
- [Itential](./integrations/itential_setup.md)
- [LibreNMS](./integrations/librenms_setup.md)
- [Cisco Meraki](./integrations/meraki_setup.md)
- [ServiceNow](./integrations/servicenow_setup.md)
- [Slurpit](./integrations/slurpit_setup.md)
- [SolarWinds](./integrations/solarwinds_setup.md)
2 changes: 2 additions & 0 deletions docs/admin/integrations/index.md
Original file line number Diff line number Diff line change
Expand Up @@ -11,6 +11,8 @@ This Nautobot app supports the following integrations:
- [Infoblox](./infoblox_setup.md)
- [IPFabric](./ipfabric_setup.md)
- [Itential](./itential_setup.md)
- [LibreNMS](./librenms_setup.md)
- [Cisco Meraki](./meraki_setup.md)
- [ServiceNow](./servicenow_setup.md)
- [Slurpit](./slurpit_setup.md)
- [SolarWinds](./solarwinds_setup.md)
46 changes: 46 additions & 0 deletions docs/admin/integrations/librenms_setup.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,46 @@
# LibreNMS

## Description

This App will sync data from the LibreNMS API into Nautobot to create Device and IPAM inventory items. Most items will receive a custom field associated with them called "System of Record", which will be set to "LibreNMS" (or whatever you set the `NAUTOBOT_SSOT_LIBRENMS_SYSTEM_OF_RECORD` environment variable to). These items are then the only ones managed by the LibreNMS SSoT App. Other items within the Nautobot instance will not be affected unless there's items with overlapping names. If an item exists in Nautobot by it's identifiers but it does not have the "System of Record" custom field on it, the item will be updated with "LibreNMS" (or `NAUTOBOT_SSOT_LIBRENMS_SYSTEM_OF_RECORD` environment variable value) when the App runs. This way no duplicates are created, and the App will not delete any items that are not defined in the LibreNMS API data but were manually created in Nautobot.

## Installation

Before configuring the integration, please ensure, that `nautobot-ssot` app was [installed with LibreNMS integration extra dependencies](../install.md#install-guide).

```shell
pip install nautobot-ssot[librenms]
```

## Configuration

Once the SSoT package has been installed you simply need to enable the integration by setting `enable_librenms` to True.

```python
PLUGINS = ["nautobot_ssot"]

PLUGINS_CONFIG = {
"nautobot_ssot": {
# Other nautobot_ssot settings ommitted.
"enable_librenms": is_truthy(os.getenv("NAUTOBOT_SSOT_ENABLE_LIBRENMS", "true")),
}
}
```

### External Integrations

#### LibreNMS as DataSource

The way you add your LibreNMS server instance is through the "External Integrations" objects in Nautobot. First, create a secret in Nautobot with your LibreNMS API token using an Environment Variable (or sync via secrets provider). Then create a SecretsGroup object and select the Secret you just created and set the Access Type to `HTTP(S)` and the Secret Type to `Token`.

Once this is created, go into the Extensibility Menu and select `External Integrations`. Add an External Intergration with the Remote URL being your LibreNMS server URL (including http(s)://), set the method to `GET`, and select any other headers/settings you might need for your specific instance. Select the secrets group you created as this will inject the API token. Once created, you will select this External Integration when you run the LibreNMS to Nautobot SSoT job.

![LibreNMS External Integration](../../images/librenms-external-integration.png)

#### LibreNMS as DataTarget

NotYetImplemented

### LibreNMS API

An API key with global read-only permissions is the minimum needed to sync information from LibreNMS.
25 changes: 25 additions & 0 deletions docs/admin/integrations/solarwinds_setup.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,25 @@
# SolarWinds Integration Setup

This guide will walk you through steps to set up the SolarWinds integration with the `nautobot_ssot` app.

## Prerequisites

Before configuring the integration, please ensure, that `nautobot-ssot` app was [installed with the SolarWinds integration extra dependencies](../install.md#install-guide).

```shell
pip install nautobot-ssot[solarwinds]
```

## Configuration

Access to your SolarWinds instance is defined using the [ExternalIntegration](https://docs.nautobot.com/projects/core/en/stable/user-guide/platform-functionality/externalintegration/) model which allows you to utilize this integration with multiple instances concurrently. Please bear in mind that it will synchronize all data 1:1 with the specified instance to match exactly, meaning it will delete data missing from an instance. Each ExternalIntegration must specify a SecretsGroup with [Secrets](https://docs.nautobot.com/projects/core/en/stable/user-guide/platform-functionality/secret/) that contain the SolarWinds administrator Username and Password to authenticate with. You can find Secrets and SecretsGroups available under the Secrets menu.

Below is an example snippet from `nautobot_config.py` that demonstrates how to enable the SolarWinds integration:

```python
PLUGINS_CONFIG = {
"nautobot_ssot": {
"enable_solarwinds": is_truthy(os.getenv("NAUTOBOT_SSOT_ENABLE_SOLARWINDS", "true")),
}
}
```
39 changes: 39 additions & 0 deletions docs/admin/release_notes/version_3.4.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,39 @@

# v3.4 Release Notes

This document describes all new features and changes in the release. The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/) and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html).

## Release Overview

This release adds two new integrations to the project, one for Solarwinds Orion and one for LibreNMS! There are also a lot of bug fixes for various integrations.

## [v3.4.0 (2025-01-14)](https://github.com/nautobot/nautobot-app-ssot/releases/tag/v3.4.0)

### Added

- [#631](https://github.com/nautobot/nautobot-app-ssot/issues/631) - Added integration with SolarWinds.
- [#636](https://github.com/nautobot/nautobot-app-ssot/issues/636) - Added LibreNMS integration.

### Documentation

- [#631](https://github.com/nautobot/nautobot-app-ssot/issues/631) - Added documentation for SolarWinds integration.

### Fixed

- [#597](https://github.com/nautobot/nautobot-app-ssot/issues/597) - Fixed ACI integration LocationType usage in CRUD operations to match Job device_site or specified APIC Location's LocationType.
- [#598](https://github.com/nautobot/nautobot-app-ssot/issues/598) - Swapped out `nautobot.extras.plugins.PluginTemplateExtension` for `TemplateExtension`
- [#621](https://github.com/nautobot/nautobot-app-ssot/issues/621) - Fixed ASN updates on Location objects.
- [#621](https://github.com/nautobot/nautobot-app-ssot/issues/621) - Fixed documentation on data normalization.
- [#624](https://github.com/nautobot/nautobot-app-ssot/issues/624) - Fixed Floors respecting location map for Building related changes.
- [#626](https://github.com/nautobot/nautobot-app-ssot/issues/626) - Fixed SoftwareVersion update on Devices in DNA Center integration.
- [#634](https://github.com/nautobot/nautobot-app-ssot/issues/634) - Fixed load locations on the source adapter for the ServiceNow integration when a site filter is applied.
- [#641](https://github.com/nautobot/nautobot-app-ssot/issues/641) - Fixed incorrectly nested imports within if block used for Device Lifecycle Models.
- [#643](https://github.com/nautobot/nautobot-app-ssot/issues/643) - Fixed DNA Center bug where empty Locations were imported.
- [#646](https://github.com/nautobot/nautobot-app-ssot/issues/646) - Fixed IPAddress assigned wrong parent Prefix in Citrix ADM.
- [#648](https://github.com/nautobot/nautobot-app-ssot/issues/648) - Fixed Citrix ADM deleting SoftwareVersion in use with ValidatedSoftware.
- [#648](https://github.com/nautobot/nautobot-app-ssot/issues/648) - Fixed Meraki deleting SoftwareVersion in use with ValidatedSoftware.
- [#650](https://github.com/nautobot/nautobot-app-ssot/issues/650) - Fixed Device floor name being incorrectly defined and including Building name when it shouldn't.

### Housekeeping

- [#1](https://github.com/nautobot/nautobot-app-ssot/issues/1) - Rebaked from the cookie `nautobot-app-v2.4.1`.
Binary file added docs/images/librenms-external-integration.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added docs/images/solarwinds_dashboard.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added docs/images/solarwinds_detail-view.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added docs/images/solarwinds_enabled_job.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added docs/images/solarwinds_external_integration.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added docs/images/solarwinds_job_form.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added docs/images/solarwinds_job_list.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added docs/images/solarwinds_job_settings.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added docs/images/solarwinds_jobresult.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added docs/images/solarwinds_password_secret.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added docs/images/solarwinds_secretsgroup.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added docs/images/solarwinds_username_secret.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
4 changes: 4 additions & 0 deletions docs/user/integrations/bootstrap.md
Original file line number Diff line number Diff line change
Expand Up @@ -19,6 +19,10 @@ NotYetImplemented

### Data structures

### General Notes on Data in the YAML file

Data values are generally normalized in the app code. If a value is supposed to be a string and you want it to be blank or none, include a blank string (`""`) in the value. Integers should be left completely blank. Lists should be set to an empty list (`[]`), and dictionaries should be set to a blank dictionary (`{}`) in the yaml file.

#### global_settings.yml (see '../bootstrap/fixtures/global_settings.yml for examples of supported models)

```yaml
Expand Down
2 changes: 2 additions & 0 deletions docs/user/integrations/index.md
Original file line number Diff line number Diff line change
Expand Up @@ -11,6 +11,8 @@ This Nautobot app supports the following integrations:
- [Infoblox](./infoblox.md)
- [IPFabric](./ipfabric.md)
- [Itential](./itential.md)
- [LibreNMS](./librenms.md)
- [Cisco Meraki](./meraki.md)
- [ServiceNow](./servicenow.md)
- [Slurpit](./slurpit.md)
- [SolarWinds](./solarwinds.md)
Loading
Loading