Contribution to pydggsapi
Using Docker Compose for development
Contributors can develop pydggsapi using Docker to set up an isolated environment, reducing dependency issues. It can be done by configuring the docker-compose.yaml file in the docker folder to set up the development environment as needed. The following document outlines the steps to set up the development container. We assumed that the Docker service is installed on the development platform as a prerequisite.
Configuration of docker-compose.yaml and docker_development.env
- Inside the docker folder under the local repository, there are two files that need to be configured before starting the development container, they are:
docker-compose.yaml and
docker_development.env
docker-compose.yaml
services |
path |
description |
|---|---|---|
api |
developement/watch/path |
Automatically updates the running container in real-time when modifying the local source. It should point to the pydggsapi folder in the local repository. |
volumes |
path |
description |
|---|---|---|
dggs_api_config |
driver_opts/device |
Absolute path to a local folder that holds pydggsapi configuration files |
pydggsapi_datasets |
driver_opts/device |
Absolute path to a local folder that holds the set of collections to publish |
docker_development.env
Contributors can export any environment variables defined in Appendix to override the default value. For example, the file name of the dggs_api_config may differ from Docker’s default value (pydggsapi-config.json).
Collection paths
The volume pydggsapi_datasets is mapped to the path /opt/local/src/pydggsapi/demo_data of the Docker container; therefore, the collection paths defined in the pydggsapi configuration(DGGS_API_CONFIG) should follow the mapped path, where it should point to demo_data/<data_source_name>
For example:
"est_topo_dem_10m_elva": {
"filepath": "demo_data/est_topo_dem_10m_clipped_Elva_igeo7_datatree.zarr",
"id_col": "zone_id",
"zone_groups":{
"1": "refinement_level_1",
"2": "refinement_level_2",
}
}
Start up the Docker container with docker-compose.yaml
After the above configurations are set correctly, the development container can be started by the following command at the root directory of the local repository.
sudo docker compose -f ./docker/docker-compose.yaml up api --watch
Using Docker Compose to run unit test cases with pytest
Contributors can also develop and run unit tests of pydggsapi with a Docker container. It can be done by configuring the docker-compose.yaml file in the Docker folder to set up the development environment as needed. The following document outlines the steps to set up the test-runner container.
Configuration of docker-compose.yaml and docker_pytest.env
- Inside the docker folder under the local repository, there are two files that need to be configured before starting the development container, they are:
docker-compose.yaml and
docker_pytest.env
docker-compose.yaml
volumes |
path |
description |
|---|---|---|
dggs_api_config |
driver_opts/device |
Absolute path to a local folder that holds pydggsapi configuration files |
pytest_datasets |
driver_opts/device |
Absolute path to a local folder that holds the set of collections for testing |
pytest_testcases |
driver_opts/device |
Absolute path to a local folder that holds the set of test cases performed by pytest |
docker_pytest.env
Contributors can export any environment variables defined in Appendix to override the default value. For example, the file name of the dggs_api_config may differ from the one used in the development configuration.
Collection paths
The volume pytest_datasets is mapped to the path /opt/local/src/pydggsapi/testing_data of the Docker container; therefore, the collection paths defined in the pydggsapi configuration(DGGS_API_CONFIG) should follow the mapped path, where it should point to testing_data/<data_source_name>
For example:
"est_topo_dem_10m_elva": {
"filepath": "testing_data/est_topo_dem_10m_clipped_Elva_igeo7_datatree.zarr",
"id_col": "zone_id",
"zone_groups":{
"1": "refinement_level_1",
"2": "refinement_level_2",
}
}
Start up the Docker container with docker-compose.yaml
After the above configurations are set correctly, the test-runner container can be started by the following command at the root directory of the local repository.
sudo docker compose -f ./docker/docker-compose.yaml up test-runner