Summary
Bugfix release. It reverts the slug generation change from 3.23.0, which broke lookups for playbooks that rely on the auto-generated slug.
If you created objects with 3.23.0 and did not set slug yourself, check any whose name starts or ends with a space or a . once punctuation is removed (for example Site 1. or Core !). 3.23.1 generates a different slug for those names than 3.23.0 saved (site-1- instead of site-1), so the module may not find the existing object and create a second one. Set slug explicitly on those tasks to match what is in NetBox.
Bugfixes
- Reverted the slug generation change from 3.23.0, restoring the pre-3.23.0 behavior. The upstream-aligned slug generation will return in a future major release (#1563).
- Unordered many-to-many list fields (such as
object_types,tagged_vlans, route targets,netbox_config_contextscopes, and user permissions/groups) are now compared as sets, so a reordering by NetBox no longer reports a falsechanged(#1486). netbox_contact: the NetBox version check forcontact_groupvscontact_groupsnow fails with a clearmsginstead of a Python traceback, including on ansible-core 2.19.netbox_device_interface: the legacymac_addressoption no longer reports a change on every run on NetBox v4.2+. Its value is now stored as the interface'sprimary_mac_address(#1502).
What's Changed
- Switch v4.5 CI from static v1 token to runtime-provisioned v2 token (INT-238) by @ldrozdz93 in #1553
- ci: add ansible-core 2.19 compatibility matrix by @unlisted in #1566
- fix: compare unordered m2m list fields as sets in the generic diff engine (INT-411) by @ldrozdz93 in #1571
- fix(netbox_device_interface): persist legacy mac_address on NetBox v4.2+ by @ldrozdz93 in #1574
- chore(changelog): reclassify CI-only fragments as trivial for 3.23.1 by @unlisted in #1594
- fix: revert slug generation to pre-3.23.0 behavior by @unlisted in #1591
- Release v3.23.1 by @unlisted in #1603
- Release v3.23.1 by @unlisted in #1608
Full Changelog: v3.23.0...v3.23.1