admin: migrate WorkerViewSet to APIView

Signed-off-by: Jens Langhammer <jens.langhammer@beryju.org>
This commit is contained in:
Jens Langhammer 2021-05-16 18:06:46 +02:00
parent a7d7b46747
commit ab07113530
3 changed files with 26 additions and 39 deletions

View file

@ -1,25 +1,26 @@
"""authentik administration overview""" """authentik administration overview"""
from rest_framework.mixins import ListModelMixin from drf_spectacular.utils import extend_schema, inline_serializer
from rest_framework.permissions import IsAdminUser from rest_framework.permissions import IsAdminUser
from rest_framework.request import Request from rest_framework.request import Request
from rest_framework.response import Response from rest_framework.response import Response
from rest_framework.serializers import Serializer from rest_framework.fields import IntegerField
from rest_framework.viewsets import GenericViewSet from rest_framework.views import APIView
from authentik.root.celery import CELERY_APP from authentik.root.celery import CELERY_APP
class WorkerViewSet(ListModelMixin, GenericViewSet): class WorkerView(APIView):
"""Get currently connected worker count.""" """Get currently connected worker count."""
serializer_class = Serializer
permission_classes = [IsAdminUser] permission_classes = [IsAdminUser]
def get_queryset(self): # pragma: no cover @extend_schema(
return None responses=inline_serializer("Workers", fields={
"count": IntegerField()
def list(self, request: Request) -> Response: })
)
def get(self, request: Request) -> Response:
"""Get currently connected worker count.""" """Get currently connected worker count."""
return Response( return Response(
{"pagination": {"count": len(CELERY_APP.control.ping(timeout=0.5))}} {"count": len(CELERY_APP.control.ping(timeout=0.5))}
) )

View file

@ -7,7 +7,7 @@ from authentik.admin.api.meta import AppsViewSet
from authentik.admin.api.metrics import AdministrationMetricsViewSet from authentik.admin.api.metrics import AdministrationMetricsViewSet
from authentik.admin.api.tasks import TaskViewSet from authentik.admin.api.tasks import TaskViewSet
from authentik.admin.api.version import VersionView from authentik.admin.api.version import VersionView
from authentik.admin.api.workers import WorkerViewSet from authentik.admin.api.workers import WorkerView
from authentik.api.v2.config import ConfigView from authentik.api.v2.config import ConfigView
from authentik.api.views import APIBrowserView from authentik.api.views import APIBrowserView
from authentik.core.api.applications import ApplicationViewSet from authentik.core.api.applications import ApplicationViewSet
@ -98,7 +98,6 @@ from authentik.stages.user_write.api import UserWriteStageViewSet
router = routers.DefaultRouter() router = routers.DefaultRouter()
router.register("admin/workers", WorkerViewSet, basename="admin_workers")
router.register("admin/system_tasks", TaskViewSet, basename="admin_system_tasks") router.register("admin/system_tasks", TaskViewSet, basename="admin_system_tasks")
router.register("admin/apps", AppsViewSet, basename="apps") router.register("admin/apps", AppsViewSet, basename="apps")
@ -198,6 +197,7 @@ urlpatterns = (
+ [ + [
path("admin/metrics/", AdministrationMetricsViewSet.as_view(), name="admin_metrics"), path("admin/metrics/", AdministrationMetricsViewSet.as_view(), name="admin_metrics"),
path("admin/version/", VersionView.as_view(), name="admin_version"), path("admin/version/", VersionView.as_view(), name="admin_version"),
path("admin/workers/", WorkerView.as_view(), name="admin_workers"),
path("root/config/", ConfigView.as_view(), name="config"), path("root/config/", ConfigView.as_view(), name="config"),
path( path(
"flows/executor/<slug:flow_slug>/", "flows/executor/<slug:flow_slug>/",

View file

@ -137,33 +137,8 @@ paths:
description: '' description: ''
/api/v2beta/admin/workers/: /api/v2beta/admin/workers/:
get: get:
operationId: admin_workers_list operationId: admin_workers_retrieve
description: Get currently connected worker count. description: Get currently connected worker count.
parameters:
- name: ordering
required: false
in: query
description: Which field to use when ordering the results.
schema:
type: string
- name: page
required: false
in: query
description: A page number within the paginated result set.
schema:
type: integer
- name: page_size
required: false
in: query
description: Number of results to return per page.
schema:
type: integer
- name: search
required: false
in: query
description: A search term.
schema:
type: string
tags: tags:
- admin - admin
security: security:
@ -171,7 +146,11 @@ paths:
- cookieAuth: [] - cookieAuth: []
responses: responses:
'200': '200':
description: No response body content:
application/json:
schema:
$ref: '#/components/schemas/Workers'
description: ''
/api/v2beta/authenticators/admin/static/: /api/v2beta/authenticators/admin/static/:
get: get:
operationId: authenticators_admin_static_list operationId: authenticators_admin_static_list
@ -22595,6 +22574,13 @@ components:
maxLength: 200 maxLength: 200
required: required:
- name - name
Workers:
type: object
properties:
count:
type: integer
required:
- count
securitySchemes: securitySchemes:
authentik: authentik:
type: apiKey type: apiKey