Releases: lsst-sqre/nublado
4.0.0
This is the first release of the new merged Nublado release. It contains the Nubaldo controller, a JupyterHub spawner implementation that uses the controller to create user labs, a JupyterHub authenticator implementation to use Gafaelfawr, and the Docker configuration to build a custom JupyterHub image containing that spawner and authenticator.
In previous versions of Nublado, the equivalents of these components were maintained in separate repositories with independent version numbers.
As of this release, all of these components are maintained and released together using semver versioning.
What's Changed
- [neophile] Update dependencies by @neophile-square in #206
- DM-41188: Move file server enabled checks by @rra in #207
- DM-41188: Rework state management for file servers by @rra in #208
- DM-41528: Convert to vertical monorepo by @rra in #209
- DM-41528: Incorporate the REST spawner and JupyterHub build by @rra in #210
- DM-41528: Reorganize the JupyterHub build by @rra in #211
- DM-41528: Add Python 3.10 tests for Hub plugins by @rra in #212
- DM-41595: Fix remaining Ruff issues by @rra in #213
- DM-41595: Use ruff format instead of black by @rra in #214
- DM-41613: Harden lab spawning against event watch errors by @rra in #215
- DM-41622: Recover after exceptions in file server watcher by @rra in #216
- DM-41622: Add explicit timeout for creating file servers by @rra in #217
- DM-41622: Add more timeouts on Kubernetes operations by @rra in #218
- DM-41622: Properly handle file server exceptions by @rra in #219
- DM-41630: Improve controller models by @rra in #220
- DM-41630: Remove pod state tracking by @rra in #221
- DM-41630: Use match when constructing prepuller source by @rra in #222
- DM-41630: Rename configuration_dependency by @rra in #223
- DM-41630: Remove Factory create_slack_client method by @rra in #224
- DM-41630: Improve description of fileserver.enabled config by @rra in #225
- DM-41630: Rename instance_url in FileserverBuilder by @rra in #226
- DM-41630: Convert fileserver creation to new template system by @rra in #227
- DM-41630: Add .conda to documentation of reset_env by @rra in #228
- DM-41630: Redo spawner form generation by @rra in #229
- DM-41630: Move lab resource construction into Config by @rra in #230
- DM-41630: Move size recreation into LabBuilder by @rra in #231
- DM-41630: Standardize base_url handling in controller by @rra in #232
- DM-41630: Clean up formatting of spawner form by @rra in #233
- DM-41630: Partly overhaul the controller configuration by @rra in #234
- DM-41630: Disallow unknown controller config options by @rra in #235
- DM-41630: Move Docker credentials configuration by @rra in #236
- DM-41630: Fix file server path_prefix by @rra in #237
- DM-41630: Remove unnecessary delay in prepuller pods by @rra in #238
- DM-41630: Require setting the namespace prefix for labs by @rra in #239
- DM-41630: Diagnose invalid lab size on creation by @rra in #240
- DM-41630: Move domain images for spawner form construction by @rra in #241
- DM-41630: Separate NSS configuration from simple files by @rra in #242
- DM-41630: Delete dead code from the Nubaldo controller by @rra in #243
- DM-41630: Allow use of SI units for file server resources by @rra in #244
- DM-41630: Update FastAPI handler parameters by @rra in #245
- DM-41630: Reorganize file server routes by @rra in #246
- DM-41630: Add method to create NodeImage from RSPImage by @rra in #247
- DM-41630: Filter available labs by the user's quota by @rra in #248
- DM-41630: Prevent mounting over /tmp by @rra in #249
- DM-41630: Reject setting reserved env variables by @rra in #250
- DM-41630: Report timeouts to Slack by @rra in #251
- [neophile] Update dependencies by @neophile-square in #252
- DM-41630: Handle race condition reaping lab deletions by @rra in #253
- DM-41630: Add support for update-deps-no-hashes by @rra in #254
- DM-41630: Update to latest alpha release of Safir by @rra in #255
- DM-41630: Add propagation policy to file server deletes by @rra in #256
- DM-41630: Add request timeouts to all Kubernetes calls by @rra in #257
- DM-41630: Further separate controller and hub testing by @rra in #258
- DM-41630: Fix Nublado Docker image build issues by @rra in #259
- DM-41630: Use a list for lab sizes instead of a dict by @rra in #260
- DM-41708: Fix nox -s test with specific files by @rra in #261
- DM-41708: Upgrade pre-commit in lint nox session by @rra in #262
- DM-41708: Update to Safir 5.0.0a4 by @rra in #263
- DM-41708: Use GafaelfawrUserInfo for file server creation by @rra in #264
- DM-41708: Fix supplemental groups for the file server by @rra in #265
- DM-41708: Separate volumes and volume mounts by @rra in #266
- DM-41708: Fix file server reconciliation bugs by @rra in #267
- DM-41708: Wait for file server pod creation properly by @rra in #268
- [neophile] Update dependencies by @neophile-square in #269
- DM-41793: Update lab spawning events for new sse-starlette by @rra in #270
- DM-41793: Overhaul Kubernetes timeout handling (again) by @rra in #271
- DM-41793: Add separate exception for timeouts by @rra in #272
- DM-41630: Remove clickable link to file server by @rra in #273
- DM-41793: Change default delete timeout for file servers by @rra in #274
- DM-41793: Add error handling tests for file servers by @rra in #275
- DM-41820: Add extraAnnotations support for file servers by @rra in #276
- DM-41820: Add nodeSelector for labs and file servers by @rra in #277
- DM-41820: Add tolerations to lab and file server pods by @rra in #278
- DM-41820: Add affinity support for labs and file server pods by @rra in #279
- DM-38714: Remove completed development tasks by @rra in #280
- Add a Nublado manual by @rra in #281
- DM-38714: Add architecture and component diagrams by @rra in #282
- DM-38714: Documentation formatting cleanups by @rra in #283
- DM-41907: Improve logging of lab operations by @rra in #284
- DM-38714: Add sequence diagrams to documentation by @rra in #285
- DM-38714: Document the Nublado configuration by @rra in #286
- DM-38714: Add internals documentation for JupyterHub plugins by @rra in #287
- DM-38714: Add internal API documentation for the controller by @rra in #288
- DM-38714: Limit link depth on developer page by @rra in #289
- DM-41979: Require explicit volume mounts for file servers by @rra in #290
- DM-41998: Restrict access to file server ...
4.0.0a5
4.0.0a4
What's Changed
- DM-41907: Do not run background tasks immediately by @rra in #304
- tickets/DM-42034: make "initdir" into "inithome", turn into Python, and roll into nublado monorepo by @athornton in #293
- DM-42119: Add nox environment caching by @rra in #307
- Bump actions/setup-python from 4 to 5 by @dependabot in #306
- DM-42125: Overhaul Docker image building by @rra in #308
- DM-42125: Improve dependency management by @rra in #309
- DM-42125: Refactor inithome Python code by @rra in #310
- DM-42125: Disable coverage for inithome by @rra in #311
- DM-42125: Flesh out home directory and init container docs by @rra in #312
- DM-42125: Add inithome to internals documentation by @rra in #313
- DM-42148: Update to Python 3.12 by @rra in #314
- DM-42153: Set privileged for privileged init containers by @rra in #315
- DM-42153: Do not mount service token in lab containers by @rra in #316
- DM-42153: Remove unneeded MANIFEST.in by @rra in #317
Full Changelog: 4.0.0a3...4.0.0a4
4.0.0a3
4.0.0a2
What's Changed
- DM-42029: Update to Safir 5.1.0 by @rra in #294
- DM-42029: Add nodeSelector support to the prepuller by @rra in #295
- DM-42029: Add tolerations support to the prepuller by @rra in #296
- tickets/DM-42070: Add .user_setups to list of relocated files by @athornton in #297
- tickets/DM-42070: Set checkbox value to true in spawner form by @athornton in #298
- DM-41907: Move background task management by @rra in #299
- DM-41907: Fix race conditions for labs and file servers by @rra in #300
Full Changelog: 4.0.0a1...4.0.0a2
4.0.0a1
What's Changed
- [neophile] Update dependencies by @neophile-square in #206
- DM-41188: Move file server enabled checks by @rra in #207
- DM-41188: Rework state management for file servers by @rra in #208
- DM-41528: Convert to vertical monorepo by @rra in #209
- DM-41528: Incorporate the REST spawner and JupyterHub build by @rra in #210
- DM-41528: Reorganize the JupyterHub build by @rra in #211
- DM-41528: Add Python 3.10 tests for Hub plugins by @rra in #212
- DM-41595: Fix remaining Ruff issues by @rra in #213
- DM-41595: Use ruff format instead of black by @rra in #214
- DM-41613: Harden lab spawning against event watch errors by @rra in #215
- DM-41622: Recover after exceptions in file server watcher by @rra in #216
- DM-41622: Add explicit timeout for creating file servers by @rra in #217
- DM-41622: Add more timeouts on Kubernetes operations by @rra in #218
- DM-41622: Properly handle file server exceptions by @rra in #219
- DM-41630: Improve controller models by @rra in #220
- DM-41630: Remove pod state tracking by @rra in #221
- DM-41630: Use match when constructing prepuller source by @rra in #222
- DM-41630: Rename configuration_dependency by @rra in #223
- DM-41630: Remove Factory create_slack_client method by @rra in #224
- DM-41630: Improve description of fileserver.enabled config by @rra in #225
- DM-41630: Rename instance_url in FileserverBuilder by @rra in #226
- DM-41630: Convert fileserver creation to new template system by @rra in #227
- DM-41630: Add .conda to documentation of reset_env by @rra in #228
- DM-41630: Redo spawner form generation by @rra in #229
- DM-41630: Move lab resource construction into Config by @rra in #230
- DM-41630: Move size recreation into LabBuilder by @rra in #231
- DM-41630: Standardize base_url handling in controller by @rra in #232
- DM-41630: Clean up formatting of spawner form by @rra in #233
- DM-41630: Partly overhaul the controller configuration by @rra in #234
- DM-41630: Disallow unknown controller config options by @rra in #235
- DM-41630: Move Docker credentials configuration by @rra in #236
- DM-41630: Fix file server path_prefix by @rra in #237
- DM-41630: Remove unnecessary delay in prepuller pods by @rra in #238
- DM-41630: Require setting the namespace prefix for labs by @rra in #239
- DM-41630: Diagnose invalid lab size on creation by @rra in #240
- DM-41630: Move domain images for spawner form construction by @rra in #241
- DM-41630: Separate NSS configuration from simple files by @rra in #242
- DM-41630: Delete dead code from the Nubaldo controller by @rra in #243
- DM-41630: Allow use of SI units for file server resources by @rra in #244
- DM-41630: Update FastAPI handler parameters by @rra in #245
- DM-41630: Reorganize file server routes by @rra in #246
- DM-41630: Add method to create NodeImage from RSPImage by @rra in #247
- DM-41630: Filter available labs by the user's quota by @rra in #248
- DM-41630: Prevent mounting over /tmp by @rra in #249
- DM-41630: Reject setting reserved env variables by @rra in #250
- DM-41630: Report timeouts to Slack by @rra in #251
- [neophile] Update dependencies by @neophile-square in #252
- DM-41630: Handle race condition reaping lab deletions by @rra in #253
- DM-41630: Add support for update-deps-no-hashes by @rra in #254
- DM-41630: Update to latest alpha release of Safir by @rra in #255
- DM-41630: Add propagation policy to file server deletes by @rra in #256
- DM-41630: Add request timeouts to all Kubernetes calls by @rra in #257
- DM-41630: Further separate controller and hub testing by @rra in #258
- DM-41630: Fix Nublado Docker image build issues by @rra in #259
- DM-41630: Use a list for lab sizes instead of a dict by @rra in #260
- DM-41708: Fix nox -s test with specific files by @rra in #261
- DM-41708: Upgrade pre-commit in lint nox session by @rra in #262
- DM-41708: Update to Safir 5.0.0a4 by @rra in #263
- DM-41708: Use GafaelfawrUserInfo for file server creation by @rra in #264
- DM-41708: Fix supplemental groups for the file server by @rra in #265
- DM-41708: Separate volumes and volume mounts by @rra in #266
- DM-41708: Fix file server reconciliation bugs by @rra in #267
- DM-41708: Wait for file server pod creation properly by @rra in #268
- [neophile] Update dependencies by @neophile-square in #269
- DM-41793: Update lab spawning events for new sse-starlette by @rra in #270
- DM-41793: Overhaul Kubernetes timeout handling (again) by @rra in #271
- DM-41793: Add separate exception for timeouts by @rra in #272
- DM-41630: Remove clickable link to file server by @rra in #273
- DM-41793: Change default delete timeout for file servers by @rra in #274
- DM-41793: Add error handling tests for file servers by @rra in #275
- DM-41820: Add extraAnnotations support for file servers by @rra in #276
- DM-41820: Add nodeSelector for labs and file servers by @rra in #277
- DM-41820: Add tolerations to lab and file server pods by @rra in #278
- DM-41820: Add affinity support for labs and file server pods by @rra in #279
- DM-38714: Remove completed development tasks by @rra in #280
- Add a Nublado manual by @rra in #281
- DM-38714: Add architecture and component diagrams by @rra in #282
- DM-38714: Documentation formatting cleanups by @rra in #283
- DM-41907: Improve logging of lab operations by @rra in #284
- DM-38714: Add sequence diagrams to documentation by @rra in #285
- DM-38714: Document the Nublado configuration by @rra in #286
- DM-38714: Add internals documentation for JupyterHub plugins by @rra in #287
- DM-38714: Add internal API documentation for the controller by @rra in #288
- DM-38714: Limit link depth on developer page by @rra in #289
- DM-41979: Require explicit volume mounts for file servers by @rra in #290
- DM-41998: Restrict access to file server ingress by @rra in #291
- DM-41998: Update dependencies by @rra in #292
Full Changelog: 0.9.0...4.0.0a1
0.9.0
What's Changed
- DM-40813: Move lab state reconstruction into builder by @rra in #197
- DM-40813: Restructure file server state reconciliation by @rra in #198
- [neophile] Update dependencies by @neophile-square in #199
- Refactor lab state management by @rra in #200
- DM-41350: Use Safir ClientRequestError and SlackWebException by @rra in #201
- Allow delete to abort an in-progress spawn by @rra in #202
- DM-41350: Update Python dependencies and switch to pytest-sugar by @rra in #203
- DM-41350: Properly track terminated pods by @rra in #204
- DM-41350: Delete not-running labs during reconciliation by @rra in #205
Full Changelog: 0.8.0...0.9.0
0.8.0
What's Changed
- DM-40638: Update Makefile targets by @rra in #153
- DM-40638: Update Python dependencies by @rra in #154
- Bump python from 3.11.4-slim-bullseye to 3.11.5-slim-bullseye by @dependabot in #152
- DM-40638: Add dependency GitHub Actions by @rra in #155
- [neophile] Update dependencies by @neophile-square in #156
- DM-40638: Use Safir's AsyncMultiQueue by @rra in #157
- DM-40691: Add a new generic Kubernetes object watcher by @rra in #158
- [neophile] Update dependencies by @neophile-square in #161
- Bump actions/checkout from 3 to 4 by @dependabot in #160
- DM-40691: Add new generic Kubernetes storage layer by @rra in #159
- DM-40691: Use generic Kubernetes storage for more kinds by @rra in #162
- DM-40691: Add a new-style NamespaceStorage class by @rra in #163
- DM-40691: Add new JobStorage and IngressStorage classes by @rra in #164
- DM-40691: Update to Safir 4.5.0 by @rra in #165
- DM-40691: Add a new-style CustomStorage class by @rra in #166
- DM-40691: Add a new pod storage layer by @rra in #167
- DM-40691: Use label selector for listing jobs by @rra in #168
- DM-40691: Rename KubernetesPodPhase to PodPhase by @rra in #169
- Bump docker/build-push-action from 4 to 5 by @dependabot in #172
- Bump docker/login-action from 2 to 3 by @dependabot in #171
- Bump docker/setup-buildx-action from 2 to 3 by @dependabot in #170
- DM-40744: Convert to Pydantic v2 by @rra in #173
- DM-40809: Converted to Ruff for linting and fixed most resulting errors by @rra in #174
- DM-40813: Refactor prepuller storage layer by @rra in #175
- DM-40813: Move Argo CD annotations into a constant by @rra in #176
- DM-40813: Update Python dependencies by @rra in #177
- DM-40813: Move node storage into its own class by @rra in #178
- [neophile] Update dependencies by @neophile-square in #180
- DM-40813: Move all lab object creation into a builder object by @rra in #179
- DM-40813: Automatically reconfigure running test apps by @rra in #181
- DM-40813: Move fileserver object creation into a builder by @rra in #182
- DM-41051: Fix arguments to MissingSecretError by @rra in #183
- DM-41051: Alphabetize LabManager methods by @rra in #184
- DM-41051: Use controller namespace as secret source by @rra in #185
- DM-41051: Redo how disabled fileserver is handled by @rra in #186
- DM-41051: Refactor the test suite by @rra in #187
- [neophile] Update dependencies by @neophile-square in #190
- DM-41051: Streamline test user handling by @rra in #188
- tickets/DM-41136: make user name optional by @athornton in #191
- DM-41051: Move fileserver tests into handlers by @rra in #192
- DM-41051: Merge volume_cases test into standard test by @rra in #193
- DM-41051: Simplify tests by @rra in #194
- DM-41051: Add support for homedir prefix and suffix by @rra in #195
- DM-41051: Install pytest-pretty and tweak test output by @rra in #196
New Contributors
- @neophile-square made their first contribution in #156
Full Changelog: 0.7.3...0.8.0
0.7.3
What's Changed
- tickets/DM-40454: If we have a pull secret, add it to the prepuller too by @athornton in #151
Full Changelog: 0.7.2...0.7.3
0.7.2
What's Changed
- Force volume object names to lowercase (needed by T&S) by @athornton in #150
Full Changelog: 0.7.1...0.7.2