mirror of
https://github.com/netbox-community/netbox.git
synced 2025-08-17 21:18:16 -06:00
14729 worker list
This commit is contained in:
parent
6314b5e8bc
commit
cf56066944
@ -17,7 +17,7 @@ class BackgroundQueueTable(BaseTable):
|
||||
finished_jobs = tables.LinkColumn("core:background_task_list", args=[A("index"), "finished"], verbose_name=_("Finished"))
|
||||
failed_jobs = tables.LinkColumn("core:background_task_list", args=[A("index"), "failed"], verbose_name=_("Failed"))
|
||||
scheduled_jobs = tables.LinkColumn("core:background_task_list", args=[A("index"), "scheduled"], verbose_name=_("Scheduled"))
|
||||
workers = tables.Column(verbose_name=_("Workers"))
|
||||
workers = tables.LinkColumn("core:worker_list", args=[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"))
|
||||
@ -29,7 +29,7 @@ class BackgroundQueueTable(BaseTable):
|
||||
'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',
|
||||
'name', 'jobs', 'started_jobs', 'deferred_jobs', 'finished_jobs', 'failed_jobs', 'scheduled_jobs', 'workers',
|
||||
)
|
||||
|
||||
|
||||
@ -62,3 +62,19 @@ class BackgroundTaskTable(BaseTable):
|
||||
def __init__(self, queue_index, *args, **kwargs):
|
||||
self.queue_index = queue_index
|
||||
super().__init__(*args, **kwargs)
|
||||
|
||||
|
||||
class WorkerTable(BaseTable):
|
||||
name = tables.Column(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',
|
||||
)
|
||||
|
@ -29,6 +29,7 @@ urlpatterns = (
|
||||
path('background-queues/', views.BackgroundQueueListView.as_view(), name='background_queue_list'),
|
||||
path('background-queues/<int:queue_index>/<str:status>/', views.BackgroundTaskListView.as_view(), name='background_task_list'),
|
||||
path('background-tasks/<str:job_id>/', views.BackgroundTaskDetailView.as_view(), name='background_task'),
|
||||
path('background-workers/<int:queue_index>/', views.WorkerListView.as_view(), name='worker_list'),
|
||||
|
||||
# Config revisions
|
||||
path('config-revisions/', views.ConfigRevisionListView.as_view(), name='configrevision_list'),
|
||||
|
@ -23,6 +23,8 @@ from rq.registry import (
|
||||
ScheduledJobRegistry,
|
||||
StartedJobRegistry,
|
||||
)
|
||||
from rq.worker import Worker
|
||||
from rq.worker_registration import clean_worker_registry
|
||||
from utilities.utils import count_related
|
||||
from utilities.views import ContentTypePermissionRequiredMixin, register_model_view
|
||||
from . import filtersets, forms, tables
|
||||
@ -318,6 +320,25 @@ class BackgroundTaskListView(UserPassesTestMixin, View):
|
||||
})
|
||||
|
||||
|
||||
class WorkerListView(UserPassesTestMixin, View):
|
||||
|
||||
def test_func(self):
|
||||
return self.request.user.is_staff
|
||||
|
||||
def get(self, request, queue_index):
|
||||
queue = get_queue_by_index(queue_index)
|
||||
clean_worker_registry(queue)
|
||||
all_workers = Worker.all(queue.connection)
|
||||
workers = [worker for worker in all_workers if queue.name in worker.queue_names()]
|
||||
|
||||
table = tables.WorkerTable(data=workers, user=request.user)
|
||||
table.configure(request)
|
||||
return render(request, 'core/worker_list.html', {
|
||||
'table': table,
|
||||
'queue': queue,
|
||||
})
|
||||
|
||||
|
||||
class BackgroundTaskDetailView(UserPassesTestMixin, View):
|
||||
|
||||
def test_func(self):
|
||||
|
Loading…
Reference in New Issue
Block a user