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 2.2.0 #330

Merged
merged 54 commits into from
Jan 18, 2024
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
54 commits
Select commit Hold shift + click to select a range
22a9d71
Working on tests
qduk Jan 5, 2024
4fa4d13
Merge pull request #316 from nautobot/main
jdrew82 Jan 8, 2024
dc68ab2
TESTING
qduk Jan 8, 2024
76c3986
fix: 🐛 Correct plugin settings to correct prepended form.
jdrew82 Jan 9, 2024
679b96f
feat: ✨ Add Prefix DiffSyncModel to track for IPAddress parent requir…
jdrew82 Jan 9, 2024
be969a6
style: 🚨 Fix formatting for black
jdrew82 Jan 9, 2024
9c41897
feat: ✨ Add IPAssignment DiffSync Model to track IPAddress to Interfa…
jdrew82 Jan 9, 2024
373b448
style: 🚨 Fix formatting for black
jdrew82 Jan 9, 2024
ba1429a
fix: 🐛 Correct typo
jdrew82 Jan 9, 2024
25969e1
test: ✅ Update test to account for DiffSync model changes.
jdrew82 Jan 9, 2024
6e80c14
fix: 🐛 Specify parent prefix when creating IPAddress
jdrew82 Jan 9, 2024
8f10fd6
fix: 🐛 It should be just status, not status_id
jdrew82 Jan 9, 2024
2924e7a
fix: 🐛 Move loopback type setting to IPAssignment.
jdrew82 Jan 10, 2024
c9078aa
feat: Ability to store `set()`s diffs in Sync
snaselj Jan 10, 2024
51b0129
chore: Make migrations
snaselj Jan 10, 2024
07334ec
fix: Black
snaselj Jan 10, 2024
af53c81
introduces custom relationships for the contrib module
Kircheneer Nov 7, 2023
7e33929
fix: 🐛 Correct APP_SETTING to use aristacv_ prepend
jdrew82 Jan 10, 2024
85196d3
refactor: ♻️ Update verify_device_role() to ensure Device ContentType…
jdrew82 Jan 10, 2024
194b4de
build: 🐛 Correct setting example to not be list in list, it should be…
jdrew82 Jan 12, 2024
4e7db91
feat: ✨ Add Namespace DiffSync model and add to IPAddress and IPAssig…
jdrew82 Jan 12, 2024
35ad881
feat: ✨ Add method to get an Interface's VRF.
jdrew82 Jan 12, 2024
1d80b27
refactor: ♻️ Move device index logging behind debug
jdrew82 Jan 12, 2024
8b1e23e
fix: 🐛 Change read_settings to return config without altering key.
jdrew82 Jan 12, 2024
1dec3fa
fix: 🐛 Ensure that LocationType is saved after applying ContentTypes.
jdrew82 Jan 12, 2024
97e814a
refactor: ♻️ Change LocationType to get as it should exist from signa…
jdrew82 Jan 12, 2024
313f56d
fix: 🐛 Correct prefix definition to just use str on prefix object.
jdrew82 Jan 12, 2024
1155d06
test: ✅ Update test to account for DiffSync model changes.
jdrew82 Jan 12, 2024
dc59c62
fix: 🐛 Correct id to be on parent, not prefix
jdrew82 Jan 12, 2024
6499092
fix: 🐛 Namespace is on parent, not IPAddress
jdrew82 Jan 12, 2024
7e1e1d2
fix: 🐛 Device is off Interface
jdrew82 Jan 12, 2024
21c6dfd
Added tests
qduk Jan 15, 2024
bb3b8e2
Updated tests
qduk Jan 15, 2024
e45e2ec
Updated per personal review
qduk Jan 16, 2024
0a6dd55
BugFix: Use correct attr name for vlan_group
jmcgill298 Jan 8, 2024
4952233
Linted
qduk Jan 16, 2024
70eccf2
fix: 🐛 Correct check for existing Prefix to use both identifiers.
jdrew82 Jan 17, 2024
347f375
fix: 🐛 Correct get for Controller Relationship to use label and not n…
jdrew82 Jan 17, 2024
fecda8d
refactor: ♻️ Use blank string instead of None for defaults in init
jdrew82 Jan 17, 2024
4c1ee1e
fix: 🐛 Refactor get_cvp_version() to work with CVaaS.
jdrew82 Jan 17, 2024
bb9df22
feat: ✨ Add VXLAN Configured CustomField so displayed in UI correctly.
jdrew82 Jan 17, 2024
bd4dd70
fix: 🐛 Correct tag value when a Boolean so diff lines up.
jdrew82 Jan 17, 2024
b5559e2
fix: ♻️ Update Prefixes/IPAddress model to allow delete, use objects_…
jdrew82 Jan 17, 2024
5075d6e
test: ✅ Fix issues with tests.
jdrew82 Jan 17, 2024
0a70302
Merge pull request #325 from qduk/ab_infoblox_ipv6_prefixes
jdrew82 Jan 17, 2024
e3a6a4c
Merge pull request #318 from nautobot/jacobm/infoblox/bugfix-vlan-wro…
jdrew82 Jan 17, 2024
7a486a6
Merge pull request #320 from nautobot/u/snaselj-store-diff-set
jdrew82 Jan 17, 2024
346d312
Fix ipfabric create_location to use correct arg name
jmcgill298 Jan 16, 2024
5599e72
BugFix: account for VLAN not having VLANGroup
jmcgill298 Jan 8, 2024
e21dc57
Merge pull request #319 from nautobot/patch-cvp_fixes
jdrew82 Jan 18, 2024
b1666d0
Merge pull request #326 from nautobot/jacobm/ipfabric/bugfix-location…
jdrew82 Jan 18, 2024
6e8fe4f
Merge pull request #327 from nautobot/jacobm/infoblox/bugfix-vlan-wro…
jdrew82 Jan 18, 2024
690a8b6
build: 🔖 Bump version to 2.2.0
jdrew82 Jan 18, 2024
b41571c
docs: 📝 Update release notes for 2.2.0
jdrew82 Jan 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
1 change: 1 addition & 0 deletions development/development.env
Original file line number Diff line number Diff line change
Expand Up @@ -79,6 +79,7 @@ NAUTOBOT_SSOT_INFOBLOX_DEFAULT_STATUS="Active"
NAUTOBOT_SSOT_INFOBLOX_ENABLE_SYNC_TO_INFOBLOX="True"
NAUTOBOT_SSOT_INFOBLOX_IMPORT_OBJECTS_IP_ADDRESSES="True"
NAUTOBOT_SSOT_INFOBLOX_IMPORT_OBJECTS_SUBNETS="True"
NAUTOBOT_SSOT_INFOBLOX_IMPORT_OBJECTS_SUBNETS_IPV6="False"
NAUTOBOT_SSOT_INFOBLOX_IMPORT_OBJECTS_VLANS="True"
NAUTOBOT_SSOT_INFOBLOX_IMPORT_OBJECTS_VLAN_VIEWS="True"
NAUTOBOT_SSOT_INFOBLOX_IMPORT_SUBNETS="10.46.128.0/18,192.168.1.0/24"
Expand Down
5 changes: 4 additions & 1 deletion development/nautobot_config.py
Original file line number Diff line number Diff line change
Expand Up @@ -178,7 +178,7 @@
"aristacv_from_cloudvision_default_device_role": "network",
"aristacv_from_cloudvision_default_device_role_color": "ff0000",
"aristacv_from_cloudvision_default_site": "cloudvision_imported",
"aristacv_hostname_patterns": [[r"(?P<site>\w{2,3}\d+)-(?P<role>\w+)-\d+"]],
"aristacv_hostname_patterns": [r"(?P<site>\w{2,3}\d+)-(?P<role>\w+)-\d+"],
"aristacv_import_active": is_truthy(os.getenv("NAUTOBOT_ARISTACV_IMPORT_ACTIVE", False)),
"aristacv_role_mappings": {
"bb": "backbone",
Expand Down Expand Up @@ -222,6 +222,9 @@
os.getenv("NAUTOBOT_SSOT_INFOBLOX_IMPORT_OBJECTS_IP_ADDRESSES")
),
"infoblox_import_objects_subnets": is_truthy(os.getenv("NAUTOBOT_SSOT_INFOBLOX_IMPORT_OBJECTS_SUBNETS")),
"infoblox_import_objects_subnets_ipv6": is_truthy(
os.getenv("NAUTOBOT_SSOT_INFOBLOX_IMPORT_OBJECTS_SUBNETS_IPV6")
),
"infoblox_import_objects_vlan_views": is_truthy(os.getenv("NAUTOBOT_SSOT_INFOBLOX_IMPORT_OBJECTS_VLAN_VIEWS")),
"infoblox_import_objects_vlans": is_truthy(os.getenv("NAUTOBOT_SSOT_INFOBLOX_IMPORT_OBJECTS_VLANS")),
"infoblox_import_subnets": os.getenv("NAUTOBOT_SSOT_INFOBLOX_IMPORT_SUBNETS", "").split(","),
Expand Down
37 changes: 20 additions & 17 deletions docs/admin/integrations/infoblox_setup.md
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
# Infoblox Integration Setup

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

