1
0
Fork 0
mirror of https://github.com/retspen/webvirtcloud synced 2026-11-08 11:16:47 +00:00
webvirtcloud/operations
catborise 8c0fbff8f7 feat(logs): admin changes and logins are recorded on the Logs page
The Logs page shows who added, changed or deleted a compute, from web
or API, and every login, failed login, lockout and logout, with the
client address and a Result column (Done, Failed, Unknown for older
rows). A failed change is recorded with its reason and the error still
reaches the user; a refused one is recorded too.

- logs.audit.write saves each row in its own savepoint and never
  raises, so a log write cannot break or undo the action it records.
  The audit() context manager writes one row when the change ends.
- Logs gains success and ip; user, host and instance are wider and
  date is indexed. The page orders by date then id.
- A compute edit names the changed fields; an edit that changes
  nothing writes no row, and an empty password field is no change.
- A compute's VMs leaving the panel get a system row each: owners
  kept on the Removed VMs page, moved to another compute, restored,
  left without owners, or the removed record expired.
- Job rows carry the result. A job's log entry that cannot be
  computed is logged and skipped instead of rolling back the finish
  (test_service.py changes this on purpose).
- Logins are recorded by signal receivers; CustomLoginView is removed
  and the plain LoginView is used. A wrong OTP code is a failed login,
  counted by django-axes toward the lockout.

Panel records and host-side objects follow in the next layers.
2026-10-23 10:30:48 +03:00
..
api feat(operations): jobs a request runs 2026-10-16 11:53:59 +03:00
management feat(operations): the job worker 2026-10-14 23:27:57 +03:00
migrations feat(operations): job, claim and worker lease models 2026-10-14 23:27:57 +03:00
static/operations feat(instances): a running VM can be cloned 2026-10-16 16:52:38 +03:00
templates/operations feat(instances): a running VM can be cloned 2026-10-16 16:52:38 +03:00
templatetags feat(storages): volume clone runs as a job 2026-10-15 09:28:43 +03:00
tests feat(logs): admin changes and logins are recorded on the Logs page 2026-10-23 10:30:48 +03:00
__init__.py feat(operations): job, claim and worker lease models 2026-10-14 23:27:57 +03:00
apps.py feat(operations): job, claim and worker lease models 2026-10-14 23:27:57 +03:00
claims.py feat(instances): VM clone runs as a job 2026-10-15 09:28:43 +03:00
jobs.py feat(logs): admin changes and logins are recorded on the Logs page 2026-10-23 10:30:48 +03:00
models.py feat(operations): jobs a request runs 2026-10-16 11:53:59 +03:00
urls.py feat(operations): jobs page 2026-10-14 23:27:57 +03:00
utils.py feat(operations): jobs API 2026-10-14 23:27:57 +03:00
views.py feat(operations): jobs a request runs 2026-10-16 11:53:59 +03:00
worker.py feat(operations): jobs a request runs 2026-10-16 11:53:59 +03:00