Skip to content

Full branching support #404

@bctiemann

Description

@bctiemann

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

Metadata

Metadata

Assignees

No one assigned

    Labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions