feat: Implement load balancing and health check features for service groups, including DNS-based load balancing modes and health check configurations, enhancing service reliability and performance monitoring
Build, Test, and Push CFDM Docker Image / test (push) Successful in 4m0s
Build, Test, and Push CFDM Docker Image / build-and-push (push) Successful in 2m13s
Build, Test, and Push CFDM Docker Image / update-wiki (push) Failing after 6s
Build, Test, and Push CFDM Docker Image / create-release (push) Has been skipped
Build, Test, and Push CFDM Docker Image / test (push) Successful in 4m0s
Build, Test, and Push CFDM Docker Image / build-and-push (push) Successful in 2m13s
Build, Test, and Push CFDM Docker Image / update-wiki (push) Failing after 6s
Build, Test, and Push CFDM Docker Image / create-release (push) Has been skipped
This commit is contained in:
1 parent
e5dc483d43
commit
6a1498bf80
35 files changed
+5312
-281
No files matched your search
@@ -7,6 +7,7 @@ import {
|
||||
domainSchema,
|
||||
groupSchema,
|
||||
groupWithStatsSchema,
|
||||
ipHealthStatusSchema,
|
||||
serviceBindingSchema,
|
||||
serviceGroupsResponseSchema,
|
||||
serviceViewSchema,
|
||||
@@ -208,3 +209,30 @@ export function invalidateDomainPage(
|
||||
void queryClient.invalidateQueries({ queryKey: domainKeys.detail(domainId) })
|
||||
void queryClient.invalidateQueries({ queryKey: dnsKeys.list(domainId) })
|
||||
}
|
||||
|
||||
export const healthStatusKeys = {
|
||||
all: ['health-status'] as const,
|
||||
list: (scope: 'binding' | 'group', refId: number) =>
|
||||
[...healthStatusKeys.all, scope, refId] as const,
|
||||
}
|
||||
|
||||
export function healthStatusQueryOptions(
|
||||
scope: 'binding' | 'group',
|
||||
refId: number,
|
||||
) {
|
||||
return queryOptions({
|
||||
queryKey: healthStatusKeys.list(scope, refId),
|
||||
queryFn: async () => {
|
||||
const data = await api.get<unknown[]>(
|
||||
`/api/v1/health-status?scope=${scope}&ref_id=${refId}`,
|
||||
)
|
||||
return z.array(ipHealthStatusSchema).parse(data)
|
||||
},
|
||||
refetchInterval: 10_000,
|
||||
staleTime: 5_000,
|
||||
})
|
||||
}
|
||||
|
||||
export async function runHealthCheck() {
|
||||
return api.post<{ checked: number }>('/api/v1/health-check/run', {})
|
||||
}
|
||||
Reference in new issue
Block a user