Skip to content

Commit

Permalink
Refactor metadata strategy interface to consume dict of outputs.
Browse files Browse the repository at this point in the history
Exposing output names to the generation strategy should allow a more grok-able alternative metadata collection strategy to be implemented with simple output name keys and such.
  • Loading branch information
jmchilton committed Jan 15, 2019
1 parent 6f44910 commit ecd6a9c
Show file tree
Hide file tree
Showing 3 changed files with 16 additions and 8 deletions.
11 changes: 8 additions & 3 deletions lib/galaxy/jobs/__init__.py
Expand Up @@ -1752,9 +1752,14 @@ def setup_external_metadata(self, exec_dir=None, tmp_dir=None,
if datatypes_config is None:
datatypes_config = os.path.join(self.working_directory, 'registry.xml')
self.app.datatypes_registry.to_xml_file(path=datatypes_config)
command = self.external_output_metadata.setup_external_metadata([output_dataset_assoc.dataset for
output_dataset_assoc in
job.output_datasets + job.output_library_datasets],

output_datasets = {}
for output_dataset_assoc in job.output_datasets + job.output_library_datasets:
output_name = output_dataset_assoc.name
assert output_name not in output_datasets
output_datasets[output_dataset_assoc.name] = output_dataset_assoc.dataset

command = self.external_output_metadata.setup_external_metadata(output_datasets,
self.sa_session,
exec_dir=exec_dir,
tmp_dir=tmp_dir,
Expand Down
8 changes: 4 additions & 4 deletions lib/galaxy/metadata/__init__.py
Expand Up @@ -38,7 +38,7 @@ def cleanup_external_metadata(self, sa_session):
pass

@abc.abstractmethod
def setup_external_metadata(self, datasets, sa_session, exec_dir=None,
def setup_external_metadata(self, datasets_dict, sa_session, exec_dir=None,
tmp_dir=None, dataset_files_path=None,
output_fnames=None, config_root=None,
config_file=None, datatypes_config=None,
Expand Down Expand Up @@ -104,7 +104,7 @@ def invalidate_external_metadata(self, datasets, sa_session):
sa_session.flush()
jeom = self._get_output_filenames_by_dataset(dataset, sa_session)

def setup_external_metadata(self, datasets, sa_session, exec_dir=None,
def setup_external_metadata(self, datasets_dict, sa_session, exec_dir=None,
tmp_dir=None, dataset_files_path=None,
output_fnames=None, config_root=None,
config_file=None, datatypes_config=None,
Expand Down Expand Up @@ -143,8 +143,8 @@ def __get_filename_override():
metadata_path_on_compute(metadata_files.filename_override_metadata),
)
return line
if not isinstance(datasets, list):
datasets = [datasets]

datasets = list(datasets_dict.values())
if exec_dir is None:
exec_dir = os.path.abspath(os.getcwd())
if dataset_files_path is None:
Expand Down
5 changes: 4 additions & 1 deletion lib/galaxy/tools/actions/metadata.py
Expand Up @@ -75,7 +75,10 @@ def execute_via_app(self, tool, app, session_id, history_id, user=None,
datatypes_config = os.path.join(job_working_dir, 'registry.xml')
app.datatypes_registry.to_xml_file(path=datatypes_config)
external_metadata_wrapper = get_metadata_compute_strategy(app, job.id)
cmd_line = external_metadata_wrapper.setup_external_metadata(dataset,
output_datatasets_dict = {
dataset_name: dataset,
}
cmd_line = external_metadata_wrapper.setup_external_metadata(output_datatasets_dict,
sa_session,
exec_dir=None,
tmp_dir=job_working_dir,
Expand Down

0 comments on commit ecd6a9c

Please sign in to comment.