Files
oci-portal-dash/src/api/bootVolumes.ts
T

60 lines
1.7 KiB
TypeScript

import { mockBootVolumes } from './mock'
import { mockOn, mocked, request } from './request'
import type { BootVolume, UpdateBootVolumeRequest } from '@/types/api'
export function listBootVolumes(
cfgId: number,
availabilityDomain?: string,
compartmentId?: string,
region?: string,
): Promise<BootVolume[]> {
if (mockOn) return mocked(compartmentId ? [] : (mockBootVolumes[cfgId] ?? []))
return request(`/oci-configs/${cfgId}/boot-volumes`, {
query: { availabilityDomain, compartmentId, region },
})
}
export function getBootVolume(
cfgId: number,
bootVolumeId: string,
region?: string,
): Promise<BootVolume> {
if (mockOn) {
const found = Object.values(mockBootVolumes)
.flat()
.find((b) => b.id === bootVolumeId)
return found ? mocked(found) : Promise.reject(new Error('引导卷不存在'))
}
return request(`/oci-configs/${cfgId}/boot-volumes/${encodeURIComponent(bootVolumeId)}`, {
query: { region },
})
}
export function updateBootVolume(
cfgId: number,
bootVolumeId: string,
body: UpdateBootVolumeRequest,
region?: string,
): Promise<BootVolume> {
if (mockOn) {
const base = Object.values(mockBootVolumes).flat()[0]
return mocked({ ...base, ...body }, 700)
}
return request(`/oci-configs/${cfgId}/boot-volumes/${encodeURIComponent(bootVolumeId)}`, {
method: 'PUT',
body: { region: region ?? '', ...body },
})
}
export function deleteBootVolume(
cfgId: number,
bootVolumeId: string,
region?: string,
): Promise<void> {
if (mockOn) return mocked(undefined)
return request(`/oci-configs/${cfgId}/boot-volumes/${encodeURIComponent(bootVolumeId)}`, {
method: 'DELETE',
query: { region },
})
}