All notable changes to this project will be documented in this file.
The format is roughly based on Keep a Changelog.
- Harden cross-backend splitting for cases without
load_collectionnodes #202 - Partitioned job tracking: avoid getting stuck in "running" state when upstream job fails to start (#203)
- Partitioned job tracking: move sub-job to error state on
describe_jobfailure to avoid partitioned job being stuck in "running" (#200)
- Basic support for collection queryables: just pass through first non-error upstream backend response (#198)
- Fixup "federation:missing" (Federation Extension) on UDP listing
GET /process_graphs(#185) - Add "federation:backends" (Federation Extension) on UDP listing
GET /process_graphs(#186) - Add "federation:backends" (Federation Extension) on file format listing
GET /file_formats(#186) - Fix broken user job listing when using an OIDC provider that is not supported by each backend (#188)
- Check back-end capabilities for batch job support before trying to list user jobs (#189)
- Rename experimental job option "_agg_force_backend" to bit more official "federation:force-backend" (#190)
- Add "federation:backends" (Federation Extension) on secondary service type listing
GET /service_types(#186) - Add "federation:backends" (Federation Extension) on
GET /udf_runtimes(#186)
- Add
AggregatorBackendConfig.processes_target_versionto define processes target version (#149) - Fixup compatibility with
openeo_driver0.132.0 (Open-EO/openeo-python-driver#382) - Fixup compatibility with
BatchJobs.get_user_jobs()API (#182, Open-EO/openeo-python-driver#332) - Fixup compatibility with new "bands" metadata in batch job results assets (#183, Open-EO/openeo-python-driver#298)
- Provide "federation:missing" (Federation Extension) on
GET /collections(#122) - Provide "federation:missing" (Federation Extension) on
GET /processes(#123)
- Bump minimum required Python version to 3.11 (#127, #174)
- Add title, description, online/offline status and last_status_check to federation listing in capabilities document (#22)
- Provide "federation:missing" (Federation Extension) on
GET /file_formats(#124) - Provide "federation:missing" (Federation Extension) on
GET /process_graphs(#125)
- Jenkins test pipeline: bump to Python 3.11 to align with version used in Docker image (#174)
- Add "openEO Federation Extension" to conformance classes (#169)
- Update to openeo python client version 0.38.0 (#170)
- Fix compatibility with openeo-driver 0.126 (#173)
- Remove concrete openEO Platform configs from generic repo (#117)
- Update to harmonized
job_option/additionalhandling inConnection.create_job(#165, Open-EO/openeo-python-client#683) - Update to new "version" property on
GET /processes(#165, Open-EO/openeo-python-driver#352)
- More advanced process-graph splitting for cross-backend execution: not limited to splitting off
load_collectionnodes, but cut deeper into the graph. (#150)
- Add request timeout configs for listing user jobs (eu-cdse/openeo-cdse-infra#188)
- Better error message when requested collections are spread across separate backends (#153)
- move example configs inside package source tree (#117)
- openeo.cloud configs: only consider "vito" for SENTINEL2_L2A collection (#139)
- Add
aggregator.dummy.pyto wheel (#117)
- Start with
openeo-aggregatordocs, hosted with GitHub Pages at https://open-eo.github.io/openeo-aggregator/ (#142)
- Also support
job_options_updateto inject job options in synchronous processing requests (#135, eu-cdse/openeo-cdse-infra#114)
- Pass through original API errors on synchronous or batch processing (#121)
- Add config option
process_allowedto include/exclude processes (#137)
- Remove deprecated
collection_whitelistconfig (#139)
- Add backend-aware collection allow-list option (#139)
- Add config option
job_options_updateto inject job options before sending a job to upstream back-end (#135)
- Remove (now unused)
AggregatorConfigclass definition (#112)
- Remove deprecated
AggregatorConfigfields:aggregator_backends,partitioned_job_tracking,zookeeper_prefix,memoizer(#112) - Remove
AggregatorConfigusage (both insrcandtests). Remove support forOPENEO_AGGREGATOR_CONFIGbased configuration (#112)
- Add
AggregatorBackendConfig.memoizerand deprecateAggregatorConfig.memoizer(#112)
- Add
AggregatorBackendConfig.partitioned_job_trackingand deprecateAggregatorConfig.partitioned_job_tracking(#112)
- Add
AggregatorBackendConfig.aggregator_backendsand deprecateAggregatorConfig.aggregator_backends(#112)
- Eliminate unused
AggregatorConfig.configured_oidc_providers(#112)
- Add
AggregatorBackendConfigtoconf/aggregator.*.pyfiles (#112)
- move
connections_cache_ttlconfig to AggregatorBackendConfig (#112) - replace
kazoo_client_factoryconfig withzk_memoizer_tracking(#112) - Add
AggregatorBackendConfig.zookeeper_prefixand deprecateAggregatorConfig.zookeeper_prefix(#112)
- Support regexes in
collection_whitelistconfig (eu-cdse/openeo-cdse-infra#54)
- Move
collection_whitelistconfig toAggregatorBackendConfig(#112)
- Move
auth_entitlement_checkconfig toAggregatorBackendConfig(#112)
- Add support for standard
OpenEoBackendConfig.oidc_providersand deprecateAggregatorConfig.configured_oidc_providers(#112)
- Include gunicorn configs in wheel (related to #117)
- Start porting
AggregatorConfigfields toAggregatorBackendConfig(#112)
- Support
aggregator_configasAggregatorConfigvariable name to simplify config system migration (defineAggregatorConfigandAggregatorBackendConfigin same config file) (#112)
- Disable
auth_entitlement_check(check on EGI VO entitlements) in all configs (#133)
- Basic support for
POST /validation: pass through validation of best upstream backend for given process graph (#42)
- Disassociate billing plans from user roles and don't list any for now (openEOPlatform/architecture-docs#381)
- Fix compatibility with
openeo_driver>=0.75.0(newenable_basic_authconfig, which is going to be disabled by default)
- Add (optional) config for collection id whitelisting. Keep union of all "upstream" collections as default. (#129)
- Disable
auto_validationfeature of latestopeneopython client library release (#130) - Fix compatibility with
openeo>=0.25.0(introduction ofOpenEoApiPlainError)
- Dockerfile: switch to
python:3.9-slim-bullseyebase image - Parallelize
/jobsrequests to upstream back-ends (#28) - Increase timeout on getting batch job logs to 120s (#128)
- Added simple UDP support by directly proxying to "first" upstream backend (e.g. VITO) (#90)
- Background task to prime caches (#74)
- Removed
ENVbased config loading for clarity,OPENEO_AGGREGATOR_CONFIGmust be full explicit path to config (#117)
- Initial aggregator-level implementation of cross-backend processing (#115)
- Initial, experimental (client-side) proof of concept for cross-backend processing (#95)
- Consider process availability in backend selection (#100)
- Relax openEO API version constraints for upstream back-ends (#103)
- Support log level for retrieving BatchJob logs (#106)
- User job listing: skip upstream jobs that trigger parse issues instead of failing the whole listing (#109)
- User job listing: support dates with fractional dates (#109)
- Add support for more user roles (#64)
- Experimental: allow back-end selection through job option
- Add support for
load_resultwith a URL (instead of job_id). (#95) - Batch job result metadata: preserve upstream's canonical link (#98)
- Change billing currency from EUR to credits (#96)
- Merging of collection metadata produced duplicate entries in
links: openEOPlatform/architecture-docs#266
- Add SentinelHub openEO backend to production config
- Implement support for federation of secondary services (#78). Including: caching (#84) and skipping of that do not support secondary services (#85)
- Start using pre-commit and black/darker for code style consistency
- Change to openEO API 1.1.0 version of terrascope/vito backend
- Make sure user id (prefix) is logged in JSON logs
- Updated (generous fallback) "FreeTier" user role to 30DayTrial (more strict)
- Use EODC dev instance in aggregator dev config
- Update EGI issuer URL to new Keycloak one (keep old provider under "egi-legacy")
- Improve collection metadata merging (#5)
- Replace local memory cache with centralized ZooKeeper based cache for metadata documents (#2)
- Fix issue https://discuss.eodc.eu/t/invalid-band-name-index-vv/472
- Properly rewrite model id in
load_ml_model(#70)
- Initial implementation of "partitioned" job management, e.g. for large area processing (EP-3475, openEOPlatform/architecture-docs#12)
- Update to the latest version of openeo-driver API
- Fixed stripping back-end id prefix in
load_resultcalls in batch jobs (#19) - Fixed missing "cube:dimension" property on merged collections (openEOPlatform/SRR1_notebooks#9)
- Use default connection timeout on openEO version discovery request too
- Expose openEO Platform billing plans (#6)
- Set
default_planon/mefor early adopters (#6) - Allow access to "free tier" users (users enrolled in openEO Platform virtual org, but without the "early adopter" role) (openEOPlatform/architecture-docs#169 / EP-4092)
- Add (experimental) "federation:missing" on partial user job listings (#27)
- Add CREODIAS back-end on dev instance
- Automatically do warning logs on "slow" backend responses
- Add request correlation id to (JSON) logging
- Refresh back-end connection objects regularly instead of holding on the same ones. Improves resilience of aggregator when a back-end is down. (#18 / EP-4049)
- Fine-tune EGI Early Adopter related "entitlement" error messages (openEOPlatform/architecture-docs#105)
- Do logging in JSON format, targeting ElasticSearch based monitoring (EP-4057)
- More aggressive and harmonized exception handling/logging (#18 / EP-4049)
- Enable
DEBUGlogging foropeneo_aggregatorlogs (EP-4057)
- Preserve "job_options" field in batch job submit
- Preserve "usage" batch job metadata (#31)
- Added support for
/collections/{cid}/items(EP-4022, openEOPlatform/architecture-docs#104) - Implement
/healthendpoint for monitoring (EP-3906) - Initial implementation to list federation backends in capabilities doc (#22)
- Access to authenticated endpoints requires the "early adopter" role now (through EGI Check-in
eduPersonEntitlement) (EP-3969) - Work with aggregator-specific OIDC provider settings (e.g. dedicated default clients) (EP-4046, #7)
- Disable
egi-devOIDC provider (EP-4046, #7) - Improve "early adopter check" error messages (openEOPlatform/architecture-docs#105)
- Only allow OIDC authentication in production (no basic auth)
- User email address as user name in
/me - Config loading: replace JSON based configs with Python based config files
- Move aggregator configs to dedicated dev/prod config files
- Use only one thread per gunicorn worker to avoid race conditions and thread safety issues (#13)
- Increase gunicorn worker timeout to handle long (sync) requests better (#15)
- support aggregator job id mapping in
load_result(#19)
- Initial support for user selected backend through
load_collectionproperties filtering (EP-4011, openEOPlatform/architecture-docs#85)
- Add
/file_formatssupport (#1) - Add initial support for multi-backend collection metadata merging (EP-4011, openEOPlatform/architecture-docs#85)
- Increase default cache TTL to 6 hours (#2)
- Disable CREODIAS based backend (too unstable at the moment)
- Take union of processes instead of intersection (#4)
- Increase timeout for job create/start to 5 minutes (EP-4021)
- Switch to production EODC instance
- Increase default connection timeout from 20s to 30s
- Skip failing back-ends when merging
/jobslistings (EP-4014)