Files
wild-web-app/src/services/api/cluster.ts

48 lines
1.8 KiB
TypeScript

import { apiClient } from './client';
import type {
ClusterConfig,
ClusterStatus,
ClusterHealthResponse,
KubeconfigResponse,
TalosconfigResponse,
OperationResponse,
} from './types';
export const clusterApi = {
async generateConfig(instanceName: string, config: ClusterConfig): Promise<OperationResponse> {
return apiClient.post(`/api/v1/instances/${instanceName}/cluster/config/generate`, config);
},
async bootstrap(instanceName: string, nodeName: string): Promise<OperationResponse> {
return apiClient.post<OperationResponse>(`/api/v1/instances/${instanceName}/cluster/bootstrap`, { node_name: nodeName });
},
async configureEndpoints(instanceName: string, includeNodes = false): Promise<OperationResponse> {
return apiClient.post(`/api/v1/instances/${instanceName}/cluster/endpoints`, { include_nodes: includeNodes });
},
async getStatus(instanceName: string): Promise<ClusterStatus> {
return apiClient.get(`/api/v1/instances/${instanceName}/cluster/status`);
},
async getHealth(instanceName: string): Promise<ClusterHealthResponse> {
return apiClient.get(`/api/v1/instances/${instanceName}/cluster/health`);
},
async getKubeconfig(instanceName: string): Promise<KubeconfigResponse> {
return apiClient.get(`/api/v1/instances/${instanceName}/cluster/kubeconfig`);
},
async generateKubeconfig(instanceName: string): Promise<OperationResponse> {
return apiClient.post(`/api/v1/instances/${instanceName}/cluster/kubeconfig/generate`);
},
async getTalosconfig(instanceName: string): Promise<TalosconfigResponse> {
return apiClient.get(`/api/v1/instances/${instanceName}/cluster/talosconfig`);
},
async reset(instanceName: string, confirm: boolean): Promise<OperationResponse> {
return apiClient.post<OperationResponse>(`/api/v1/instances/${instanceName}/cluster/reset`, { confirm });
},
};