Skip to content

Conversation

@fmigneault
Copy link
Member

@fmigneault fmigneault commented Dec 19, 2025

Overview

Improve STAC OpenAPI and service metadata.

Changes

Non-breaking changes

  • STAC API: Improve reported service links.

    • Add STAC_LICENSE_URL to define the relevant license metadata location of the selected implementation.
    • Add STAC_OPENAPI_SPEC_PATH and STAC_OPENAPI_DOCS_PATH to define endpoints of OpenAPI specification.
    • Update the /services/stac response to provide more metadata links, including license details and better
      API metadata references. Notably, replace the generic STAC API Core OpenAPI definition by the
      implementation-specific definition self-served by the selected docker image to document API extensions.

Breaking changes

  • n/a

CI Operations

birdhouse_daccs_configs_branch: master
birdhouse_skip_ci: false

@fmigneault fmigneault self-assigned this Dec 19, 2025
@github-actions github-actions bot added documentation Improvements or additions to documentation component/STAC Features or components related to STAC feature/node-registry Related to https://github.com/DACCS-Climate/DACCS-node-registry labels Dec 19, 2025
Copy link
Collaborator

@tlvu tlvu left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

LGTM

@crim-jenkins-bot
Copy link
Collaborator

E2E Test Results

DACCS-iac Pipeline Results

Build URL : http://daccs-jenkins.crim.ca:80/job/DACCS-iac-birdhouse/3907/
ResultFAILURE

BIRDHOUSE_DEPLOY_BRANCH : stac-service-metadata
DACCS_IAC_BRANCH : master
DACCS_CONFIGS_BRANCH : master
PAVICS_E2E_WORKFLOW_TESTS_BRANCH : master
PAVICS_SDI_BRANCH : master

DESTROY_INFRA_ON_EXIT : true
PAVICS_HOST : https://host-140-216.rdext.crim.ca

PAVICS-e2e-workflow-tests Pipeline Results

Tests URL : http://daccs-jenkins.crim.ca:80/job/PAVICS-e2e-workflow-tests/job/master/583/

NOTEBOOK TEST RESULTS
    