## Prerequisites

Expand All @@ -14,22 +14,23 @@ pip install nautobot-ssot[infoblox]

Integration behavior can be controlled with the following settings:

| Setting | Default | Description |
| ------------------------------------------ | ------- | ------------------------------------------------------------------------ |
| infoblox_url | N/A | URL of the Infoblox instance to sync with. |
| infoblox_username | N/A | The username to authenticate against Infoblox with. |
| infoblox_password | N/A | The password to authenticate against Infblox with. |
| infoblox_verify_ssl | True | Toggle SSL verification when syncing data with Infoblox. |
| infoblox_wapi_version | v2.12 | The version of the Infoblox API. |
| infoblox_enable_sync_to_infoblox | False | Add job to sync data from Nautobot into Infoblox. |
| infoblox_enable_rfc1918_network_containers | False | Add job to sync network containers to Nautobot (top level aggregates). |
| infoblox_default_status | active | Default Status to be assigned to imported objects. |
| infoblox_import_objects_ip_addresses | False | Import IP addresses from Infoblox to Nautobot. |
| infoblox_import_objects_subnets | False | Import subnets from Infoblox to Nautobot. |
| infoblox_import_objects_vlan_views | False | Import VLAN views from Infoblox to Nautobot. |
| infoblox_import_objects_vlans | False | Import VLANs from Infoblox to Nautobot. |
| infoblox_import_subnets | N/A | List of Subnets in CIDR string notation to filter import to. |
| infoblox_network_view | N/A | Only load IPAddresses from a specific Infoblox Network View. |
| Setting | Default | Description |
| ------------------------------------------ | ------- | ---------------------------------------------------------------------- |
| infoblox_url | N/A | URL of the Infoblox instance to sync with. |
| infoblox_username | N/A | The username to authenticate against Infoblox with. |
| infoblox_password | N/A | The password to authenticate against Infblox with. |
| infoblox_verify_ssl | True | Toggle SSL verification when syncing data with Infoblox. |
| infoblox_wapi_version | v2.12 | The version of the Infoblox API. |
| infoblox_enable_sync_to_infoblox | False | Add job to sync data from Nautobot into Infoblox. |
| infoblox_enable_rfc1918_network_containers | False | Add job to sync network containers to Nautobot (top level aggregates). |
| infoblox_default_status | active | Default Status to be assigned to imported objects. |
| infoblox_import_objects_ip_addresses | False | Import IP addresses from Infoblox to Nautobot. |
| infoblox_import_objects_subnets | False | Import subnets from Infoblox to Nautobot. |
| infoblox_import_objects_subnets_ipv6 | False | Import IPv6 subnets from Infoblox to Nautobot. |
| infoblox_import_objects_vlan_views | False | Import VLAN views from Infoblox to Nautobot. |
| infoblox_import_objects_vlans | False | Import VLANs from Infoblox to Nautobot. |
| infoblox_import_subnets | N/A | List of Subnets in CIDR string notation to filter import to. |
| infoblox_network_view | N/A | Only load IPAddresses from a specific Infoblox Network View. |

