vdi/nex-be/src/main/java/com/unisinsight/project/feign/ExternalApiClient.java

95 lines
3.6 KiB
Java

package com.unisinsight.project.feign;
import com.unisinsight.project.config.FeignConfig;
import com.unisinsight.project.entity.dto.*;
import com.unisinsight.project.entity.req.*;
import com.unisinsight.project.entity.res.ImageStatusRes;
import org.springframework.cloud.openfeign.FeignClient;
import org.springframework.web.bind.annotation.*;
import java.util.List;
import java.util.Map;
/**
* 第三方API客户端
*/
@FeignClient(
name = "external-api-client",
url = "${external.api.url:http://10.100.51.118:8000}",
configuration = FeignConfig.class
)
public interface ExternalApiClient {
@PostMapping("/api/v1/network/create")
ApiResponse createNetwork(@RequestBody Network network);
@DeleteMapping("/api/v1/network/{network_name}")
ApiResponse deleteNetwork(@PathVariable("network_name") String networkName);
@PutMapping("/api/v1/network/update")
ApiResponse updateNetwork(@RequestBody Network network);
@PostMapping("/api/v1/network/start")
ApiResponse startNetwork(@RequestBody NetworkManageReq networkManageReq);
@PostMapping("/api/v1/network/stop")
ApiResponse stopNetwork(@RequestBody NetworkManageReq networkManageReq);
@PostMapping("/api/v1/storage/pools")
ApiResponse createStorage(@RequestBody StoragePoolReq storagePoolReq);
@PostMapping("/api/v1/storage/pools/start")
ApiResponse startStorage(@RequestBody StoragePoolReq storagePoolReq);
@PostMapping("/api/v1/storage/pools/stop")
ApiResponse stopStorage(@RequestBody StoragePoolReq storagePoolReq);
@DeleteMapping("/api/v1/storage/pools/{pool_name}")
ApiResponse deleteStorage(@PathVariable("pool_name") String poolName);
@GetMapping("/api/v1/network/list")
ApiResponse<NetworkData> list(@RequestParam("page")int page, @RequestParam("page_size")int pageSize);
@GetMapping("/api/v1/storage/pools")
ApiResponse<StoragePoolData> listStorage(@RequestParam("page")int page, @RequestParam("page_size")int pageSize);
// 镜像虚拟机相关接口
@PostMapping("/api/v1/vm/batch-status")
ApiResponse<ImageStatusRes> getImageStatusData(@RequestBody Map<String, Object> requestBody);
@PostMapping("/api/v1/vm/create")
ApiResponse<ImageStatusRes> createImage(@RequestBody ImageCreateReq createReq);
@PostMapping("/api/v1/vm/update")
ApiResponse<ImageStatusRes> updateImage(@RequestBody ImageUpdateReq updateReq);
@PostMapping("/api/v1/vm/delete")
ApiResponse<ImageStatusRes> deleteImage(@RequestBody ImageDeleteReq deleteReq);
@PostMapping("/api/v1/vm/clone-to-desktop")
ApiResponse<ImageStatusRes> cloneTemplate(@RequestBody ImageCloneToDesktopReq cloneReq);
@PostMapping("/api/v1/vm/start")
ApiResponse<ImageStatusRes> startImage(@RequestBody ImageOperationReq operationReq);
@GetMapping("/api/v1/vm/{vm_name}")
ApiResponse<VmInfoDTO> getVmInfo(@PathVariable("vm_name") String vmName);
@PostMapping("/api/v1/vm/shutdown")
ApiResponse<ImageStatusRes> shutdownImage(@RequestBody ImageOperationReq operationReq);
@PostMapping("/api/v1/vm/destroy")
ApiResponse<ImageStatusRes> destroyImage(@RequestBody ImageOperationReq operationReq);
@PostMapping("/api/v1/vm/reboot")
ApiResponse<ImageStatusRes> rebootImage(@RequestBody ImageOperationReq operationReq);
@PostMapping("/api/v1/vm/remove-iso")
ApiResponse removeIso(@RequestBody ImageOperationReq operationReq);
@PostMapping("/api/v1/vm/attach-iso")
ApiResponse attachIso(@RequestBody ImageOperationIsoReq operationReq);
@GetMapping("/api/v1/network/bridge-interfaces")
ApiResponse<List<BridgeInterfaceDTO>> getBridgeInterfaces();
}