[2025-12-19T02:34:13.118Z] ============================= test session starts ==============================
[2025-12-19T02:34:13.118Z] platform linux -- Python 3.11.12, pytest-8.3.5, pluggy-1.5.0
[2025-12-19T02:34:13.118Z] rootdir: /home/jenkins/agent/workspace/PAVICS-e2e-workflow-tests_master
[2025-12-19T02:34:13.118Z] plugins: anyio-4.9.0, dash-3.0.3, nbval-0.11.0, tornasync-0.6.0.post2, xdist-3.6.1
[2025-12-19T02:34:13.118Z] collected 537 items
[2025-12-19T02:34:13.118Z] 
[2025-12-19T02:34:21.231Z] notebooks-auth/geoserver.ipynb ..................                        [  3%]
[2025-12-19T02:35:21.278Z] notebooks-auth/test_cowbird_jupyter.ipynb ..........                     [  5%]
[2025-12-19T02:35:21.278Z] notebooks-auth/test_thredds.ipynb ...........                            [  7%]
[2025-12-19T02:36:53.370Z] pavics-sdi-master/docs/source/notebooks/CaSR_basic.ipynb ......          [  8%]
[2025-12-19T02:49:45.879Z] pavics-sdi-master/docs/source/notebooks/FAQ_dask_parallel.ipynb ..s..... [  9%]
[2025-12-19T02:50:42.084Z] .                                                                        [ 10%]
[2025-12-19T02:50:51.194Z] pavics-sdi-master/docs/source/notebooks/WCS_example.ipynb ......         [ 11%]
[2025-12-19T02:50:58.489Z] pavics-sdi-master/docs/source/notebooks/WFS_example.ipynb .....          [ 12%]
[2025-12-19T03:00:30.550Z] pavics-sdi-master/docs/source/notebooks/climex.ipynb ...........         [ 14%]
[2025-12-19T03:00:30.551Z] pavics-sdi-master/docs/source/notebooks/eccc-geoapi-climate-stations.ipynb . [ 14%]
[2025-12-19T03:00:34.333Z] ...............                                                          [ 17%]
[2025-12-19T03:00:44.228Z] pavics-sdi-master/docs/source/notebooks/eccc-geoapi-xclim.ipynb .....    [ 18%]
[2025-12-19T03:00:53.344Z] pavics-sdi-master/docs/source/notebooks/esgf-dap.ipynb ....              [ 18%]
[2025-12-19T03:01:07.584Z] pavics-sdi-master/docs/source/notebooks/forecasts.ipynb ......           [ 19%]
[2025-12-19T03:01:13.471Z] pavics-sdi-master/docs/source/notebooks/opendap.ipynb .......            [ 21%]
[2025-12-19T03:01:27.912Z] pavics-sdi-master/docs/source/notebooks/pavics_thredds.ipynb .FF.F       [ 22%]
[2025-12-19T03:01:49.901Z] pavics-sdi-master/docs/source/notebooks/regridding.ipynb .FF..FFFFFFFF.. [ 24%]
[2025-12-19T03:02:34.409Z] F.FFFF.......                                                            [ 27%]
[2025-12-19T03:02:44.966Z] pavics-sdi-master/docs/source/notebooks/rendering.ipynb FFFF             [ 28%]
[2025-12-19T03:02:46.600Z] pavics-sdi-master/docs/source/notebooks/subset-user-input.ipynb ........ [ 29%]
[2025-12-19T03:02:58.903Z] ..FF..FFFFFFFFFFF                                                        [ 32%]
[2025-12-19T03:03:08.363Z] pavics-sdi-master/docs/source/notebooks/subsetting.ipynb FFFFF           [ 33%]
[2025-12-19T03:03:09.740Z] pavics-sdi-master/docs/source/notebook-components/weaver_example.ipynb . [ 33%]
[2025-12-19T03:03:24.070Z] .FFFFFFFF                                                                [ 35%]
[2025-12-19T03:03:44.965Z] finch-main/docs/source/notebooks/dap_subset.ipynb FFFFFFFFFF.            [ 37%]
[2025-12-19T03:03:51.544Z] finch-main/docs/source/notebooks/finch-usage.ipynb FFFFFF                [ 38%]
[2025-12-19T03:03:52.480Z] PAVICS-landing-master/content/notebooks/climate_indicators/PAVICStutorial_ClimateDataAnalysis-1DataAccess.ipynb . [ 38%]
[2025-12-19T03:03:57.877Z] .....                                                                    [ 39%]
[2025-12-19T03:04:44.580Z] PAVICS-landing-master/content/notebooks/climate_indicators/PAVICStutorial_ClimateDataAnalysis-2Subsetting.ipynb . [ 40%]
[2025-12-19T03:05:21.825Z] ............                                                             [ 42%]
[2025-12-19T03:05:53.928Z] PAVICS-landing-master/content/notebooks/climate_indicators/PAVICStutorial_ClimateDataAnalysis-3Climate-Indicators.ipynb . [ 42%]
[2025-12-19T03:06:32.667Z] .....s.                                                                  [ 43%]
[2025-12-19T03:06:39.253Z] PAVICS-landing-master/content/notebooks/climate_indicators/PAVICStutorial_ClimateDataAnalysis-4Ensembles.ipynb . [ 43%]
[2025-12-19T03:06:45.981Z] ..                                                                       [ 44%]
[2025-12-19T03:06:55.972Z] PAVICS-landing-master/content/notebooks/climate_indicators/PAVICStutorial_ClimateDataAnalysis-5Visualization.ipynb . [ 44%]
[2025-12-19T03:08:02.232Z] .........                                                                [ 46%]
[2025-12-19T03:08:12.221Z] PAVICS-landing-master/content/notebooks/climate_indicators/PAVICStutorial_ClimateDataAnalysis-6Regridding_Conversion.ipynb . [ 46%]
[2025-12-19T03:10:10.883Z] ....                                                                     [ 47%]
[2025-12-19T03:10:10.883Z] PAVICS-landing-master/content/notebooks/hydrology/PAVICStutorial_Hydrology-01_Intro.ipynb . [ 47%]
[2025-12-19T03:10:13.103Z] ....                                                                     [ 48%]
[2025-12-19T03:10:17.293Z] PAVICS-landing-master/content/notebooks/hydrology/PAVICStutorial_Hydrology-02_Calibration.ipynb . [ 48%]
[2025-12-19T03:10:27.013Z] .....                                                                    [ 49%]
[2025-12-19T03:10:35.141Z] PAVICS-landing-master/content/notebooks/hydrology/PAVICStutorial_Hydrology-03_Watershed_properties.ipynb F [ 49%]
[2025-12-19T03:10:35.141Z] .FFFFFFFFFFFF                                                            [ 51%]
[2025-12-19T03:10:40.436Z] PAVICS-landing-master/content/notebooks/hydrology/PAVICStutorial_Hydrology-04_Time_series_analysis.ipynb . [ 51%]
[2025-12-19T03:10:40.697Z] ......                                                                   [ 53%]
[2025-12-19T03:10:43.796Z] raven-main/docs/source/notebooks/Region_selection.ipynb .F....FFF        [ 54%]
[2025-12-19T03:10:45.699Z] raven-main/docs/source/notebooks/Subset_climate_data_over_watershed.ipynb . [ 54%]
[2025-12-19T03:10:50.158Z] FFFFFF                                                                   [ 56%]
[2025-12-19T03:10:51.538Z] RavenPy-main/docs/notebooks/00_Introduction_to_JupyterLab.ipynb ......   [ 57%]
[2025-12-19T03:10:57.898Z] RavenPy-main/docs/notebooks/01_Getting_watershed_boundaries.ipynb .FFFFF [ 58%]
[2025-12-19T03:10:57.898Z] FF                                                                       [ 58%]
[2025-12-19T03:11:07.885Z] RavenPy-main/docs/notebooks/02_Extract_geographical_watershed_properties.ipynb F [ 58%]
[2025-12-19T03:11:08.409Z] .FFFFFFFFFFFF                                                            [ 61%]
[2025-12-19T03:12:47.827Z] RavenPy-main/docs/notebooks/03_Extracting_forcing_data.ipynb ........... [ 63%]
[2025-12-19T03:12:47.827Z]                                                                          [ 63%]
[2025-12-19T03:12:50.684Z] RavenPy-main/docs/notebooks/04_Emulating_hydrological_models.ipynb ..... [ 64%]
[2025-12-19T03:12:56.750Z] ...............                                                          [ 67%]
[2025-12-19T03:13:02.606Z] RavenPy-main/docs/notebooks/05_Advanced_RavenPy_configuration.ipynb .... [ 67%]
[2025-12-19T03:13:10.383Z] .........                                                                [ 69%]
[2025-12-19T03:13:21.496Z] RavenPy-main/docs/notebooks/06_Raven_calibration.ipynb ......            [ 70%]
[2025-12-19T03:13:28.281Z] RavenPy-main/docs/notebooks/07_Making_and_using_hotstart_files.ipynb ... [ 71%]
[2025-12-19T03:13:30.881Z] ...                                                                      [ 71%]
[2025-12-19T03:13:37.470Z] RavenPy-main/docs/notebooks/08_Getting_and_bias_correcting_CMIP6_data.ipynb . [ 71%]
[2025-12-19T03:21:28.362Z] ...............                                                          [ 74%]
[2025-12-19T03:21:32.556Z] RavenPy-main/docs/notebooks/09_Hydrological_impacts_of_climate_change.ipynb . [ 74%]
[2025-12-19T03:21:39.142Z] ....                                                                     [ 75%]
[2025-12-19T03:22:19.691Z] RavenPy-main/docs/notebooks/10_Data_assimilation.ipynb ........          [ 77%]
[2025-12-19T03:22:30.684Z] RavenPy-main/docs/notebooks/11_Climatological_ESP_forecasting.ipynb .... [ 77%]
[2025-12-19T03:22:59.035Z] ....                                                                     [ 78%]
[2025-12-19T03:23:07.162Z] RavenPy-main/docs/notebooks/12_Performing_hindcasting_experiments.ipynb . [ 78%]
[2025-12-19T03:23:17.144Z] .......                                                                  [ 80%]
[2025-12-19T03:23:43.907Z] RavenPy-main/docs/notebooks/Assess_probabilistic_flood_risk.ipynb ...... [ 81%]
[2025-12-19T03:23:43.907Z] .                                                                        [ 81%]
[2025-12-19T03:23:50.500Z] RavenPy-main/docs/notebooks/Comparing_hindcasts_and_ESP_forecasts.ipynb . [ 81%]
[2025-12-19T03:24:13.153Z] .......                                                                  [ 82%]
[2025-12-19T03:24:19.998Z] RavenPy-main/docs/notebooks/Distributed_hydrological_modelling.ipynb ... [ 83%]
[2025-12-19T03:24:37.075Z] ....                                                                     [ 84%]
[2025-12-19T03:24:49.664Z] RavenPy-main/docs/notebooks/Hydrological_realtime_forecasting.ipynb .... [ 84%]
[2025-12-19T03:24:56.498Z] ..                                                                       [ 85%]
[2025-12-19T03:25:20.641Z] RavenPy-main/docs/notebooks/Managing_Jupyter_Environments.ipynb ...      [ 85%]
[2025-12-19T03:25:49.167Z] RavenPy-main/docs/notebooks/Perform_Regionalization.ipynb .......        [ 87%]
[2025-12-19T03:25:58.643Z] RavenPy-main/docs/notebooks/Running_HMETS_with_CANOPEX_dataset.ipynb .FF [ 87%]
[2025-12-19T03:25:59.422Z] FFFFFFFFFF                                                               [ 89%]
[2025-12-19T03:26:21.164Z] RavenPy-main/docs/notebooks/Sensitivity_analysis.ipynb ......            [ 90%]
[2025-12-19T03:26:28.061Z] RavenPy-main/docs/notebooks/time_series_analysis.ipynb ...........       [ 92%]
[2025-12-19T03:26:34.633Z] RavenPy-main/docs/notebooks/paper/Perform_a_climate_change_impact_study_on_a_watershed.ipynb . [ 92%]
[2025-12-19T03:27:05.966Z] F...FFFFFF...FFFFFFF                                                     [ 96%]
[2025-12-19T03:27:11.546Z] notebooks/hummingbird.ipynb .FFF..FFFF..                                 [ 98%]
[2025-12-19T03:27:26.047Z] notebooks/stress-tests.ipynb ......                                      [100%]
[2025-12-19T03:27:26.047Z] 
[2025-12-19T03:27:26.047Z] =================================== FAILURES ===================================
    
  

