readd syncstatuschart

Signed-off-by: Marc 'risson' Schmitt <marc.schmitt@risson.space>
This commit is contained in:
Marc 'risson' Schmitt
2025-06-26 16:57:30 +02:00
parent 0ebbaeea6f
commit 670a88659e
2 changed files with 36 additions and 21 deletions

View File

@ -7,7 +7,7 @@ import "#admin/admin-overview/cards/VersionStatusCard";
import "#admin/admin-overview/cards/WorkerStatusCard";
import "#admin/admin-overview/charts/AdminLoginAuthorizeChart";
import "#admin/admin-overview/charts/OutpostStatusChart";
// import "#admin/admin-overview/charts/SyncStatusChart";
import "#admin/admin-overview/charts/SyncStatusChart";
import { me } from "#common/users";
import "#components/ak-page-header";
import { AKElement } from "#elements/Base";
@ -109,15 +109,13 @@ export class AdminOverviewPage extends AdminOverviewBase {
<ak-admin-status-chart-outpost></ak-admin-status-chart-outpost>
</ak-aggregate-card>
</div>
<!-- <div -->
<!-- class="pf-l-grid__item pf-m-12-col pf-m-12-col-on-xl pf-m-4-col-on-2xl" -->
<!-- > -->
<!-- <ak-aggregate-card icon="fa fa-sync-alt" header=${msg(
"Sync status",
)}> -->
<!-- <ak-admin-status-chart-sync></ak-admin-status-chart-sync> -->
<!-- </ak-aggregate-card> -->
<!-- </div> -->
<div
class="pf-l-grid__item pf-m-12-col pf-m-12-col-on-xl pf-m-4-col-on-2xl"
>
<ak-aggregate-card icon="fa fa-sync-alt" header=${msg("Sync status")}>
<ak-admin-status-chart-sync></ak-admin-status-chart-sync>
</ak-aggregate-card>
</div>
<div class="pf-l-grid__item pf-m-12-col">
<hr class="pf-c-divider" />
</div>

View File

@ -13,7 +13,7 @@ import {
ProvidersApi,
SourcesApi,
SyncStatus,
SystemTaskStatusEnum,
TaskAggregatedStatusEnum,
} from "@goauthentik/api";
export interface SummarizedSyncStatus {
@ -58,16 +58,22 @@ export class SyncStatusChart extends AKChart<SummarizedSyncStatus[]> {
let objectKey = "healthy";
try {
const status = await fetchSyncStatus(element);
status.tasks.forEach((task) => {
if (task.status !== SystemTaskStatusEnum.Successful) {
objectKey = "failed";
}
const now = new Date().getTime();
const maxDelta = 3600000; // 1 hour
if (!status || now - task.finishTimestamp.getTime() > maxDelta) {
objectKey = "unsynced";
}
});
const now = new Date().getTime();
const maxDelta = 3600000; // 1 hour
if (
status.lastSyncStatus === TaskAggregatedStatusEnum.Error ||
status.lastSyncStatus === TaskAggregatedStatusEnum.Rejected ||
status.lastSyncStatus === TaskAggregatedStatusEnum.Warning
) {
objectKey = "failed";
} else if (
!status.lastSuccessfulSync ||
now - status.lastSuccessfulSync.getTime() > maxDelta
) {
objectKey = "unsynced";
}
} catch {
objectKey = "unsynced";
}
@ -133,6 +139,17 @@ export class SyncStatusChart extends AKChart<SummarizedSyncStatus[]> {
},
msg("LDAP Source"),
),
await this.fetchStatus(
() => {
return new SourcesApi(DEFAULT_CONFIG).sourcesKerberosList();
},
(element) => {
return new SourcesApi(DEFAULT_CONFIG).sourcesKerberosSyncStatusRetrieve({
slug: element.slug,
});
},
msg("Kerberos Source"),
),
];
this.centerText = statuses.reduce((total, el) => (total += el.total), 0).toString();
return statuses;