Below is an example snippet from `nautobot_config.py` that demonstrates how to enable and configure Infoblox integration:

Expand All @@ -46,6 +47,7 @@ PLUGINS_CONFIG = {
os.getenv("NAUTOBOT_SSOT_INFOBLOX_IMPORT_OBJECTS_IP_ADDRESSES")
),
"infoblox_import_objects_subnets": is_truthy(os.getenv("NAUTOBOT_SSOT_INFOBLOX_IMPORT_OBJECTS_SUBNETS")),
"infoblox_import_objects_subnets_ipv6": is_truthy(os.getenv("NAUTOBOT_SSOT_INFOBLOX_IMPORT_OBJECTS_SUBNETS_IPV6")),
"infoblox_import_objects_vlan_views": is_truthy(os.getenv("NAUTOBOT_SSOT_INFOBLOX_IMPORT_OBJECTS_VLAN_VIEWS")),
"infoblox_import_objects_vlans": is_truthy(os.getenv("NAUTOBOT_SSOT_INFOBLOX_IMPORT_OBJECTS_VLANS")),
"infoblox_import_subnets": os.getenv("NAUTOBOT_SSOT_INFOBLOX_IMPORT_SUBNETS", "").split(","),
Expand Down Expand Up @@ -113,6 +115,7 @@ PLUGINS_CONFIG = {
os.getenv("NAUTOBOT_SSOT_INFOBLOX_IMPORT_OBJECTS_IP_ADDRESSES")
),
"infoblox_import_objects_subnets": is_truthy(os.getenv("NAUTOBOT_SSOT_INFOBLOX_IMPORT_OBJECTS_SUBNETS")),
"infoblox_import_objects_subnets_ipv6": is_truthy(os.getenv("NAUTOBOT_SSOT_INFOBLOX_IMPORT_OBJECTS_SUBNETS_IPV6")),
"infoblox_import_objects_vlan_views": is_truthy(os.getenv("NAUTOBOT_SSOT_INFOBLOX_IMPORT_OBJECTS_VLAN_VIEWS")),
"infoblox_import_objects_vlans": is_truthy(os.getenv("NAUTOBOT_SSOT_INFOBLOX_IMPORT_OBJECTS_VLANS")),
"infoblox_import_subnets": os.getenv("NAUTOBOT_SSOT_INFOBLOX_IMPORT_SUBNETS", "").split(","),
Expand Down
17 changes: 17 additions & 0 deletions docs/admin/release_notes/version_2.2.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,17 @@

