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)
import arvados
import arvados_cwl
import cwltool.process
+from arvados.errors import ApiError
from schema_salad.ref_resolver import Loader
from schema_salad.sourceline import cmap
from .mock_discovery import get_rootDesc
"head_uuid": "zzzzz-819sb-yyyyyyyyyyyyyyy",
})
)
+ # Simulate an API excepction when trying to create a
+ # sharing link on the job
+ runner.api.links().create.side_effect = ApiError(
+ mock.MagicMock(return_value={'status': 403}),
+ 'Permission denied')
+ j.run(enable_reuse=enable_reuse)
+ j.output_callback.assert_called_with({}, 'success')
else:
assert not runner.api.links().create.called