still working on frontend UI

This commit is contained in:
Warp Agent
2025-12-24 20:02:54 +00:00
parent c962a223c6
commit 8895e296b9
8 changed files with 1606 additions and 0 deletions

113
frontend/src/api/scst.ts Normal file
View File

@@ -0,0 +1,113 @@
import apiClient from './client'
// ============================================================================
// Types
// ============================================================================
export interface SCSTTarget {
id: string
iqn: string
alias?: string
is_active: boolean
created_at: string
updated_at: string
}
export interface SCSTLUN {
id: string
target_id: string
lun_number: number
handler: string
device_path: string
device_type: string
is_active: boolean
created_at: string
updated_at: string
}
export interface SCSTInitiator {
id: string
group_id: string
iqn: string
is_active: boolean
created_at: string
updated_at: string
}
export interface SCSTInitiatorGroup {
id: string
target_id: string
group_name: string
initiators: SCSTInitiator[]
created_at: string
updated_at: string
}
export interface SCSTHandler {
name: string
description?: string
}
export interface CreateTargetRequest {
iqn: string
target_type: string
name: string
description?: string
single_initiator_only?: boolean
}
export interface AddLUNRequest {
device_name: string
device_path: string
lun_number: number
handler_type: string
}
export interface AddInitiatorRequest {
initiator_iqn: string
}
// ============================================================================
// SCST API
// ============================================================================
export const scstAPI = {
listTargets: async (): Promise<SCSTTarget[]> => {
const response = await apiClient.get('/scst/targets')
return response.data.targets || []
},
getTarget: async (id: string): Promise<{
target: SCSTTarget
luns: SCSTLUN[]
}> => {
const response = await apiClient.get(`/scst/targets/${id}`)
return response.data
},
createTarget: async (data: CreateTargetRequest): Promise<SCSTTarget> => {
const response = await apiClient.post('/scst/targets', data)
return response.data.target
},
addLUN: async (targetId: string, data: AddLUNRequest): Promise<{ task_id: string }> => {
const response = await apiClient.post(`/scst/targets/${targetId}/luns`, data)
return response.data
},
addInitiator: async (targetId: string, data: AddInitiatorRequest): Promise<{ task_id: string }> => {
const response = await apiClient.post(`/scst/targets/${targetId}/initiators`, data)
return response.data
},
applyConfig: async (): Promise<{ task_id: string }> => {
const response = await apiClient.post('/scst/config/apply')
return response.data
},
listHandlers: async (): Promise<SCSTHandler[]> => {
const response = await apiClient.get('/scst/handlers')
return response.data.handlers || []
},
}