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 list(@RequestParam("page")int page, @RequestParam("page_size")int pageSize); @GetMapping("/api/v1/storage/pools") ApiResponse listStorage(@RequestParam("page")int page, @RequestParam("page_size")int pageSize); // 镜像虚拟机相关接口 @PostMapping("/api/v1/vm/batch-status") ApiResponse getImageStatusData(@RequestBody Map requestBody); @PostMapping("/api/v1/vm/create") ApiResponse createImage(@RequestBody ImageCreateReq createReq); @PostMapping("/api/v1/vm/update") ApiResponse updateImage(@RequestBody ImageUpdateReq updateReq); @PostMapping("/api/v1/vm/delete") ApiResponse deleteImage(@RequestBody ImageDeleteReq deleteReq); @PostMapping("/api/v1/vm/clone-to-desktop") ApiResponse cloneTemplate(@RequestBody ImageCloneToDesktopReq cloneReq); @PostMapping("/api/v1/vm/start") ApiResponse startImage(@RequestBody ImageOperationReq operationReq); @GetMapping("/api/v1/vm/{vm_name}") ApiResponse getVmInfo(@PathVariable("vm_name") String vmName); @PostMapping("/api/v1/vm/shutdown") ApiResponse shutdownImage(@RequestBody ImageOperationReq operationReq); @PostMapping("/api/v1/vm/destroy") ApiResponse destroyImage(@RequestBody ImageOperationReq operationReq); @PostMapping("/api/v1/vm/reboot") ApiResponse 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> getBridgeInterfaces(); }