-
Notifications
You must be signed in to change notification settings - Fork 6
Description
Plugin Version
v0.4.6
Proposed functionality
Full support for NetBox Branching involves significant work both on the Custom Objects and NetBox Branching sides.
Requirements:
Schema replication for dynamic tables
All DB schemas used for replicating branches would need to be populated with tables matching the Custom Objects table7model tables which contain the Custom Objects upon creation of a branch. Schemas within branches can diverge from the main branch schema at that point, but then when the branch is merged, the changes must be tracked and replayed against the main branch (see below).
Branch-aware model generation
When Custom Object Types are created or changed, the branch in which they were changed must be tracked within the COT objects themselves and available as part of the model (_meta?) for introspection.
Merge strategy for schema changes
When branches are merged, there must be a resolvable history for all COT changes within a branch that will then be applied to the main branch. Schema changes that have been applied to the branch would need to be replayed in order against the main branch.
If a COT has been changed in both a work branch and the main branch, merging would need to be performed in a resolvable way or not at all. Irreconcilable changes in different branches would need to flag the user that merging is not possible. Changes that are compatible, ideally, should be able to be performed upon merge (and the merge strategy should be able to determine whether the changes are mergeable).
Use case
Users will need to be able to use NetBox Changes and Custom Objects at the same time, and will expect that Custom Objects should behave the same as core NetBox objects within branches.
Though full support for both plugins entails an expectation of full functionality, there should nonetheless be heightened expectation of potentially irreconcilable schema changes if Custom Object Types are changed in two parallel branches.
External dependencies
No response