Skip to content

Commit 3bea688

Browse files
authored
Merge pull request #7417 from opsmill/fac-merge-stable-into-develop
Merge stable into develop
2 parents e8d2887 + 73de5ab commit 3bea688

File tree

11 files changed

+30
-22
lines changed

11 files changed

+30
-22
lines changed

.github/dependabot.yml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -10,7 +10,7 @@ updates:
1010
interval: "weekly"
1111
day: "monday"
1212
time: "09:00"
13-
target-branch: develop
13+
target-branch: stable
1414
labels:
1515
- "type/housekeeping"
1616
- "ci/skip-changelog"

.github/workflows/publish-pypi.yml

Lines changed: 5 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -44,6 +44,11 @@ jobs:
4444
with:
4545
python-version: "3.12"
4646

47+
- name: "Check out repository code"
48+
uses: "actions/checkout@v5"
49+
with:
50+
submodules: true
51+
4752
- name: "Setup Python environment"
4853
run: |
4954
pipx install -f poetry==${{ needs.prepare-environment.outputs.POETRY_VERSION }}
@@ -52,10 +57,6 @@ jobs:
5257
env:
5358
PIPX_DEFAULT_PYTHON: ${{ steps.python.outputs.python-path }}
5459

55-
- name: "Check out repository code"
56-
uses: "actions/checkout@v5"
57-
with:
58-
submodules: true
5960
- name: "Install Dependencies"
6061
run: "poetry install"
6162
working-directory: ${{ matrix.package_dir }}

