Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
5 changes: 5 additions & 0 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
Expand Up @@ -7,6 +7,11 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0

## [Unreleased]

## [0.34.63] - 2026-10-23

### Added
- **`status`, `stop`, `start` and `uninstall` for an installed Endpoint.** The installer could only install: stopping an Endpoint meant guessing its Compose project and port, removing one was a hunt through containers, volumes, the CKAN it set up and the `.env.backup.*` files that hold old credentials, and support could not ask what was running without reading `.env`. The same script now takes a command, from the checkout or from the web (where it acts on the installed checkout without fetching or moving it), and finds everything by the Compose project's labels. `status` reports instance, project, installer version, catalog, containers, port, `/health`, NetBird and the CKAN set up for it, and changes nothing. `stop` and `start` stop and start the Endpoint's containers and its CKAN as they were created, so the port stays (a bare `docker compose up` publishes the default port, #370). `uninstall` asks first (`--yes` without a terminal), removes the containers, networks, the CKAN containers the installer created and the `.env.backup.*` files, keeps the data, `.env` and install state so a later install brings it back with its data, and with `--remove-data` deletes the volumes, `.env` and the install state too; it never deletes the checkout and leaves NetBird, saying how to leave it. The install state now records `EP_API_PORT`, `CKAN_DIR` and `CKAN_CREATED`. New tests in `install/tests/test_lifecycle_commands.py`. Verified on this machine: an Endpoint with MongoDB and MinIO installed, reported by `status`, stopped (port no longer answering) and started (healthy on the same port, its bucket still there), uninstalled keeping its volumes and reinstalled with its data, then uninstalled with `--remove-data` leaving no container, volume or credential file; `status` from the web reported two Endpoints installed with 0.34.56 on the same host, each with its own port and health (#372).

## [0.34.62] - 2026-10-23

### Security
Expand Down
2 changes: 1 addition & 1 deletion api/config/swagger_settings.py
Original file line number Diff line number Diff line change
Expand Up @@ -12,7 +12,7 @@ class Settings(BaseSettings):

swagger_title: str = "API Documentation"
swagger_description: str = "This is the API documentation."
swagger_version: str = "0.34.62"
swagger_version: str = "0.34.63"
root_path: str = "" # API root path prefix (e.g., "/test" or "")
is_public: bool = True
metrics_endpoint: str = "https://federation.ndp.utah.edu/metrics/"
Expand Down
4 changes: 4 additions & 0 deletions docs/operations.md
Original file line number Diff line number Diff line change
Expand Up @@ -16,6 +16,10 @@ The installer renders `.env` from `example.env`, then runs
`docker compose --profile <...> up -d --build` from the repository checkout and
waits for `${ROOT_PATH}/health` to answer 200.

Once installed, `./install/install.sh status`, `stop`, `start` and
`uninstall [--remove-data]` manage it (see
[install/README.md](../install/README.md#managing-an-installed-endpoint)).

## What runs

Everything is defined in `docker-compose.yml`. The `api` service always starts;
Expand Down
28 changes: 28 additions & 0 deletions install/README.md
Original file line number Diff line number Diff line change
Expand Up @@ -326,6 +326,34 @@ and prove nothing. Checking the key needs a username, so with `--ckan-url`
pass `--ckan-sysadmin <name>` to enable it; without it the installer says the
key went unverified rather than implying it passed.

## Managing an installed Endpoint

The same script reports on, stops, starts and removes the Endpoint a checkout
holds — from the checkout (`./install/install.sh <command>`) or from the web
(`bash <(curl …/install.sh) <command>`, which acts on `~/ndp-ep`, or
`~/ndp-ep-<name>` with `--instance <name>`, or `EP_INSTALL_DIR`, without
fetching anything). It finds the containers, volumes and networks by their
Compose project label, so no port or profile has to be remembered.

| Command | |
|---|---|
| `status` | instance, Compose project, installer version, catalog, containers running, port, `/health`, NetBird connection, the CKAN set up for it; changes nothing and writes no log |
| `stop` | stops the Endpoint's containers, and the CKAN the installer set up for it |
| `start` | starts them again as they were created, on the same ports (unlike a bare `docker compose up`, which publishes the default port, #370) |
| `uninstall` | removes the containers and networks, the CKAN containers the installer created, and the `.env.backup.*` files, which hold old credentials; asks first (`--yes` where nobody can answer) |
| `uninstall --remove-data` | also deletes the data volumes (and the CKAN's), `.env` and `.env.install-state` |

Without `--remove-data` the data, `.env` and the install state stay, so running
the installer again brings the same Endpoint back with its data: the state
holds the generated MongoDB and MinIO credentials that data opens with. The
checkout itself is never deleted, and the machine stays in NetBird (other
Endpoints on it may use it); `uninstall` says how to leave.

The install records the port (`EP_API_PORT`) and the CKAN folder it created
(`CKAN_DIR`, `CKAN_CREATED`) in `.env.install-state` since 0.34.63; for an
Endpoint installed earlier the port is read from its running container and the
CKAN folder is the installer's default.

## The install log

Every run is appended to `install.log` in the checkout (`~/ndp-ep` or
Expand Down
Loading
Loading