Skip to content

Commit eab9580

Browse files
committed
Forbid converting objects with profiles
1 parent e1bb469 commit eab9580

File tree

1 file changed

+11
-1
lines changed

1 file changed

+11
-1
lines changed

backend/infrahub/graphql/mutations/convert_object_type.py

Lines changed: 11 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -10,9 +10,11 @@
1010
from infrahub.core.convert_object_type.repository_conversion import convert_repository_type
1111
from infrahub.core.convert_object_type.schema_mapping import get_schema_mapping
1212
from infrahub.core.manager import NodeManager
13+
from infrahub.exceptions import ValidationError
1314
from infrahub.repositories.create_repository import RepositoryFinalizer
1415

1516
if TYPE_CHECKING:
17+
from infrahub.core.attribute import BaseAttribute
1618
from infrahub.graphql.initialization import GraphqlContext
1719

1820

@@ -49,14 +51,22 @@ async def mutate(
4951

5052
fields_mapping: dict[str, ConversionFieldInput] = {}
5153
if not isinstance(data.fields_mapping, dict):
52-
raise ValueError(f"Expected `fields_mapping` to be a `dict`, got {type(data.fields_mapping)}")
54+
raise ValidationError(
55+
input_value=f"Expected `fields_mapping` to be a `dict`, got {type(data.fields_mapping)}"
56+
)
5357

5458
for field_name, input_for_dest_field_str in data.fields_mapping.items():
5559
fields_mapping[field_name] = ConversionFieldInput(**input_for_dest_field_str)
5660

5761
node_to_convert = await NodeManager.get_one(
5862
id=str(data.node_id), db=graphql_context.db, branch=graphql_context.branch
5963
)
64+
for attribute_name in source_schema.attribute_names:
65+
attribute: BaseAttribute = getattr(node_to_convert, attribute_name)
66+
if attribute.is_from_profile:
67+
raise ValidationError(
68+
input_value=f"The attribute '{attribute_name}' is from a profile, converting objects that use profiles is not yet supported."
69+
)
6070

6171
# Complete fields mapping with auto-mapping.
6272
mapping = get_schema_mapping(source_schema=source_schema, target_schema=target_schema)

0 commit comments

Comments
 (0)