import { http2 } from '@/utils/request.js' const BASE = '/api/v1/admin/good/user_vm' const GOODS_BASE = '/api/v1/admin/good/user_goods' const fd = (data) => { const f = new FormData() Object.entries(data).forEach(([k, v]) => { if (v === undefined || v === null) return if (Array.isArray(v)) { v.forEach(item => f.append(k, item)) } else if (typeof v === 'boolean') { f.append(k, v ? 'true' : 'false') } else { f.append(k, v) } }) return f } // ========== 用户虚拟机 ========== export const getUserVmList = (params) => http2.get(`${BASE}/list`, { params }) export const getUserVmDetail = (params) => http2.get(`${BASE}/detail`, { params }) export const getUserVmVnc = (params) => http2.get(`${BASE}/vnc`, { params }) export const getUserVmHostImages = (params) => http2.get(`${BASE}/host_images`, { params }) export const getGoodHostGroupImages = (params) => http2.get(`${BASE}/good_host_group_images`, { params }) export const createUserVm = (data) => http2.post(`${BASE}/create`, fd(data), { headers: { 'Content-Type': 'multipart/form-data' } }) export const bindUserVm = (data) => http2.post(`${BASE}/bind`, fd(data), { headers: { 'Content-Type': 'multipart/form-data' } }) export const transferUserVm = (data) => http2.post(`${BASE}/transfer`, fd(data), { headers: { 'Content-Type': 'multipart/form-data' } }) export const migrateUserVm = (data) => http2.post(`${BASE}/migrate`, fd(data), { headers: { 'Content-Type': 'multipart/form-data' } }) export const updateUserVmTraffic = (data) => http2.post(`${BASE}/update_traffic`, fd(data), { headers: { 'Content-Type': 'multipart/form-data' } }) export const updateUserVm = (data) => http2.post(`${BASE}/update`, fd(data), { headers: { 'Content-Type': 'multipart/form-data' } }) export const refactorUserVm = (data) => http2.post(`${BASE}/refactor`, fd(data), { headers: { 'Content-Type': 'multipart/form-data' } }) export const startUserVm = (data) => http2.post(`${BASE}/start`, fd(data), { headers: { 'Content-Type': 'multipart/form-data' } }) export const stopUserVm = (data) => http2.post(`${BASE}/stop`, fd(data), { headers: { 'Content-Type': 'multipart/form-data' } }) export const rebootUserVm = (data) => http2.post(`${BASE}/reboot`, fd(data), { headers: { 'Content-Type': 'multipart/form-data' } }) export const suspendUserVm = (data) => http2.post(`${BASE}/suspend`, fd(data), { headers: { 'Content-Type': 'multipart/form-data' } }) export const resumeUserVm = (data) => http2.post(`${BASE}/resume`, fd(data), { headers: { 'Content-Type': 'multipart/form-data' } }) export const rescueUserVm = (data) => http2.post(`${BASE}/rescue`, fd(data), { headers: { 'Content-Type': 'multipart/form-data' } }) export const exitRescueUserVm = (data) => http2.post(`${BASE}/exit_rescue`, fd(data), { headers: { 'Content-Type': 'multipart/form-data' } }) export const rebuildUserVm = (data) => http2.post(`${BASE}/rebuild`, fd(data), { headers: { 'Content-Type': 'multipart/form-data' } }) export const deleteUserVm = (params) => http2.delete(`${BASE}/delete`, { params }) // ========== 数据卷 ========== export const getUserVmVolumeList = (params) => http2.get(`${BASE}/volume/list`, { params }) export const getUserVmVolumeDetail = (params) => http2.get(`${BASE}/volume/detail`, { params }) export const createUserVmVolume = (data) => http2.post(`${BASE}/volume/create`, fd(data), { headers: { 'Content-Type': 'multipart/form-data' } }) export const resizeUserVmVolume = (data) => http2.post(`${BASE}/volume/resize`, fd(data), { headers: { 'Content-Type': 'multipart/form-data' } }) export const mountUserVmVolume = (data) => http2.post(`${BASE}/volume/mount`, fd(data), { headers: { 'Content-Type': 'multipart/form-data' } }) export const unmountUserVmVolume = (data) => http2.post(`${BASE}/volume/unmount`, fd(data), { headers: { 'Content-Type': 'multipart/form-data' } }) export const deleteUserVmVolume = (params) => http2.delete(`${BASE}/volume/delete`, { params }) // ========== 快照 ========== export const getUserVmSnapshotList = (params) => http2.get(`${BASE}/snapshot/list`, { params }) export const getUserVmSnapshotProgress = (params) => http2.get(`${BASE}/snapshot/progress`, { params }) export const getUserVmSnapshotCount = (params) => http2.get(`${BASE}/snapshot/count`, { params }) export const createUserVmSnapshot = (data) => http2.post(`${BASE}/snapshot/create`, fd(data), { headers: { 'Content-Type': 'multipart/form-data' } }) export const restoreUserVmSnapshot = (data) => http2.post(`${BASE}/snapshot/restore`, fd(data), { headers: { 'Content-Type': 'multipart/form-data' } }) export const deleteUserVmSnapshot = (data) => http2.post(`${BASE}/snapshot/delete`, fd(data), { headers: { 'Content-Type': 'multipart/form-data' } }) export const setUserVmSnapshotLimit = (data) => http2.post(`${BASE}/snapshot/set_limit`, fd(data), { headers: { 'Content-Type': 'multipart/form-data' } }) // ========== 备份 ========== export const getUserVmBackupList = (params) => http2.get(`${BASE}/backup/list`, { params }) export const getUserVmBackupProgress = (params) => http2.get(`${BASE}/backup/progress`, { params }) export const getUserVmBackupCount = (params) => http2.get(`${BASE}/backup/count`, { params }) export const createUserVmBackup = (data) => http2.post(`${BASE}/backup/create`, fd(data), { headers: { 'Content-Type': 'multipart/form-data' } }) export const restoreUserVmBackup = (data) => http2.post(`${BASE}/backup/restore`, fd(data), { headers: { 'Content-Type': 'multipart/form-data' } }) export const deleteUserVmBackup = (data) => http2.post(`${BASE}/backup/delete`, fd(data), { headers: { 'Content-Type': 'multipart/form-data' } }) export const setUserVmBackupLimit = (data) => http2.post(`${BASE}/backup/set_limit`, fd(data), { headers: { 'Content-Type': 'multipart/form-data' } }) // ========== 安全组 ========== export const getUserVmPostGroupList = (params) => http2.get(`${BASE}/post_group/list`, { params }) export const getUserVmPostGroupDetail = (params) => http2.get(`${BASE}/post_group/detail`, { params }) export const getUserVmPostGroupUserList = (params) => http2.get(`${BASE}/post_group/user_list`, { params }) export const createUserVmPostGroup = (data) => http2.post(`${BASE}/post_group/create`, fd(data), { headers: { 'Content-Type': 'multipart/form-data' } }) export const updateUserVmPostGroup = (data) => http2.post(`${BASE}/post_group/update`, fd(data), { headers: { 'Content-Type': 'multipart/form-data' } }) export const bindUserVmPostGroup = (data) => http2.post(`${BASE}/post_group/bind`, fd(data), { headers: { 'Content-Type': 'multipart/form-data' } }) export const unbindUserVmPostGroup = (data) => http2.post(`${BASE}/post_group/unbind`, fd(data), { headers: { 'Content-Type': 'multipart/form-data' } }) export const applyUserVmPostGroup = (data) => http2.post(`${BASE}/post_group/apply`, fd(data), { headers: { 'Content-Type': 'multipart/form-data' } }) export const setSharedUserVmPostGroup = (data) => http2.post(`${BASE}/post_group/set_shared`, fd(data), { headers: { 'Content-Type': 'multipart/form-data' } }) export const deleteUserVmPostGroup = (params) => http2.delete(`${BASE}/post_group/delete`, { params }) export const enableUserVmPostGroupWhitelist = (data) => http2.post(`${BASE}/post_group/enable_whitelist`, fd(data), { headers: { 'Content-Type': 'multipart/form-data' } }) export const disableUserVmPostGroupWhitelist = (data) => http2.post(`${BASE}/post_group/disable_whitelist`, fd(data), { headers: { 'Content-Type': 'multipart/form-data' } }) export const createUserVmPostGroupRule = (data) => http2.post(`${BASE}/post_group/create_rule`, fd(data), { headers: { 'Content-Type': 'multipart/form-data' } }) export const updateUserVmPostGroupRule = (data) => http2.post(`${BASE}/post_group/update_rule`, fd(data), { headers: { 'Content-Type': 'multipart/form-data' } }) export const deleteUserVmPostGroupRule = (params) => http2.delete(`${BASE}/post_group/delete_rule`, { params }) // ========== 网络 ========== export const getUserVmNetworkList = (params) => http2.get(`${BASE}/network/list`, { params }) export const getUserVmNetworkDetail = (params) => http2.get(`${BASE}/network/detail`, { params }) export const setUserVmNetworkPrimary = (data) => http2.post(`${BASE}/network/set_primary`, fd(data), { headers: { 'Content-Type': 'multipart/form-data' } }) export const resetUserVmMac = (params) => http2.post(`${BASE}/reset_mac`, null, { params }) export const disconnectUserVmNetwork = (data) => http2.post(`${BASE}/disconnect_network`, fd(data), { headers: { 'Content-Type': 'multipart/form-data' } }) export const connectUserVmNetwork = (data) => http2.post(`${BASE}/connect_network`, fd(data), { headers: { 'Content-Type': 'multipart/form-data' } }) // ========== 组网 ========== export const getUserVmNetworkingList = (params) => http2.get(`${BASE}/networking/list`, { params }) export const getUserVmNetworkingDetail = (params) => http2.get(`${BASE}/networking/detail`, { params }) export const createUserVmNetworking = (data) => http2.post(`${BASE}/networking/create`, fd(data), { headers: { 'Content-Type': 'multipart/form-data' } }) export const assignUserVmNetworking = (data) => http2.post(`${BASE}/networking/assign`, fd(data), { headers: { 'Content-Type': 'multipart/form-data' } }) export const removeUserVmNetworkingNetwork = (data) => http2.post(`${BASE}/networking/remove_network`, fd(data), { headers: { 'Content-Type': 'multipart/form-data' } }) export const deleteUserVmNetworking = (params) => http2.delete(`${BASE}/networking/delete`, { params }) // ========== 用户商品 ========== export const getUserGoodsList = (params) => http2.get(`${GOODS_BASE}/list`, { params }) export const getUserGoodsDetail = (params) => http2.get(`${GOODS_BASE}/detail`, { params }) export const createUserGoods = (data) => http2.post(`${GOODS_BASE}/create`, fd(data), { headers: { 'Content-Type': 'multipart/form-data' } }) export const updateUserGoods = (data) => http2.post(`${GOODS_BASE}/update`, fd(data), { headers: { 'Content-Type': 'multipart/form-data' } }) export const deleteUserGoods = (params) => http2.delete(`${GOODS_BASE}/delete`, { params }) export const getUserVmMetricsHistory = (params) => http2.get(`${BASE}/metrics_history`, { params }) export const getUserVmTrafficHourly = (params) => http2.get(`${BASE}/traffic_hourly`, { params }) // ========== 流量策略 ========== // 测试未通过(接口新增,待联调) export const getUserVmTrafficPolicy = (params) => http2.get(`${BASE}/traffic_policy`, { params }) export const updateUserVmTrafficPolicy = (data) => http2.post(`${BASE}/traffic_policy/update`, fd(data), { headers: { 'Content-Type': 'multipart/form-data' } }) export const addUserVmFixedTraffic = (data) => http2.post(`${BASE}/traffic_policy/add_fixed`, fd(data), { headers: { 'Content-Type': 'multipart/form-data' } }) export const addUserVmTemporaryTraffic = (data) => http2.post(`${BASE}/traffic_policy/add_temporary`, fd(data), { headers: { 'Content-Type': 'multipart/form-data' } }) // ========== 到期提醒 ========== export const getExpireRemindList = (params) => http2.get(`${GOODS_BASE}/expire_remind/list`, { params }) export const sendExpireRemind = (data) => http2.post(`${GOODS_BASE}/expire_remind/send`, data, { headers: { 'Content-Type': 'application/json' } })