For Developers¶
This section covers technical changes to the underlying data models and programmable interfaces and is intended for developers or integrators to help facilitate any necessary changes to functional code in Apps that extend Nautobot.
Database (ORM) Changes¶
Database Field Behavior Changes¶
Model | Field | Changes |
---|---|---|
IPAddress | role | Changed from CharField to a ForeignKey to the new Role model. |
IPAddress | primary_ip4_for | Now a list as the reverse relation for the Device.primary_ip4 foreign key |
IPAddress | primary_ip6_for | Now a list as the reverse relation for the Device.primary_ip6 foreign key |
Prefix | is_pool | Replaced by new field type , valid choices are "Container", "Network" and "Pool" |
Prefix | namespace | New required foreign key to Namespace, defaulting to 'Global' |
Prefix | status | "Container" status has been replaced by new field type |
VRF | namespace | New required foreign key to Namespace, defaulting to 'Global' |
Renamed Database Fields¶
Most renamed database fields in Nautobot 2.0 fall into the following general categories:
- Renaming of foreign keys and reverse relations to more consistently and specifically match the related model name or plural name (for example,
Circuit.terminations
toCircuit.circuit_terminations
,Rack.group
toRack.rack_group
) - Explicitly for the
IPAddress
andPrefix
models,family
, a derived field, was replaced withip_version
, a concrete integer field that may be used in query filters.
Model | Renamed Field | New Name |
---|---|---|
IPAddress | family | ip_version |
IPAddress | prefix_length | mask_length |
Prefix | family | ip_version |
Service | ipaddresses | ip_addresses |
VLAN | group | vlan_group |
Removed Database Fields¶
Most removed database fields in Nautobot 2.0 fall into the following general categories:
- Removal of references to removed models such as
Site
andRegion
- Removal of
slug
fields in preference to the use of the natural key.
Model | Removed Field | Comments |
---|---|---|
IPAddress | assigned_object | Replaced by interfaces and vm_interfaces many-to-many relations |
IPAddress | broadcast | Use parent Prefix's broadcast instead |
IPAddress | vrf | VRF is now related to the assigned Interface(s), as well as the parent Prefix |
Prefix | is_pool | Replaced by new type field |
Prefix | site | Use location instead |
Prefix | vrf | Replaced by vrf_assignments many-to-many relation |
RouteTarget | slug | |
VLAN | site | Use location instead |
VLANGroup | site | Use location instead |
VLANGroup | slug | |
VRF | enforce_unique | Uniqueness of Prefixes and IPAddresses is now enforced by the database |
Replaced Models¶
The ipam.Role
model has been removed and replaced by a single extras.Role
model. This means that any references to the removed models in the code now use the extras.Role
model instead.
Removed Model | Replaced With |
---|---|
ipam.Role |
extras.Role |
GraphQL and REST API Changes Changes¶
API Behavior changes¶
Most of the API behavior changes in Nautobot 2.0 fall into the following general categories:
- The
created
field on most models has changed from a date only ("2023-04-06") to being a date/time ("2023-04-06T19:57:45.320232Z") - The
status
fields on various models has changed from a pseudo-enum value (containing a "value" and a "label") to referencing the related Status object in full, similar to other foreign-key fields. - Various models that had a required
site
field and an optionallocation
field now have a requiredlocation
field.
Model | Field | Changes |
---|---|---|
IPAddress | parent | A new foreign-key to Prefix . Required on creation, if namespace isn't provided, to find a correct parent Prefix |
IPAddress | role | Now is a foreign-key to Role rather than a string |
IPAddress | status | Now is a foreign-key rather than a pseudo-enum |
Prefix | namespace | New required foreign key to Namespace, defaulting to 'Global' |
Prefix | status | Now is a foreign-key rather than a pseudo-enum |
VLAN | status | Now is a foreign-key rather than a pseudo-enum |
VRF | namespace | New required foreign key to Namespace, defaulting to 'Global' |
Renamed Serializer Fields¶
Most renamed API fields in Nautobot 2.0 fall into the following general categories:
- Renaming of foreign keys and reverse relations to more consistently and specifically match the related model name or plural name (for example,
Circuit.type
toCircuit.circuit_type
,Interface.count_ipaddresses
toInterface.ip_address_count
)
Model | Renamed Field | New Name |
---|---|---|
IPAddress | family | ip_version |
Prefix | family | ip_version |
VLAN | group | vlan_group |
Removed Serializer Fields¶
Most removed database fields in Nautobot 2.0 fall into the following general categories:
- Removal of references to removed models such as
Site
andRegion
- Removal of
slug
fields in preference to the use of the natural key.
Model/Endpoint | Removed Field | Comments |
---|---|---|
IPAddress | assigned_object | Changed to many-to-many field. Use the REST API view for IPAddressToInterface (/api/ipam/ip-address-to-interface/) to create/modify/delete associations or interfaces /vm_interfaces on this model to retrieve a list of associated interfaces. |
IPAddress | broadcast | Use parent Prefix's broadcast instead |
IPAddress | vrf | VRF is now related to the assigned Interface(s), as well as the parent Prefix |
Prefix | is_pool | Use type instead |
Prefix | vrf | Prefixes are now assigned to a VRF in the same Namespace via a many-to-many relationship |
Prefix | site | Use location instead |
RouteTarget | slug | |
VLAN | site | Use location instead |
VLANGroup | site | Use location instead |
VLANGroup | slug | |
VRF | enforce_unique | Uniqueness of Prefixes and IPAddresses is now enforced at the database level |
Replaced Endpoints¶
The endpoint /ipam/roles/
is no longer available. Instead, use the /extras/roles/
endpoint to retrieve and manipulate role
data.
Removed Endpoints | Replaced With |
---|---|
/ipam/roles/ |
/extras/roles/ |
UI, GraphQL, and REST API Filter Changes¶
Renamed Filter Fields¶
Most renamed filter fields in Nautobot 2.0 fall into the following general categories:
- The
tag
filter is renamed totags
on all models supporting Tags. - Renames to match renamed model/serializer fields as described earlier in this document.
- Related membership filters are renamed to
has_<related>
throughout, for exampleConsolePort.cabled
is renamed toConsolePort.has_cable
. - Most
<related>_id
filters have been merged into the corresponding<related>
filter (see "Enhanced Filter Fields" below).
Model | Renamed Filter | New Name | Renamed Field |
---|---|---|---|
IPAddress | assigned_to_interface | has_interface_assignments | |
IPAddress | family | ip_version | |
IPAddress | parent | prefix | |
IPAddress | tag | tags | |
Prefix | family | ip_versionip_version | |
Prefix | is_pool | type | |
Prefix | tag | tags | |
RouteTarget | tag | tags | |
Service | tag | tags | |
VLAN | group | vlan_group | |
VLAN | tag | tags | |
VRF | tag | tags |
Enhanced Filter Fields¶
Below is a table documenting enhanced filter field changes in Nautobot 2.0. These enhancements mostly fall into the following general categories:
- Many filters are enhanced to permit filtering by UUID or by name.
- Filters that previously only supported a single filter value can now filter on multiple values.
Model | Filter | Enhancements |
---|---|---|
IPAddress | mask_length | Filtering on multiple integer values |
IPAddress | rir | Filter by UUID or by name |
IPAddress | tenant | Filter by UUID or by name |
IPAddress | tenant_group | Filter by UUID or by name |
Prefix | rir | Filter by UUID or by name |
Prefix | tenant | Filter by UUID or by name |
Prefix | tenant_group | Filter by UUID or by name |
RouteTarget | tenant | Filter by UUID or by name |
RouteTarget | tenant_group | Filter by UUID or by name |
VLAN | available_on_device | Filtering on multiple values |
VLAN | tenant | Filter by UUID or by name |
VLAN | tenant_group | Filter by UUID or by name |
VLAN | vlan_group | Filter by UUID or by name |
VRF | tenant | Filter by UUID or by name |
VRF | tenant_group | Filter by UUID or by name |
Corrected Filter Fields¶
Below is a table documenting corrected filter field changes in Nautobot 2.0. These corrections mostly involve filters that previously permitted filtering on related membership only (/api/dcim/devices/?console_ports=True
) and have now been corrected into filters for related membership (/api/dcim/devices/?has_console_ports=True
) as well as by actual related objects (/api/dcim/devices/?console_ports=<UUID>
).
Model | Filter | Correction |
---|---|---|
IPAddress | parent | The parent filter now checks for an exact match of the parent Prefix; for legacy net_host_contained behavior now use the new prefix filter instead |
Removed Filter Fields¶
Below is a table documenting removed filter field changes in v2.x. Most removed database fields in Nautobot 2.0 fall into the following general categories:
- Removal of
*_id=<uuid>
filters as they have have been merged into filters that support both uuid and name/slug (for example, instead of/api/circuits/circuits/?provider_id=<UUID>
, use/api/circuits/circuits/?provider=<uuid>
). - Removal of filtering on removed models such as
Region
andSite
. (Uselocation
filters instead.) - Removal of
slug
filters from models that no longer have aslug
field.
Model | Removed Filter | Comments |
---|---|---|
Prefix | region | |
Prefix | region_id | |
Prefix | site | |
Prefix | site_id | |
Prefix | vrf_id | Use vrf filter instead |
RouteTarget | slug | |
RouteTarget | tenant_group_id | |
VLAN | group_id | Use vlan_group filter |
VLAN | region | |
VLAN | region_id | |
VLAN | site | |
VLAN | site_id | |
VLAN | tenant_group_id | |
VLANGroup | region | |
VLANGroup | region_id | |
VLANGroup | site | |
VLANGroup | site_id | |
VLANGroup | slug | |
VRF | tenant_group_id |