diff --git a/cognite_toolkit/_cdf_tk/client/api/instances.py b/cognite_toolkit/_cdf_tk/client/api/instances.py index 7cfbd8a146..162bd02bdc 100644 --- a/cognite_toolkit/_cdf_tk/client/api/instances.py +++ b/cognite_toolkit/_cdf_tk/client/api/instances.py @@ -86,7 +86,7 @@ def _validate_page_response( def _validate_response(self, response: SuccessResponse) -> ResponseItems[InstanceDefinitionId]: return ResponseItems[InstanceDefinitionId].model_validate_json(response.body) - def create(self, items: Sequence[InstanceRequest]) -> list[InstanceSlimDefinition]: + def create(self, items: Sequence[InstanceRequest], replace: bool = False) -> list[InstanceSlimDefinition]: """Create instances in CDF. Args: @@ -95,7 +95,7 @@ def create(self, items: Sequence[InstanceRequest]) -> list[InstanceSlimDefinitio List of created InstanceSlimDefinition objects. """ response_items: list[InstanceSlimDefinition] = [] - for response in self._chunk_requests(items, "upsert", self._serialize_items): + for response in self._chunk_requests(items, "upsert", self._serialize_items, extra_body={"replace": replace}): response_items.extend(PagedResponse[InstanceSlimDefinition].model_validate_json(response.body).items) return response_items diff --git a/tests_smoke/test_commands/test_migrate_infield.py b/tests_smoke/test_commands/test_migrate_infield.py index de95052cd1..5d16ad2f05 100644 --- a/tests_smoke/test_commands/test_migrate_infield.py +++ b/tests_smoke/test_commands/test_migrate_infield.py @@ -200,14 +200,14 @@ def infield_legacy( for view_id in sorted_views: instance_batch = to_create_by_view_id[view_id] try: - _ = client.tool.instances.create(instance_batch) + _ = client.tool.instances.create(instance_batch, replace=True) except ToolkitAPIError as e: raise AssertionError( f"Failed to create instance batch for view {view_id!s}. Error: {e}. Batch: {[item.as_id() for item in instance_batch]}" ) from e if edges: try: - _ = client.tool.instances.create(edges) + _ = client.tool.instances.create(edges, replace=True) except ToolkitAPIError as e: raise AssertionError( f"Failed to create instance batch for edges with no view. Error: {e}. Batch: {[item.as_id() for item in edges]}" @@ -355,6 +355,10 @@ def test_migrate_data( "InField migration failed. Found source space identifier in destination data, indicating that some instances were not migrated correctly." ) + # Cleanup for next run. + destination_node_ids = [node_id for node_ids in destination_by_view_id.values() for node_id in node_ids] + toolkit_client.tool.instances.delete(destination_node_ids) + data_regression.check({"instances": destination_instances}) def _get_destination_nodes(