Changelog for the Kiosc Django app package. Loosely follows the Keep a Changelog guidelines.
- Fix kiosc package version in the Docker image (#262)
- Update admin alerts url to fix a bug which prevented accessing them (#232)
- Fix bug in TunnelConsumer connect() method, which prevented websockets from being started (#263)
This release brings updates in the container management workflow. The logs are more responsive to container actions, which should make it easier to debug problems.
Better awareness of container state (#251) - Added a TERMINATED container state, which is used when a container is stopped due to inactivity (previously the state was FAILED). - Action RESTART was renamed to RESET, which makes it clearer that the container is actually deleted and re-created from scratch. - All container logs are deleted when the container is RESET. - On the other hand, STOPPING and STARTING a container does not delete anything. - Accessing a container which is not ready to take connections will redirect to a waiting page instead of throwing an error. - The latest errors are highlighted in the container page.
- Currently, a page refresh is needed, but in a future release they will be updated dynamically, like the logs.
- Container log entries are not saved to the database anymore, but they are still visible in the container detail page (they come directly from the Docker daemon). - For now, these logs are not searchable, but this will be fixed in the next version.
- When a container is updated, it is not automatically restarted, even if it was previously running: you have to manually start it, if needed.
- Enhanced container timeline: all actions are now logged as "timeline events". - The container detail page shows the most recent entries, the full timeline can be accessed in a separate page.
- We do not attempt to sync container state with latest user action: if the action fails, so be it.
Added a private Docker registry to which images can be pushed (#228)
- The Docker entrypoint script runs the server on port 8000 instead of 8080 (#228)
- Added an environment variable
CELERY_TASK_ALWAYS_EAGERwhich, if set to false, will instruct Celery to run jobs in the background (the Celery daemon must be started separately) (#251)
- The field
date_last_status_updatewas removed (#251) - The field
date_last_accesswas added (#251)
- Added a "blank" containertemplate entry, which is selected by default in the container creation form.
- Selecting a container template automatically imports it.
- Add Kiosc models to Django admin (#243)
- Add default container template for a Shiny demo app (#242)
- Add "createtoyapp" management command to create a demo project (#242)
- Fix behaviour of SITE_TITLE environment variable (#244)
- Fix behaviour of ADMINS environment variable (#244)
- Add a persistent Docker volume for every container at
/kiosc(#227) - Add ability to use password-protected container registries (#218)
- Fix bug in title case for plugin details (#226)
- Update docs, specifically for installation and configuration (#245)
- Add
.readthedocs.ymland restart automatic updates on readthedocs.com (#222)
- Update deprecated GitHub actions (#240)
- Fix bug in kioscadmin which made kiosc crash (#220)
- Fix bug in containerlist app template which prevented viewing containers
- Replaced Daphne with uvicorn and enabled multiple workers for performance optimization (#132)
- Updated to
channelsversion 10.1 - Forced pip to build with old dependency solver as the new one is buggy
- Fix broken async small file serving (#147)
- Fix broken
django-revproxydependency - Fix parallel testing errors with Docker (#152)
- Updated to
sodar-coreversion 1.3.2 (#174) - Updated other dependencies to current versions (#174)
- Updated supported Python versions to 3.11-3.13 (#174)
- Updated
env.exampleand documentation (#176, #209) - Set
PROJECTROLES_ENABLE_MODIFY_API=True(previously False) (#178) - Enable support for read-only mode (#179)
- Enable search function for container, container templates, and logs (#194)
- Fix error when displaying timeline events for deleted containers (#199)
- Stop and remove containers when the corresponding project is deleted (#178)
- Synchronization container state from docker daemon before showing it in Kiosc (#200)
- Replace Black and Flake8 with Ruff (#208)
- Improve app detail card with no content (#181)
- Pretty-print JSON fields in container update forms (#138)
- Add this new app to list all containers
- Fixed broken kioscadmin url (#132)
- Prune zombie containers periodically (#200)
- Made number of container log lines adjustable, defaults to 1000, overall max value is by default 10000 (#136)
- Added visual response to proxy lobby when starting a container via the eye icon (#143)
- Fixed permission rights when fetching container details (#143)
- Speed improvement when displaying logs (#143)
- Use image name instead of ID when creating containers, for easier human filtering in docker ps (#200)
- Only pull images if they don't already exist (#200)
- Added manual (#97, #99)
- Migrated to SODAR core v0.10.5 (#97)
- Fixed menu notches display bug (#97)
- Added user story to documentation for a guest user that wants to view the web interface provided by the container (#103)
- Extended documentation with a cookbook section containing examples on container creation (#116)
- Activated filesfolders app (#112)
- Added figures to manual (#118)
- Increased max file upload size to 50 MB (#118)
- Added file serve view for internal access for containers (#112)
- Added
container_ipfield toContainermodel (#112) - Added AJAX functionality to dynamically load state and logs of a container in list and detail views (#122)
- Exposing
title,descriptionandcontainer_portas environment variables to Docker container (#124)
- Added view for overall container and Docker information (#37)
- Added commands
stop_unused,remove_stoppedandstop_all(#37) - Moved container maintenance tasks from
Containerapp toKioscadminapp (#37) - Added tests for commands, views and tasks (#108)
- Added documentation (#109)
- Added REST API view for creating/listing a container (#40)
- Added REST API view for starting/stopping a container (#41)
- Added REST API view for deleting a container (#42)
- Migrated to SODAR core v0.10.4
- Switched to Docker deployment
- Added site-wide apps to menu (#30)
- Migrated to SODAR core v0.10.3
- Celery production settings which prevented workers from receiving jobs
- UI improvements (#81)
- Added setting
KIOSC_DOCKER_MAX_INACTIVITYto set maximal inactivity timespan (#62) - Replacing
gunicornwithdaphne - Enabled websockets via channels in daphne
- Added app itself (#29)
ContainerTemplatesmodel (#29)- Views for creating/updating/deleting and viewing details of
ContainerTemplate(#29) - Permissions for
ContainerTemplateviews (#29) - View for duplicate a
ContainerTemplate(#30) - Renamed
ProjectApptoSiteApp(#30) - Removed
projectfield fromContainerTemplatesmodel (#30) ContainerTemplateProjectmodel (#31)- Views for creating/updating/deleting/duplicating and viewing details of
ContainerTemplateProject(#31) - Permissions for
ContainerTemplateSiteviews (#31) ProjectAppre-introduced living alongsideSiteApp(#31)- Renamed
ContainerTemplatemodel toContainerTemplateSite(#31) - View and forms to copy site-wide and project-wide container template (#32)
- Added optional foreign key
containertemplatesitetoContainerTemplateProjectmodel (#32) - Added AJAX view to get values of a site- or project-wide containertemplate (#33)
- Added field
inactivity_thresholdtoContainerTemplateBasemodel to adjust inactivity timespan X (#62) - Removed
environment_secret_keysfield fromContainerTemplateBasemodel as they should not be allowed in templates (#83) - Updated detail page concerning links between site- and project-wide templates (#85)
- Changed internal naming of URLs (#30)
- Field
environmentnow optional (#31) - Fixed setting the environment variables in the container (#32)
- Fixed bug in parsing of docker log date (#32)
- Starting and restarting a container now removes old container and creates a new one (#72)
- Detail page now allows for managing the container (#72)
- Extended container logs with stack trace in case of unknown error
- Added
ContainerActionLockmodel to throttle actions performed on a container (#75) - Accepting
__KIOSC_URL_PREFIX__in theenvironmentfield, being replaced by the reverse proxy url - Added fuctionality to copy values from a site- or project-wide containertemplate to the container form (#33)
- Added title and description to
Containermodel (#81) - Delete action added that stops and deletes Docker containers and not just the container database object (#63)
- Adjusted proxy lobby view to start containers asynchronously (#62)
- Added more checks and differientated error messages to proxy view (#62)
- Added periodic task running once a day to stop running containers when not accessed for timespan X (#62)
- Added field
inactivity_thresholdtoContainermodel to adjust inactivity timespan X (#62) - Fixed environment secret key feature that still showed the values of the secret keys (#83)
- Fixed bug in statemachine that prevented users from deleteing failed containers
- Updated detail page concerning links to templates (#85)
- Containers
-
processfield toContainerLogEntryto reflect which process writes to the logs (#26) -date_docker_logfield toContainerLogEntryto represent the time of the Docker log entry (#26) -ContainerLogEntryManagerto allow ordering by date of log or date of Docker log (#26) - Permission to view logs (#26) - Task to pull docker logs and the current status (#26) - Periodic task pulling docker log and status (#26) -restart,pauseandunpauseaction (#27) - python-statemachine v0.8.0 dependency (#27) - Statemachine for controlling flow of a container (#27) - Switch class for coordinating actions with the statemachine (#27) -date_last_status_updatefield toContainermodel to store the date of the last status update (#59) -max_retriesfield toContainermodel to set number of maximum retries to match the expected Docker container state (#59) -get_repos_full()method toContainermodel (#59) -retriesfield toContainerBackgroundJobmodel to count retries of matching the expected Docker container state (#59) -sync_container_state_with_last_user_actiontask, running periodically (#59) -is_project_guestpermission to proxy rule (#28) -ContainerProxyLobbyViewcalled when viewing a container not in staterunning(#28)
- General - Bumped github workflow Ubuntu version to 20.04 (#28)
- Containers
- Purpose of
timeoutfield inContainermodel (#59) - Output of__str__and__reprofContainermodel (#59) - Refined mocking of Docker API (#59) - Updating a container triggers a restart if in staterunningorpaused(#28)
- Containers
-
timeout_exceededfield inContainermodel (#59)
- Containers - Logging with timeline for views and tasks (#24) - Container-centric logging (#25)
- General - urllib3-mock 0.3.3 dependency (#21)
- Containers - Tests for views (#21) - Tests for permissions (#21) - Tests f0r forms (#21) - Tests for models (#23) - Tests for tasks (#22)
- General - Initial commit based on SODAR core v0.9.1 (#16) - Strings are formatted using double quotes (#17) - Docker 5.0.0 dependency (#19) - Logo and color scheme (#20) - Revproxy 0.10.0 dependency (#20)
- Containers
- App itself (#17)
- Models
Container,ContainerBackgroundJobandContainerLogEntry(#17, #18) - Views/templates/urls for listing, creating, updating and deleting container objects and viewing its details (#18) - Permission rules for viewing, creating, editing and deleting container objects (#18) - Task to pull an image and start and stop a container (#19) - Views to start and stop a container (#19) - Activated Celery support (#19) - Reverse proxy with view and url (#20)
- General - Upgrade to Django v3.1.7 (#47) - Upgrade to SODAR core pre-v0.10.0 (#47) - Bumped Celery version to 5.0.5 (#19)