-
Notifications
You must be signed in to change notification settings - Fork 2.8k
Description
NetBox version
v3.0.10
Feature type
Change to existing functionality
Proposed functionality
Currently, NetBox determines the relationships between prefixes and IP addresses dynamically, leveraging PostgreSQL query logic to find individual IPs which exist "within" each prefix (filtered by VRF): there is no direct relationship in the database from an IP address to its parent prefix.
This issue proposes effecting a direct ForeignKey field named prefix
on the IPAddress model relating to the Prefix model. This will be for internal use only, and not editable via any form or API. The relationship will be set automatically whenever a prefix or IP address is created, modified, or deleted. (Django signals will be leveraged to detect these events.) It should be possible to perform these updates via a single bulk query for each object being modified.
For example, when creating the prefix 192.0.2.0/24 in VRF A, a bulk query will automatically update the prefix
field of any IP addresses within this prefix and VRF to reference the new prefix. Similarly, when a new IP address is created, NetBox will assign it to the closest matching prefix.
It may make sense to extend this concept to the Prefix model as well, automatically defining the parent prefix for each child prefix.
(This proposal is related to #7451 but more involved. If this proposal is accepted, #7451 will likely be closed.)
Use case
The introduction of a ForeignKey relationship from IPAddress to Prefix will make querying child IPs and calculating prefix utilization much more efficient.
Database changes
Add a prefix
ForeignKey field to the IPAddress model relating to Prefix.
External dependencies
No response