Copy link
Collaborator

@mishaschwartz mishaschwartz left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Looks good! Just one small change...

\$STAC_VERSION
\$STAC_IMAGE
\$STAC_IMAGE_URI
\$STAC_LICENSE_URL
Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

These should go in "VARS" since they'll break things if they're not set

(service-config.json will contain invalid URLs and the OPENAPI_URL and DOCS_URL paths will just be /stac which may confuse the stac-app)

Copy link
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I though VARS is for "you must provide them" and OPTIONAL_VARS for "some default exists", and not overriding them will use the defaults. If overridden with inadequate values, it can break, and it is up to the dev not to provide garbage in.

If that's not the case, then there are many actually breaking OPTIONAL_VARS all over the repository, such as all _DOCKER, _VERSION and _IMAGE (and many more) that create invalid docker compose if explicitly set empty.

I think in this specific case, setting them to empty explicitly (for whatever reason) would still startup correctly, though indeed would lead to weird URLs.

Should the VARS/OPTIONAL_VARS be better defined, with review of existing definitions? It is not the first time this confusion occurred. The current descriptions leave them up to personal interpretation, notably because both can use defaults, "they do not have to be defined in 'env.local' if values are adequate", and empty is technically a defined variable, just not "set".

# list of all variables to be substituted in templates
# some of these variables *could* employ provided values in 'default.env',
# but they must ultimately be defined one way or another for the server to work
VARS='

# list of vars to be substituted in template but they do not have to be set in env.local
# their default values are from 'default.env', so they do not have to be defined in 'env.local' if values are adequate
# they usually are intended to provide additional features or extended customization of their behavior
# when the value provided explicitly, it will be used instead of guessing it by inferred values from other variables
OPTIONAL_VARS='

Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

The error message when a VARS variable is empty is: "Required variable ${v#$} is not set" and then the process exits. This is checked with the -z test which checks for empty or unset strings.

To me this has always implied that these variables must be set to a non-empty value in order for the stack to work properly.

I though VARS is for "you must provide them" and OPTIONAL_VARS for "some default exists",

I think that this is almost right but also it means that you cannot override the default VARS variables and make the value empty.

If that's not the case, then there are many actually breaking OPTIONAL_VARS all over the repository,

This is true as well

Should the VARS/OPTIONAL_VARS be better defined, with review of existing definitions?

Yes please

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

component/STAC Features or components related to STAC documentation Improvements or additions to documentation feature/node-registry Related to https://github.com/DACCS-Climate/DACCS-node-registry

Projects

None yet

Development

Successfully merging this pull request may close these issues.

5 participants