diff --git a/scripts/crossbackend-processing-poc.py b/scripts/crossbackend-processing-poc.py index 5ae53829..25d33925 100644 --- a/scripts/crossbackend-processing-poc.py +++ b/scripts/crossbackend-processing-poc.py @@ -52,8 +52,8 @@ def main(): }, } - # backend_url = "openeocloud-dev.vito.be" - backend_url = "openeo.cloud" + backend_url = "openeocloud-dev.vito.be" + # backend_url = "openeo.cloud" with TimingLogger(title=f"Connecting to {backend_url}", logger=_log): connection = openeo.connect(url=backend_url).authenticate_oidc() diff --git a/src/openeo_aggregator/partitionedjobs/crossbackend.py b/src/openeo_aggregator/partitionedjobs/crossbackend.py index 09b3f861..c3191600 100644 --- a/src/openeo_aggregator/partitionedjobs/crossbackend.py +++ b/src/openeo_aggregator/partitionedjobs/crossbackend.py @@ -1,7 +1,6 @@ import collections import copy import datetime -import functools import itertools import logging import time @@ -9,7 +8,6 @@ import openeo from openeo import BatchJob -from openeo.util import ContextTimer from openeo_driver.jobregistry import JOB_STATUS from openeo_aggregator.constants import JOB_OPTION_FORCE_BACKEND @@ -137,9 +135,19 @@ def resolve_dependencies( _log.info( f"resolve_dependencies: replace placeholder {dep_id!r} with concrete {batch_job.job_id!r}" ) + try: + # Try to get "canonical" result URL (signed URL) + links = batch_job.get_results().get_metadata()["links"] + [result_url] = [k["href"] for k in links if k.get("rel") == "canonical"] + except Exception as e: + result_url = batch_job.get_results_metadata_url(full=True) + _log.warning( + f"Failed to get canonical result metadata URL for {batch_job.job_id!r}: {e}. " + f"Falling back on default result metadata URL {result_url!r}." + ) result[node_id] = { "process_id": "load_result", - "arguments": {"id": batch_job.get_results_metadata_url(full=True)}, + "arguments": {"id": result_url}, } else: result[node_id] = copy.deepcopy(node)