backend/infrahub/core/changelog/models.py

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -560,7 +560,7 @@ def _parse_cardinality_many_relationship(
560560

561561
for peer in relationship.peers:
562562
if peer.peer_status == DiffAction.ADDED:
563-
peer_schema = schema_branch.get(name=peer.peer_kind)
563+
peer_schema = schema_branch.get(name=peer.peer_kind, duplicate=False)
564564
secondaries.extend(
565565
self._process_added_peers(
566566
peer_id=peer.peer_id,
@@ -572,7 +572,7 @@ def _parse_cardinality_many_relationship(
572572
)
573573

574574
elif peer.peer_status == DiffAction.REMOVED:
575-
peer_schema = schema_branch.get(name=peer.peer_kind)
575+
peer_schema = schema_branch.get(name=peer.peer_kind, duplicate=False)
576576
secondaries.extend(
577577
self._process_removed_peers(
578578
peer_id=peer.peer_id,

backend/infrahub/core/manager.py

Lines changed: 6 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -60,12 +60,15 @@ def identify_node_class(node: NodeToProcess) -> type[Node]:
6060

6161

6262
def get_schema(
63-
db: InfrahubDatabase, branch: Branch, node_schema: type[SchemaProtocol] | MainSchemaTypes | str
63+
db: InfrahubDatabase,
64+
branch: Branch,
65+
node_schema: type[SchemaProtocol] | MainSchemaTypes | str,
66+
duplicate: bool = False,
6467
) -> MainSchemaTypes:
6568
if isinstance(node_schema, str):
66-
return db.schema.get(name=node_schema, branch=branch.name)
69+
return db.schema.get(name=node_schema, branch=branch.name, duplicate=duplicate)
6770
if hasattr(node_schema, "_is_runtime_protocol") and node_schema._is_runtime_protocol:
68-
return db.schema.get(name=node_schema.__name__, branch=branch.name)
71+
return db.schema.get(name=node_schema.__name__, branch=branch.name, duplicate=duplicate)
6972
if not isinstance(node_schema, (MainSchemaTypes)):
7073
raise ValueError(f"Invalid schema provided {node_schema}")
7174

backend/infrahub/core/node/constraints/attribute_uniqueness.py

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -29,7 +29,9 @@ async def check(self, node: Node, at: Timestamp | None = None, filters: list[str
2929
attr = getattr(node, unique_attr.name)
3030
if unique_attr.inherited:
3131
for generic_parent_schema_name in node_schema.inherit_from:
32-
generic_parent_schema = self.db.schema.get(generic_parent_schema_name, branch=self.branch)
32+
generic_parent_schema = self.db.schema.get(
33+
generic_parent_schema_name, branch=self.branch, duplicate=False
34+
)
3335
parent_attr = generic_parent_schema.get_attribute_or_none(unique_attr.name)
3436
if parent_attr is None:
3537
continue

backend/infrahub/core/relationship/constraints/count.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -40,7 +40,7 @@ async def check(self, relm: RelationshipManager, node_schema: MainSchemaTypes, n
4040
# peer_ids_present_database_only:
4141
# relationship to be deleted, need to check if the schema on the other side has a min_count defined
4242
# TODO see how to manage Generic node
43-
peer_schema = registry.schema.get(name=relm.schema.peer, branch=branch)
43+
peer_schema = registry.schema.get(name=relm.schema.peer, branch=branch, duplicate=False)
4444
peer_rels = peer_schema.get_relationships_by_identifier(id=relm.schema.get_identifier())
4545
if not peer_rels:
4646
return

backend/infrahub/core/relationship/model.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -459,7 +459,7 @@ async def resolve(self, db: InfrahubDatabase, at: Timestamp | None = None) -> No
459459
self.set_peer(value=peer)
460460

461461
if not self.peer_id and self.peer_hfid:
462-
peer_schema = db.schema.get(name=self.schema.peer, branch=self.branch)
462+
peer_schema = db.schema.get(name=self.schema.peer, branch=self.branch, duplicate=False)
463463
kind = (
464464
self.data["kind"]
465465
if isinstance(self.data, dict) and "kind" in self.data and peer_schema.is_generic_schema

backend/infrahub/core/schema/node_schema.py

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -130,10 +130,12 @@ def inherit_from_interface(self, interface: GenericSchema) -> None:
130130
item_idx = existing_inherited_relationships[relationship.name]
131131
self.relationships[item_idx].update_from_generic(other=new_relationship)
132132

133-
def get_hierarchy_schema(self, db: InfrahubDatabase, branch: Branch | str | None = None) -> GenericSchema:
133+
def get_hierarchy_schema(
134+
self, db: InfrahubDatabase, branch: Branch | str | None = None, duplicate: bool = False
135+
) -> GenericSchema:
134136
if not self.hierarchy:
135137
raise ValueError("The node is not part of a hierarchy")
136-
schema = db.schema.get(name=self.hierarchy, branch=branch)
138+
schema = db.schema.get(name=self.hierarchy, branch=branch, duplicate=duplicate)
137139
if not isinstance(schema, GenericSchema):
138140
raise TypeError
139141
return schema

backend/infrahub/core/validators/relationship/peer.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -22,7 +22,7 @@ class RelationshipPeerUpdateValidatorQuery(RelationshipSchemaValidatorQuery):
2222
name = "relationship_constraints_peer_validator"
2323

2424
async def query_init(self, db: InfrahubDatabase, **kwargs: dict[str, Any]) -> None: # noqa: ARG002
25-
peer_schema = db.schema.get(name=self.relationship_schema.peer, branch=self.branch)
25+
peer_schema = db.schema.get(name=self.relationship_schema.peer, branch=self.branch, duplicate=False)
2626
allowed_peer_kinds = [peer_schema.kind]
2727
if isinstance(peer_schema, GenericSchema):
2828
allowed_peer_kinds += peer_schema.used_by

backend/infrahub/core/validators/tasks.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -36,7 +36,7 @@ async def schema_validate_migrations(message: SchemaValidateMigrationData) -> li
3636
log.info(f"{len(message.constraints)} constraint(s) to validate")
3737
# NOTE this task is a good candidate to add a progress bar
3838
for constraint in message.constraints:
39-
schema = message.schema_branch.get(name=constraint.path.schema_kind)
39+
schema = message.schema_branch.get(name=constraint.path.schema_kind, duplicate=False)
4040
if not isinstance(schema, GenericSchema | NodeSchema):
4141
continue
4242
batch.add(

0 commit comments

Comments
 (0)