Logical follow up from {T314933}.
==The 4 major releases come with their load of new features, from which I quickly selected the interesting ones:
===3.3
* L2VPN Modeling (#8157)
* Toggle Custom Field Visibility (#9166)
* #8511 - Enable custom fields and tags for circuit terminations
* #8995 - Enable arbitrary ordering of REST API results
* #6454 - Include contextual help when creating first objects in UI
* #10039 - Add "assign FHRP group" option to actions dropdown in interfaces list
* #10447 - Enable reassigning an inventory item from one device to another
===3.4
* New Global Search (#10560)
* Virtual Device Contexts (#7854)
* Saved Filters (#9623)
* JSON/YAML Bulk Imports (#4347)
* Scheduled Reports & Scripts (#8366)
* API for Staged Changes (#10851)
* #10600 - Allow custom object fields to reference a user or group
===3.5
* Customizable Dashboard (#9416)
* Remote Data Sources (#11558)
* ASN Ranges (#8550)
* Provider Accounts (#9047)
* #10759 - Support Markdown rendering for custom field descriptions
===3.6
* Custom Field Choice Sets (#12988)
* #8137 - Add a field for designating the out-of-band (OOB) IP address for devices
===3.7
* Event Rules (#14132)
* Object Protection Rules (#10244)
* Improved Custom Field Visibility Controls (#13299)
* VPN Tunnels (#9816)
* #12135 - Avoid orphaned interfaces by preventing the deletion of interfaces which have children assigned
*
==But also their load of breaking changes:
===[[ https://github.com/netbox-community/netbox/releases/tag/v3.3.0 | 3.3 ]]
[x] Device position, device type height, and rack unit values are now reported as decimals (e.g. `1.0` or `1.5`) to support modeling half-height rack units.
** Not impactful
[x] The `nat_outside` relation on the IP address model now returns a list of zero or more related IP addresses, rather than a single instance (or None).
** Not used
[] Several fields on the cable API serializers have been altered or removed to support multiple-object cable terminations: [see table on the link]
** https://gerrit.wikimedia.org/r/918518
[] As with the cable model, several API fields on all objects to which cables can be connected (interfaces, circuit terminations, etc.) have been changed: [see table on the link]
** https://gerrit.wikimedia.org/r/918518
[x] The cable path serialization returned by the `/paths/` endpoint for pass-through ports has been simplified, and the following fields removed: `origin_type`, `origin`, `destination_type`, `destination`. (Additionally, `is_complete` has been added.)
** Removed fields not used
===[[ https://github.com/netbox-community/netbox/releases/tag/v3.4.0 | 3.4 ]]
[x] Device and virtual machine names are no longer case-sensitive. Attempting to create e.g. "device1" and "DEVICE1" within the same site will raise a validation error.
** Not impactful
[x] The `asn`, `noc_contact`, `admin_contact`, and `portal_url` fields have been removed from the provider model. Please replicate any data remaining in these fields to the ASN and contact models introduced in NetBox v3.1 prior to upgrading.
** Updated manually
[x] The `content_type` fields on the CustomLink and ExportTemplate models have been renamed to `content_types` and now support the assignment of multiple content types per object.
** Not used
[x] Within the Python API, the `cf` property on an object with custom fields now returns deserialized values. For example, a custom field referencing an object will return the object instance rather than its numeric ID. To access the raw serialized values, reference the object's `custom_field_data` attribute instead.
** Not used
[x] The `NetBoxModelCSVForm` class has been renamed to `NetBoxModelImportForm`. Backward compatability with the previous name has been retained for this release, but will be dropped in NetBox v3.5.
** Not used
===[[ https://github.com/netbox-community/netbox/releases/tag/v3.5.0 | 3.5 ]]
[x] The `account` field has been removed from the provider model. This information is now tracked using the new provider account model. Multiple accounts can be assigned per provider.
** Will be updated automatically, not used externally
[] A minimum length of 50 characters is now enforced for the `SECRET_KEY` configuration parameter.
[] The JobResult model has been moved from the `extras` app to `core` and renamed to Job. Accordingly, its REST API endpoint has been moved from `/api/extras/job-results/` to `/api/core/jobs/`.
** https://gerrit.wikimedia.org/r/918359
[] The `obj_type` field on the Job model (previously JobResult) has been renamed to `object_type` for consistency with other models.
** https://gerrit.wikimedia.org/r/918359
[] The `JOBRESULT_RETENTION` configuration parameter has been renamed to `JOB_RETENTION`.
** https://gerrit.wikimedia.org/r/918353
[x] The `obj` context variable is no longer passed when rendering custom links: Use `object` instead.
** Updated
[x] The REST API schema is now generated using the OpenAPI 3.0 spec
** Not impactful
[x] The URLs for the REST API schema documentation have changed:
** `/api/docs/` is now `/api/schema/swagger-ui/`
** `/api/redoc/` is now `/api/schema/redoc/`
** Not impactful
===[[ https://github.com/netbox-community/netbox/releases/tag/v3.6.0 | 3.6 ]]
[x] PostgreSQL 11 is no longer supported (dropped in Django 4.2). NetBox v3.6 requires PostgreSQL 12 or later.
** We're on 13
[] The `device_role` field on the Device model has been renamed to `role`. The `device_role` field has been temporarily retained on the REST API serializer for devices for backward compatibility, but is read-only.
** Will need patches
[] The `choices` array field has been removed from the CustomField model. Any defined choices are automatically migrated to CustomFieldChoiceSets, accessible via the new `choice_set` field on the CustomField model.
** TBD if impactful
[x] The napalm_driver and napalm_args fields (which were deprecated in v3.5) have been removed from the Platform model.
** Feature not in use
===[[ https://github.com/netbox-community/netbox/releases/tag/v3.7-beta1 | 3.7 ]]
[ ] The following fields have been removed from the Webhook model: content_types, type_create, type_update, type_delete, type_job_start, type_job_end, enabled, and conditions. Webhooks are now tied to events via event rules. Existing webhooks will have event rules created automatically upon upgrade.
[x] The ui_visibility field on the custom field model has been replaced with two new fields: ui_visible and ui_editable. Existing values will be migrated automatically upon upgrade.
* Not impacted
[ ] The FeatureQuery class for querying content types by model feature has been removed. Plugins should now use the new with_feature() manager method on NetBox's proxy model for ContentType.
[x] The ConfigRevision model has been moved from extras to core. Configuration history will be retained throughout the upgrade process.
* Not impacted
[x] The L2VPN and L2VPNTermination models have been moved from the ipam app to the new vpn app. All object data will be retained, however please note that the relevant API endpoints have moved to /api/vpn/.
* Not impacted
[x] The CustomFieldsMixin, SavedFiltersMixin, and TagsMixin classes have moved from the extras.forms.mixins module to netbox.forms.mixins.
* Not impacted
==Next steps:
TBD
Once Netbox-next is upgraded to 3.6:
* Update cookbooks if needed
* Update Homer (& wmf-netbox.py)
Once Netbox is upgraded:
* Upgrade pynetbox to > 6.6 (eg. in Homer)