# v2.2 Release Notes

## v2.2.0 - 2024-01-18

## Added

- [271](https://github.com/nautobot/nautobot-app-ssot/pull/271) - Add custom relationship capabilities to the contrib module by @Kircheneer
- [320](https://github.com/nautobot/nautobot-app-ssot/pull/320) - Store sets in diffsync by @snaselj
- [325](https://github.com/nautobot/nautobot-app-ssot/pull/325) - Update Infoblox SSoT to allow for gathering of IPv6 Prefixes by @qduk

## Fixed

- [318](https://github.com/nautobot/nautobot-app-ssot/pull/318) - BugFix: Use correct attr name for vlan_group by @jmcgill298
- [319](https://github.com/nautobot/nautobot-app-ssot/pull/319) - Arista CVP Integration Fixes by @jdrew82
- [326](https://github.com/nautobot/nautobot-app-ssot/pull/326) - Fix ipfabric create_location to use correct arg name by @jmcgill298
- [327](https://github.com/nautobot/nautobot-app-ssot/pull/327) - BugFix: account for VLAN not having VLANGroup by @jmcgill298
4 changes: 2 additions & 2 deletions docs/user/modeling.md
Original file line number Diff line number Diff line change
Expand Up @@ -7,12 +7,12 @@ This page describes how to model various kinds of fields on a `nautobot_ssot.con
The following table describes in brief the different types of model fields and how they are handled.

| Type of field | Field name | Notes | Applies to |
| -------------------------------------------------- | ------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------ | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
|----------------------------------------------------|---------------------------|--------------------------------------------------------------------------------------------------------------------------------------------------|-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|
| [Normal fields](#normal-fields) | Has to match ORM exactly | Make sure that the name matches the name in the ORM model. | Fields that are neither custom fields nor relations |
| [Custom fields](#custom-fields) | Field name doesn't matter | Use `nautobot_ssot.contrib.CustomFieldAnnotation` | [Nautobot custom fields](https://docs.nautobot.com/projects/core/en/stable/user-guides/custom-fields/?h=custom+fields) |
| [*-to-one relationships](#-to-one-relationships) | Django lookup syntax | See [here](https://docs.djangoproject.com/en/3.2/topics/db/queries/#lookups-that-span-relationships) - your model fields need to use this syntax | `django.db.models.OneToOneField`, `django.db.models.ForeignKey`, `django.contrib.contenttypes.fields.GenericForeignKey` |
| [*-to-many relationships](#-to-many-relationships) | Has to match ORM exactly | In case of a generic foreign key see [here](#special-case-generic-foreign-key) | `django.db.models.ManyToManyField`, `django.contrib.contenttypes.fields.GenericRelation`, `django.db.models.ForeignKey` [backwards](https://docs.djangoproject.com/en/3.2/topics/db/queries/#backwards-related-objects) |
| Custom Relationships | n/a | Not yet supported | https://docs.nautobot.com/projects/core/en/stable/models/extras/relationship/ |
| Custom Relationships | Field name doesn't matter | Use `nautobot_ssot.contrib.CustomRelationshipAnnotation` | https://docs.nautobot.com/projects/core/en/stable/models/extras/relationship/ |


## Normal Fields
Expand Down
1 change: 1 addition & 0 deletions mkdocs.yml
Original file line number Diff line number Diff line change
Expand Up @@ -128,6 +128,7 @@ nav:
- Compatibility Matrix: "admin/compatibility_matrix.md"
- Release Notes:
- "admin/release_notes/index.md"
- v2.2: "admin/release_notes/version_2.2.md"
- v2.1: "admin/release_notes/version_2.1.md"
- v2.0: "admin/release_notes/version_2.0.md"
- v1.6: "admin/release_notes/version_1.6.md"
Expand Down
Loading