import ruamel.yaml as yaml
import arvados.collection
+from arvados.errors import ApiError
from .arvdocker import arv_docker_get_image
from .runner import Runner, arvados_jobs_image, packed_workflow, upload_workflow_collection, trim_anonymous_location
logger.info("%s reused job %s", self.arvrunner.label(self), response["uuid"])
# Give read permission to the desired project on reused jobs
if response["owner_uuid"] != self.arvrunner.project_uuid:
- self.arvrunner.api.links().create(body={
- 'link_class': 'permission',
- 'name': 'can_read',
- 'tail_uuid': self.arvrunner.project_uuid,
- 'head_uuid': response["uuid"],
- }).execute(num_retries=self.arvrunner.num_retries)
+ try:
+ self.arvrunner.api.links().create(body={
+ 'link_class': 'permission',
+ 'name': 'can_read',
+ 'tail_uuid': self.arvrunner.project_uuid,
+ 'head_uuid': response["uuid"],
+ }).execute(num_retries=self.arvrunner.num_retries)
+ except ApiError as e:
+ # The user might not have "manage" access on the job: log
+ # a message and continue.
+ logger.info("Creating read permission on job %s: %s",
+ response["uuid"],
+ e)
with Perf(metrics, "done %s" % self.name):
self.done(response)