Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
29 commits
Select commit Hold shift + click to select a range
77df7e8
Fabric modules for ibgp,ebgp,external fabrics
mikewiebe Mar 27, 2026
f8b924b
Update ibgp model enums
mikewiebe Mar 27, 2026
a4f7f91
Update pydantic model and module docstrings for ibgp
mikewiebe Mar 27, 2026
7f39af2
Update pydantic model for ebgp
mikewiebe Mar 27, 2026
a0f5b7a
Update ebgp module doc headers
mikewiebe Mar 28, 2026
20ca050
Update enums and pydantic model descriptions for external fabrics
mikewiebe Mar 28, 2026
c5a681a
Update ebgp module doc strings
mikewiebe Mar 28, 2026
cf5e04e
Fix ansible sanity tests failures
mikewiebe Mar 28, 2026
9db1d09
Black formatting
mikewiebe Mar 28, 2026
9d9fc96
Move common models into common location for import
mikewiebe Mar 29, 2026
1186161
Fix black formatting issue
mikewiebe Mar 29, 2026
2ec2ee8
Add unit tests for fabric endpoints
mikewiebe Mar 29, 2026
645eb03
Fix ansible sanity test failures
mikewiebe Mar 29, 2026
7e1e323
Test cleanup
mikewiebe Mar 31, 2026
7713803
Add ibgp testing params
mikewiebe Mar 31, 2026
69a2d61
Fix for merged state and tests
mikewiebe Mar 31, 2026
7e0e518
Add more properties in ibgp merged test
mikewiebe Mar 31, 2026
173f17c
Add more properties in ibgp replaced test
mikewiebe Mar 31, 2026
9289ec9
Refactor merged fix
mikewiebe Apr 1, 2026
ff1a2d2
Change name property to fabric_name
mikewiebe Apr 1, 2026
580bcf4
Add nd_info into integration tests
mikewiebe Apr 1, 2026
8d9d67b
Merge branch 'nd42_integration' into nd_manage_fabric
mtarking Apr 2, 2026
5342ed6
Merge branch 'nd42_integration' into nd_manage_fabric
mtarking Apr 2, 2026
c135bd4
remove underscore between un & numbered
mtarking Apr 2, 2026
4c4905b
Address review comments
mikewiebe Apr 6, 2026
aba16bb
Fix list behavior bug and update module docs
mikewiebe Apr 6, 2026
83090cc
Make ansible sanity happy
mikewiebe Apr 6, 2026
699f9d5
Make netflow_exporter udp_port optional
mikewiebe Apr 6, 2026
8824c9d
Organize ibgp module doc header
mikewiebe Apr 7, 2026
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
496 changes: 496 additions & 0 deletions plugins/module_utils/endpoints/v1/manage/manage_fabrics.py

Large diffs are not rendered by default.

22 changes: 18 additions & 4 deletions plugins/module_utils/models/base.py
Original file line number Diff line number Diff line change
Expand Up @@ -196,16 +196,26 @@ def to_diff_dict(self, **kwargs) -> Dict[str, Any]:
**kwargs,
)

def get_diff(self, other: "NDBaseModel") -> bool:
"""Diff comparison."""
def get_diff(self, other: "NDBaseModel", exclude_unset: bool = False) -> bool:
"""Diff comparison.

Args:
other: The model to compare against.
exclude_unset: When True, only compare fields explicitly set in
``other`` (via Pydantic's ``exclude_unset``). This prevents
default values from triggering false diffs during merge
operations.
"""
self_data = self.to_diff_dict()
other_data = other.to_diff_dict()
other_data = other.to_diff_dict(exclude_unset=exclude_unset)
return issubset(other_data, self_data)

def merge(self, other: "NDBaseModel") -> "NDBaseModel":
"""
Merge another model's non-None values into this instance.
Merge another model's explicitly set, non-None values into this instance.
Recursively merges nested NDBaseModel fields.
Only fields present in ``other.model_fields_set`` are applied so that
Pydantic default values do not overwrite existing configuration.

Returns self for chaining.
"""
Expand All @@ -216,6 +226,10 @@ def merge(self, other: "NDBaseModel") -> "NDBaseModel":
if value is None:
continue

# Only merge fields that were explicitly provided, not defaults
if field_name not in other.model_fields_set:
continue

current = getattr(self, field_name)
if isinstance(current, NDBaseModel) and isinstance(value, NDBaseModel):
current.merge(value)
Expand Down
Loading