Skip to content

Commit 122a18f

Browse files
authored
workspace URIs only apply to newly exported assets
* workspace URIs only apply to newly exported assets Open-EO/openeo-geopyspark-driver#677 Traceback (most recent call last): File "/opt/openeo/lib/python3.8/site-packages/openeogeotrellis/deploy/batch_job.py", line 763, in start_main main(sys.argv) File "/opt/openeo/lib/python3.8/site-packages/openeogeotrellis/deploy/batch_job.py", line 246, in main run_driver() File "/opt/openeo/lib/python3.8/site-packages/openeogeotrellis/deploy/batch_job.py", line 207, in run_driver run_job( File "/opt/openeo/lib/python3.8/site-packages/openeogeotrellis/utils.py", line 57, in memory_logging_wrapper return function(*args, **kwargs) File "/opt/openeo/lib/python3.8/site-packages/openeogeotrellis/deploy/batch_job.py", line 489, in run_job stac_file_paths += _export_to_workspaces( File "/opt/openeo/lib/python3.8/site-packages/openeogeotrellis/deploy/batch_job.py", line 568, in _export_to_workspaces (workspace_uri,) = asset.extra_fields["alternate"].values() KeyError: 'alternate' * update CHANGELOG Open-EO/openeo-geopyspark-driver#677 * cleanup Open-EO/openeo-geopyspark-driver#677
1 parent dc09ebd commit 122a18f

File tree

3 files changed

+11
-13
lines changed

3 files changed

+11
-13
lines changed

CHANGELOG.md

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -23,10 +23,11 @@ and start a new "In Progress" section above it.
2323

2424
- `load_collection`: more consistent cube extent handling when a buffer is applied. ([#334](https://github.com/Open-EO/openeo-python-driver/issues/334))
2525
- `load_collection`: collapse multiple `load_collection` calls into a single one in cases with buffers. ([#336](https://github.com/Open-EO/openeo-python-driver/issues/336))
26+
- `export_workspace`: fix `KeyError: 'alternate'` upon merging into existing STAC collection ([Open-EO/openeo-geopyspark-driver#677](https://github.com/Open-EO/openeo-geopyspark-driver/issues/677))
2627

2728
## 0.121.0
2829

29-
- `export_workspace`: experimental support for merging STAC Collections ([Open-EO/openeo-geopyspark-driver#677)](https://github.com/Open-EO/openeo-geopyspark-driver/issues/677))
30+
- `export_workspace`: experimental support for merging STAC Collections ([Open-EO/openeo-geopyspark-driver#677](https://github.com/Open-EO/openeo-geopyspark-driver/issues/677))
3031

3132
## 0.120.0
3233

openeo_driver/workspace.py

Lines changed: 3 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -110,8 +110,6 @@ def replace_asset_href(asset_key: str, asset: Asset) -> Asset:
110110
file_operation(
111111
asset.extra_fields["_original_absolute_href"], str(Path(new_item.get_self_href()).parent)
112112
)
113-
114-
merged_collection = new_collection
115113
else:
116114
merged_collection = _merge_collection_metadata(existing_collection, new_collection)
117115
new_collection = new_collection.map_assets(replace_asset_href)
@@ -129,12 +127,12 @@ def replace_asset_href(asset_key: str, asset: Asset) -> Asset:
129127
asset.extra_fields["_original_absolute_href"], Path(new_item.get_self_href()).parent
130128
)
131129

132-
for item in merged_collection.get_items():
130+
for item in new_collection.get_items():
133131
for asset in item.assets.values():
134132
workspace_uri = f"file:{Path(item.get_self_href()).parent / Path(asset.href).name}"
135133
asset.extra_fields["alternate"] = {"file": workspace_uri}
136134

137-
return merged_collection
135+
return new_collection
138136
else:
139137
raise NotImplementedError(stac_resource)
140138

@@ -148,6 +146,7 @@ def _merge_collection_metadata(existing_collection: Collection, new_collection:
148146
existing_collection.extent.temporal, new_collection.extent.temporal
149147
)
150148

149+
# TODO: retains existing collection ID and description; is this right?
151150
# TODO: merge additional metadata?
152151

153152
return existing_collection

tests/test_workspace.py

Lines changed: 6 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,6 @@
55

66
from pystac import Asset, Collection, Extent, Item, SpatialExtent, TemporalExtent, CatalogType
77
import pytest
8-
from pystac.layout import CustomLayoutStrategy
98

109
from openeo_driver.workspace import DiskWorkspace
1110

@@ -58,12 +57,12 @@ def test_merge_from_disk_new(tmp_path):
5857
target = Path("path") / "to" / "collection.json"
5958

6059
workspace = DiskWorkspace(root_directory=tmp_path)
61-
merged_collection = workspace.merge(stac_resource=new_collection, target=target)
60+
imported_collection = workspace.merge(stac_resource=new_collection, target=target)
6261

63-
assert isinstance(merged_collection, Collection)
62+
assert isinstance(imported_collection, Collection)
6463
asset_workspace_uris = {
6564
asset_key: asset.extra_fields["alternate"]["file"]
66-
for item in merged_collection.get_items()
65+
for item in imported_collection.get_items()
6766
for asset_key, asset in item.get_assets().items()
6867
}
6968
assert asset_workspace_uris == {
@@ -106,16 +105,15 @@ def test_merge_from_disk_into_existing(tmp_path):
106105

107106
workspace = DiskWorkspace(root_directory=tmp_path)
108107
workspace.merge(stac_resource=existing_collection, target=target)
109-
merged_collection = workspace.merge(stac_resource=new_collection, target=target)
108+
imported_collection = workspace.merge(stac_resource=new_collection, target=target)
110109

111-
assert isinstance(merged_collection, Collection)
110+
assert isinstance(imported_collection, Collection)
112111
asset_workspace_uris = {
113112
asset_key: asset.extra_fields["alternate"]["file"]
114-
for item in merged_collection.get_items()
113+
for item in imported_collection.get_items()
115114
for asset_key, asset in item.get_assets().items()
116115
}
117116
assert asset_workspace_uris == {
118-
"asset1.tif": f"file:{workspace.root_directory / 'path' / 'to' / 'collection.json_items' / 'asset1.tif'}",
119117
"asset2.tif": f"file:{workspace.root_directory / 'path' / 'to' / 'collection.json_items' / 'asset2.tif'}",
120118
}
121119

0 commit comments

Comments
 (0)