admin: monitor worker version (#12463)
* root: include version in celery ping Signed-off-by: Jens Langhammer <jens@goauthentik.io> * check version in worker endpoint Signed-off-by: Jens Langhammer <jens@goauthentik.io> * include worker version in prom metrics Signed-off-by: Jens Langhammer <jens@goauthentik.io> * format Signed-off-by: Jens Langhammer <jens@goauthentik.io> * fix tests Signed-off-by: Jens Langhammer <jens@goauthentik.io> --------- Signed-off-by: Jens Langhammer <jens@goauthentik.io>
This commit is contained in:
		| @ -8,34 +8,41 @@ import { msg } from "@lit/localize"; | ||||
| import { TemplateResult, html } from "lit"; | ||||
| import { customElement } from "lit/decorators.js"; | ||||
|  | ||||
| import { AdminApi } from "@goauthentik/api"; | ||||
| import { AdminApi, Worker } from "@goauthentik/api"; | ||||
|  | ||||
| @customElement("ak-admin-status-card-workers") | ||||
| export class WorkersStatusCard extends AdminStatusCard<number> { | ||||
| export class WorkersStatusCard extends AdminStatusCard<Worker[]> { | ||||
|     icon = "pf-icon pf-icon-server"; | ||||
|  | ||||
|     getPrimaryValue(): Promise<number> { | ||||
|         return new AdminApi(DEFAULT_CONFIG).adminWorkersRetrieve().then((workers) => { | ||||
|             return workers.count; | ||||
|         }); | ||||
|     getPrimaryValue(): Promise<Worker[]> { | ||||
|         return new AdminApi(DEFAULT_CONFIG).adminWorkersList(); | ||||
|     } | ||||
|  | ||||
|     renderHeader(): TemplateResult { | ||||
|         return html`${msg("Workers")}`; | ||||
|     } | ||||
|  | ||||
|     getStatus(value: number): Promise<AdminStatus> { | ||||
|         if (value < 1) { | ||||
|     getStatus(value: Worker[]): Promise<AdminStatus> { | ||||
|         if (value.length < 1) { | ||||
|             return Promise.resolve<AdminStatus>({ | ||||
|                 icon: "fa fa-times-circle pf-m-danger", | ||||
|                 message: html`${msg("No workers connected. Background tasks will not run.")}`, | ||||
|             }); | ||||
|         } else if (value.filter((w) => !w.versionMatching).length > 0) { | ||||
|             return Promise.resolve<AdminStatus>({ | ||||
|                 icon: "fa fa-times-circle pf-m-danger", | ||||
|                 message: html`${msg("Worker with incorrect version connected.")}`, | ||||
|             }); | ||||
|         } else { | ||||
|             return Promise.resolve<AdminStatus>({ | ||||
|                 icon: "fa fa-check-circle pf-m-success", | ||||
|             }); | ||||
|         } | ||||
|     } | ||||
|  | ||||
|     renderValue() { | ||||
|         return html`${this.value?.length}`; | ||||
|     } | ||||
| } | ||||
|  | ||||
| declare global { | ||||
|  | ||||
		Reference in New Issue
	
	Block a user
	 Jens L.
					Jens L.