Unverified Commit 539441dd authored by Marius van den Beek's avatar Marius van den Beek Committed by GitHub
Browse files

Merge pull request #20485 from mvdbeek/fix_workflow_invocation_import_link_outputs

[24.2] Link workflow invocation outputs upon importing invocation
parents 876fdf0b 6d0a0b53
Loading
Loading
Loading
Loading
+10 −0
Original line number Diff line number Diff line
@@ -1194,6 +1194,11 @@ class ModelImportStore(metaclass=abc.ABCMeta):
                label = workflow_output.get("label")
                workflow_output = workflow.workflow_output_for(label)
                output_dataset_collection.workflow_output = workflow_output
                output_dataset_collection_attrs = output_dataset_collection_attrs.get("dataset_collection") or {}
                if hdca_id := output_dataset_collection_attrs.get(object_key):
                    hdca = object_import_tracker.find_hdca(hdca_id)
                    if hdca:
                        output_dataset_collection.dataset_collection = hdca
                self._session_add(output_dataset_collection)
                output_dataset_collections.append(output_dataset_collection)

@@ -1206,6 +1211,11 @@ class ModelImportStore(metaclass=abc.ABCMeta):
                label = workflow_output.get("label")
                workflow_output = workflow.workflow_output_for(label)
                output_dataset.workflow_output = workflow_output
                output_dataset_dataset_attrs = output_dataset_attrs.get("dataset") or {}
                if dataset_id := output_dataset_dataset_attrs.get(object_key):
                    dataset = object_import_tracker.find_hda(dataset_id)
                    if dataset:
                        output_dataset.dataset = dataset
                self._session_add(output_dataset)
                output_datasets.append(output_dataset)

+6 −0
Original line number Diff line number Diff line
@@ -99,6 +99,7 @@ class TestWorkflowTasksIntegration(PosixFileSourceSetup, IntegrationTestCase, Us
            assert "wf_output_1" in output_collections
            out = output_collections["wf_output_1"]
            assert out["src"] == "hdca"
            assert out["id"]

            inputs = invocation_details["inputs"]
            assert inputs["0"]["src"] == "hdca"
@@ -144,6 +145,9 @@ steps:
    in:
      input:
        source: input
outputs:
  extracted_dataset:
    outputSource: extract_dataset/output
"""
            )
            inputs = {"input": {"src": "hdca", "id": copied_collection["id"]}}
@@ -164,6 +168,8 @@ steps:
                workflow_request=workflow_request,
            )
            imported_invocation_details = self._export_and_import_workflow_invocation(summary)
            assert imported_invocation_details["outputs"]["extracted_dataset"]["src"] == "hda"
            assert imported_invocation_details["outputs"]["extracted_dataset"]["id"]
            original_contents = self.dataset_populator.get_history_contents(new_history["id"])
            contents = self.dataset_populator.get_history_contents(imported_invocation_details["history_id"])
            assert len(contents) == len(original_contents) == 5