mirror of
https://github.com/Rain-kl/OpenFlare.git
synced 2026-10-02 06:56:36 +08:00
[新增] 实现节点强制同步功能,允许通过 API 请求强制同步配置
This commit is contained in:
@@ -63,6 +63,12 @@ export function requestNodeAgentUpdate(
|
||||
});
|
||||
}
|
||||
|
||||
export function requestNodeForceSync(id: number) {
|
||||
return apiRequest<NodeItem>(`/nodes/${id}/force-sync`, {
|
||||
method: 'POST',
|
||||
});
|
||||
}
|
||||
|
||||
export function requestNodeOpenrestyRestart(id: number) {
|
||||
return apiRequest<NodeItem>(`/nodes/${id}/openresty-restart`, {
|
||||
method: 'POST',
|
||||
|
||||
@@ -25,8 +25,10 @@ import {
|
||||
getNodeAgentRelease,
|
||||
getNodeObservability,
|
||||
getNodes,
|
||||
requestNodeForceSync,
|
||||
requestNodeOpenrestyRestart,
|
||||
requestNodeAgentUpdate,
|
||||
rotateNodeBootstrapToken,
|
||||
updateNode,
|
||||
} from '@/features/nodes/api/nodes';
|
||||
import { NodeEditorModal } from '@/features/nodes/components/node-editor-modal';
|
||||
@@ -365,6 +367,20 @@ export function NodeDetailPage({ nodeId }: { nodeId: string }) {
|
||||
},
|
||||
});
|
||||
|
||||
const forceSyncMutation = useMutation({
|
||||
mutationFn: () => requestNodeForceSync(Number(nodeId)),
|
||||
onSuccess: async (updatedNode) => {
|
||||
setFeedback({
|
||||
tone: 'success',
|
||||
message: `已向节点 ${updatedNode.name} 下发强制同步指令,无视当前错误拦截。`,
|
||||
});
|
||||
await queryClient.invalidateQueries({ queryKey: nodesQueryKey });
|
||||
},
|
||||
onError: (error) => {
|
||||
setFeedback({ tone: 'danger', message: getErrorMessage(error) });
|
||||
},
|
||||
});
|
||||
|
||||
const deleteMutation = useMutation({
|
||||
mutationFn: () => deleteNode(Number(nodeId)),
|
||||
onSuccess: async () => {
|
||||
@@ -650,6 +666,16 @@ export function NodeDetailPage({ nodeId }: { nodeId: string }) {
|
||||
>
|
||||
{isRefreshing ? '刷新中...' : '刷新'}
|
||||
</SecondaryButton>
|
||||
<SecondaryButton
|
||||
type="button"
|
||||
onClick={() => {
|
||||
setFeedback(null);
|
||||
forceSyncMutation.mutate();
|
||||
}}
|
||||
disabled={forceSyncMutation.isPending}
|
||||
>
|
||||
{forceSyncMutation.isPending ? '同步中...' : '同步'}
|
||||
</SecondaryButton>
|
||||
<PrimaryButton
|
||||
type="button"
|
||||
onClick={handleOpenAgentUpdateModal}
|
||||
|
||||
Reference in New Issue
Block a user