readd syncstatuschart
Signed-off-by: Marc 'risson' Schmitt <marc.schmitt@risson.space>
This commit is contained in:
@ -7,7 +7,7 @@ import "#admin/admin-overview/cards/VersionStatusCard";
|
|||||||
import "#admin/admin-overview/cards/WorkerStatusCard";
|
import "#admin/admin-overview/cards/WorkerStatusCard";
|
||||||
import "#admin/admin-overview/charts/AdminLoginAuthorizeChart";
|
import "#admin/admin-overview/charts/AdminLoginAuthorizeChart";
|
||||||
import "#admin/admin-overview/charts/OutpostStatusChart";
|
import "#admin/admin-overview/charts/OutpostStatusChart";
|
||||||
// import "#admin/admin-overview/charts/SyncStatusChart";
|
import "#admin/admin-overview/charts/SyncStatusChart";
|
||||||
import { me } from "#common/users";
|
import { me } from "#common/users";
|
||||||
import "#components/ak-page-header";
|
import "#components/ak-page-header";
|
||||||
import { AKElement } from "#elements/Base";
|
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-admin-status-chart-outpost></ak-admin-status-chart-outpost>
|
||||||
</ak-aggregate-card>
|
</ak-aggregate-card>
|
||||||
</div>
|
</div>
|
||||||
<!-- <div -->
|
<div
|
||||||
<!-- class="pf-l-grid__item pf-m-12-col pf-m-12-col-on-xl pf-m-4-col-on-2xl" -->
|
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(
|
<ak-aggregate-card icon="fa fa-sync-alt" header=${msg("Sync status")}>
|
||||||
"Sync status",
|
<ak-admin-status-chart-sync></ak-admin-status-chart-sync>
|
||||||
)}> -->
|
</ak-aggregate-card>
|
||||||
<!-- <ak-admin-status-chart-sync></ak-admin-status-chart-sync> -->
|
</div>
|
||||||
<!-- </ak-aggregate-card> -->
|
|
||||||
<!-- </div> -->
|
|
||||||
<div class="pf-l-grid__item pf-m-12-col">
|
<div class="pf-l-grid__item pf-m-12-col">
|
||||||
<hr class="pf-c-divider" />
|
<hr class="pf-c-divider" />
|
||||||
</div>
|
</div>
|
||||||
|
|||||||
@ -13,7 +13,7 @@ import {
|
|||||||
ProvidersApi,
|
ProvidersApi,
|
||||||
SourcesApi,
|
SourcesApi,
|
||||||
SyncStatus,
|
SyncStatus,
|
||||||
SystemTaskStatusEnum,
|
TaskAggregatedStatusEnum,
|
||||||
} from "@goauthentik/api";
|
} from "@goauthentik/api";
|
||||||
|
|
||||||
export interface SummarizedSyncStatus {
|
export interface SummarizedSyncStatus {
|
||||||
@ -58,16 +58,22 @@ export class SyncStatusChart extends AKChart<SummarizedSyncStatus[]> {
|
|||||||
let objectKey = "healthy";
|
let objectKey = "healthy";
|
||||||
try {
|
try {
|
||||||
const status = await fetchSyncStatus(element);
|
const status = await fetchSyncStatus(element);
|
||||||
status.tasks.forEach((task) => {
|
|
||||||
if (task.status !== SystemTaskStatusEnum.Successful) {
|
|
||||||
objectKey = "failed";
|
|
||||||
}
|
|
||||||
const now = new Date().getTime();
|
const now = new Date().getTime();
|
||||||
const maxDelta = 3600000; // 1 hour
|
const maxDelta = 3600000; // 1 hour
|
||||||
if (!status || now - task.finishTimestamp.getTime() > maxDelta) {
|
|
||||||
|
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";
|
objectKey = "unsynced";
|
||||||
}
|
}
|
||||||
});
|
|
||||||
} catch {
|
} catch {
|
||||||
objectKey = "unsynced";
|
objectKey = "unsynced";
|
||||||
}
|
}
|
||||||
@ -133,6 +139,17 @@ export class SyncStatusChart extends AKChart<SummarizedSyncStatus[]> {
|
|||||||
},
|
},
|
||||||
msg("LDAP Source"),
|
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();
|
this.centerText = statuses.reduce((total, el) => (total += el.total), 0).toString();
|
||||||
return statuses;
|
return statuses;
|
||||||
|
|||||||
Reference in New Issue
Block a user