Skip to content

Commit b895948

Browse files
committed
expose items in job_metadata.json #1111
1 parent 0e27071 commit b895948

File tree

2 files changed

+14
-9
lines changed

2 files changed

+14
-9
lines changed

openeogeotrellis/deploy/batch_job.py

Lines changed: 12 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -80,6 +80,7 @@
8080
log_memory,
8181
to_jsonable,
8282
wait_till_path_available,
83+
unzip,
8384
)
8485

8586
logger = logging.getLogger('openeogeotrellis.deploy.batch_job')
@@ -367,6 +368,7 @@ def run_job(
367368
)
368369
# perform a first metadata write _before_ actually computing the result. This provides a bit more info, even if the job fails.
369370
write_metadata({**result_metadata, **_get_tracker_metadata("")}, metadata_file)
371+
items = {}
370372

371373
for result in results:
372374
result.options["batch_mode"] = True
@@ -387,17 +389,16 @@ def run_job(
387389
ml_model_metadata = result.get_model_metadata(str(output_file))
388390
logger.info("Extracted ml model metadata from %s" % output_file)
389391

390-
def result_write_assets(result_arg) -> dict:
392+
def result_write_assets(result_arg) -> (dict, dict):
391393
items = result_arg.write_assets(str(output_file))
392394
assets = {
393395
asset_key: asset for item in items.values() for asset_key, asset in item.get("assets", {}).items()
394396
}
395-
# TODO: write items to job_metadata.json
396-
return assets
397+
return assets, items
397398

398399
concurrent_save_results = int(job_options.get("concurrent-save-results", 1))
399400
if concurrent_save_results == 1:
400-
assets_metadata = list(map(result_write_assets, results))
401+
assets_metadata, results_items = unzip(*map(result_write_assets, results))
401402
elif concurrent_save_results > 1:
402403
with concurrent.futures.ThreadPoolExecutor(max_workers=concurrent_save_results) as executor:
403404
futures = []
@@ -406,9 +407,13 @@ def result_write_assets(result_arg) -> dict:
406407

407408
for _ in concurrent.futures.as_completed(futures):
408409
continue
409-
assets_metadata = list(map(lambda f: f.result(), futures))
410+
assets_metadata, results_items = unzip(*map(lambda f: f.result(), futures))
410411
else:
411412
raise ValueError(f"Invalid concurrent_save_results: {concurrent_save_results}")
413+
assets_metadata = list(assets_metadata)
414+
415+
# flattens items for each results into one list
416+
items = [item for result in results_items for item in result.values()]
412417

413418
for the_assets_metadata in assets_metadata:
414419
for name, asset in the_assets_metadata.items():
@@ -491,7 +496,7 @@ def result_write_assets(result_arg) -> dict:
491496
ml_model_metadata=ml_model_metadata,
492497
)
493498

494-
write_metadata({**result_metadata, **_get_tracker_metadata("")}, metadata_file)
499+
write_metadata({**result_metadata, **_get_tracker_metadata(""), **{"items": items}}, metadata_file)
495500
logger.debug("Starting GDAL-based retrieval of asset metadata")
496501
result_metadata = _assemble_result_metadata(
497502
tracer=tracer,
@@ -519,7 +524,7 @@ def result_write_assets(result_arg) -> dict:
519524
enable_merge=job_options.get("export-workspace-enable-merge", False),
520525
)
521526
finally:
522-
write_metadata({**result_metadata, **_get_tracker_metadata("")}, metadata_file)
527+
write_metadata({**result_metadata, **_get_tracker_metadata(""), **{"items": items}}, metadata_file)
523528

524529

525530
def write_metadata(metadata: dict, metadata_file: Path):

tests/test_batch_result.py

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -2674,12 +2674,12 @@ def test_unified_asset_keys(tmp_path, separate_asset_per_band, expected_tiff_fil
26742674
assert tiff_files == expected_tiff_files
26752675

26762676
with open(metadata_file) as f:
2677-
items = json.load(f).get("items")
2677+
items = json.load(f)["items"]
26782678

26792679
print(f"items={json.dumps(items, indent=2)}")
2680-
return
26812680

26822681
assert len(items) == 2
2682+
return
26832683

26842684
item1_assets = items[0]["assets"]
26852685
assert len(item1_assets) == 1

0 commit comments

Comments
 (0)