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
==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-beta1 | 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
==Next steps:
TBD
Once Netbox-next is upgraded to 3.5:
* Update cookbooks if needed
* Update Homer (& wmf-netbox.py)