19464: Record git info as properties
[arvados.git] / sdk / cwl / arvados_cwl / executor.py
index cbe65c3f944b8b0f5cb6f63988eb38d9073624ce..35d4622c6e96d63c75f4da346ed1e370a080650a 100644 (file)
@@ -572,12 +572,18 @@ The 'jobs' API is no longer supported.
 
         return gitproperties
 
+    def set_container_request_properties(self, container, properties):
+        resp = self.api.container_requests().list(filters=[["container_uuid", "=", container["uuid"]]], select=["uuid", "properties"]).execute(num_retries=self.num_retries)
+        for cr in resp["item"]:
+            cr["properties"].update({k.replace("http://arvados.org/cwl#", "arv:"): v for k, v in properties.items()})
+            self.api.container_requests().update(uuid=cr["uuid"], body={"container_request": {"properties": cr["properties"]}}).execute(num_retries=self.num_retries)
+
     def arv_executor(self, updated_tool, job_order, runtimeContext, logger=None):
         self.debug = runtimeContext.debug
 
         git_info = self.get_git_info(updated_tool)
         if git_info:
-            logger.info("Git provenance of %s", updated_tool.tool["id"])
+            logger.info("Git provenance")
             for g in git_info:
                 if git_info[g]:
                     logger.info("  %s: %s", g.split("#", 1)[1], git_info[g])
@@ -776,6 +782,7 @@ The 'jobs' API is no longer supported.
         current_container = arvados_cwl.util.get_current_container(self.api, self.num_retries, logger)
         if current_container:
             logger.info("Running inside container %s", current_container.get("uuid"))
+            self.set_container_request_properties(current_container, git_info)
 
         self.poll_api = arvados.api('v1', timeout=runtimeContext.http_timeout)
         self.polling_thread = threading.Thread(target=self.poll_states)