1
0
mirror of https://github.com/netbox-community/netbox.git synced 2024-05-10 07:54:54 +00:00
Arthur Hanson 93b77cb4f0 14729 Move background tasks list from admin UI to Primary UI (#14825)
* 14729 rq table

* 14729 rq table

* 14729 rq table

* 14729 rq table

* 14729 jobs table

* 14729 jobs detail

* 14729 formatting fixup

* 14729 formatting fixup

* 14729 format datetime in tables

* 14729 display job id

* Update templates for #12128

* 14729 review fixes

* 14729 review fixes

* 14729 review fixes

* 14729 review fixes

* 14729 merge feature

* 14729 add modal

* 14729 review changes

* 14729 url fixup

* 14729 no queue param on task

* 14729 queue pages

* 14729 job status handling

* 14729 worker list

* 14729 exec detail and common view

* 14729 worker detail

* 14729 background task delete

* 14729 background task delete

* 14729 background task requeue

* 14729 background task enqueue stop

* 14729 review changes

* 14729 remove rq from admin

* 14729 add tests

* 14729 add tests

* Clean up HTML templates

* Clean up tables

* Clean up views

* Fix tests

* Clean up tests

* Move navigation menu entry for background tasks

* Remove custom deletion form

---------

Co-authored-by: Jeremy Stretch <jstretch@netboxlabs.com>
2024-02-01 11:44:07 -05:00

135 lines
3.8 KiB
Python

import django_tables2 as tables
from django.utils.translation import gettext_lazy as _
from django_tables2.utils import A
from core.tables.columns import RQJobStatusColumn
from netbox.tables import BaseTable
class BackgroundQueueTable(BaseTable):
name = tables.Column(
verbose_name=_("Name")
)
jobs = tables.Column(
linkify=("core:background_task_list", [A("index"), "queued"]),
verbose_name=_("Queued")
)
oldest_job_timestamp = tables.Column(
verbose_name=_("Oldest Task")
)
started_jobs = tables.Column(
linkify=("core:background_task_list", [A("index"), "started"]),
verbose_name=_("Active")
)
deferred_jobs = tables.Column(
linkify=("core:background_task_list", [A("index"), "deferred"]),
verbose_name=_("Deferred")
)
finished_jobs = tables.Column(
linkify=("core:background_task_list", [A("index"), "finished"]),
verbose_name=_("Finished")
)
failed_jobs = tables.Column(
linkify=("core:background_task_list", [A("index"), "failed"]),
verbose_name=_("Failed")
)
scheduled_jobs = tables.Column(
linkify=("core:background_task_list", [A("index"), "scheduled"]),
verbose_name=_("Scheduled")
)
workers = tables.Column(
linkify=("core:worker_list", [A("index")]),
verbose_name=_("Workers")
)
host = tables.Column(
accessor="connection_kwargs__host",
verbose_name=_("Host")
)
port = tables.Column(
accessor="connection_kwargs__port",
verbose_name=_("Port")
)
db = tables.Column(
accessor="connection_kwargs__db",
verbose_name=_("DB")
)
pid = tables.Column(
accessor="scheduler__pid",
verbose_name=_("Scheduler PID")
)
class Meta(BaseTable.Meta):
empty_text = _('No queues found')
fields = (
'name', 'jobs', 'oldest_job_timestamp', 'started_jobs', 'deferred_jobs', 'finished_jobs', 'failed_jobs',
'scheduled_jobs', 'workers', 'host', 'port', 'db', 'pid',
)
default_columns = (
'name', 'jobs', 'started_jobs', 'deferred_jobs', 'finished_jobs', 'failed_jobs', 'scheduled_jobs',
'workers',
)
class BackgroundTaskTable(BaseTable):
id = tables.Column(
linkify=("core:background_task", [A("id")]),
verbose_name=_("ID")
)
created_at = tables.DateTimeColumn(
verbose_name=_("Created")
)
enqueued_at = tables.DateTimeColumn(
verbose_name=_("Enqueued")
)
ended_at = tables.DateTimeColumn(
verbose_name=_("Ended")
)
status = RQJobStatusColumn(
verbose_name=_("Status"),
accessor='get_status'
)
callable = tables.Column(
empty_values=(),
verbose_name=_("Callable")
)
class Meta(BaseTable.Meta):
empty_text = _('No tasks found')
fields = (
'id', 'created_at', 'enqueued_at', 'ended_at', 'status', 'callable',
)
default_columns = (
'id', 'created_at', 'enqueued_at', 'ended_at', 'status', 'callable',
)
def render_callable(self, value, record):
try:
return record.func_name
except Exception as e:
return repr(e)
class WorkerTable(BaseTable):
name = tables.Column(
linkify=("core:worker", [A("name")]),
verbose_name=_("Name")
)
state = tables.Column(
verbose_name=_("State")
)
birth_date = tables.DateTimeColumn(
verbose_name=_("Birth")
)
pid = tables.Column(
verbose_name=_("PID")
)
class Meta(BaseTable.Meta):
empty_text = _('No workers found')
fields = (
'name', 'state', 'birth_date', 'pid',
)
default_columns = (
'name', 'state', 'birth_date', 'pid',
)