|
18 | 18 | import six
|
19 | 19 | from six import string_types
|
20 | 20 | from six.moves import range
|
| 21 | +from uuid import UUID # pylint: disable=unused-import |
21 | 22 |
|
22 | 23 | from . import command_line_tool, expression
|
23 | 24 | from .builder import CONTENT_LIMIT
|
@@ -255,7 +256,10 @@ def do_output_callback(self, final_output_callback):
|
255 | 256 | self.prov_obj.document.wasEndedBy(
|
256 | 257 | self.prov_obj.workflow_run_uri, None, self.prov_obj.engine_uuid,
|
257 | 258 | datetime.datetime.now())
|
258 |
| - self.prov_obj.finalize_prov_profile(str(self.name)) |
| 259 | + prov_ids = self.prov_obj.finalize_prov_profile(self.name) |
| 260 | + # Tell parent to associate our provenance files with our wf run |
| 261 | + self.parent_wf.activity_has_provenance(self.prov_obj.workflow_run_uri, prov_ids) |
| 262 | + |
259 | 263 | _logger.info(u"[%s] completed %s", self.name, self.processStatus)
|
260 | 264 | if _logger.isEnabledFor(logging.DEBUG):
|
261 | 265 | _logger.debug(u"[%s] %s", self.name, json_dumps(wo, indent=4))
|
@@ -499,12 +503,23 @@ def __init__(self,
|
499 | 503 | toolpath_object, loadingContext)
|
500 | 504 | self.provenance_object = None # type: Optional[CreateProvProfile]
|
501 | 505 | if loadingContext.research_obj:
|
502 |
| - orcid = loadingContext.orcid |
503 |
| - full_name = loadingContext.cwl_full_name |
| 506 | + run_uuid = None # type: Optional[UUID] |
| 507 | + is_master = not(loadingContext.prov_obj) # Not yet set |
| 508 | + if is_master: |
| 509 | + run_uuid = loadingContext.research_obj.ro_uuid |
| 510 | + |
504 | 511 | self.provenance_object = CreateProvProfile(
|
505 |
| - loadingContext.research_obj, full_name, orcid, |
506 |
| - loadingContext.host_provenance, loadingContext.user_provenance) |
| 512 | + loadingContext.research_obj, |
| 513 | + full_name=loadingContext.cwl_full_name, |
| 514 | + orcid=loadingContext.orcid, |
| 515 | + host_provenance=loadingContext.host_provenance, |
| 516 | + user_provenance=loadingContext.user_provenance, |
| 517 | + run_uuid=run_uuid # inherit RO UUID for master wf run |
| 518 | + ) |
| 519 | + # TODO: Is Workflow(..) only called when we are the master workflow? |
507 | 520 | self.parent_wf = self.provenance_object
|
| 521 | + |
| 522 | + # FIXME: Won't this overwrite prov_obj for nested workflows? |
508 | 523 | loadingContext.prov_obj = self.provenance_object
|
509 | 524 | loadingContext = loadingContext.copy()
|
510 | 525 | loadingContext.requirements = self.requirements
|
|
0 commit comments